Сергей Рудюк 7 июля 2015

Начиная с версии 4.3, РНР поддерживает новый SAPI-тип (Server Application Programming Interface) под названием CLI, что означает Command Line Interface. Как следует из названия, главной задачей этого SAPI-типа является разработка оболочки/shell (или рабочего стола) приложений с помощью РНР. Имеются весьма небольшие отличия CLI SAPI от других SAPI, которые будут далее рассмотрены в этой главе.

CLI SAPI был выпущен в первый раз с PHP 4.2.0, но тогда это был эксперимент, и нужно было явно включать его командой --enable-cli при запуске ./configure. Начиная с PHP 4.3.0, CLI SAPI больше не является экспериментальным и всегда встроен и устанавливается как двоичный исполняемый файл php (называется php.exe в Windows).

Существенные отличия CLI SAPI от других SAPI:

  • В отличие от CGI SAPI, никакие шапки/headers не записываются в вывод.Хотя в CGI SAPI имеется способ подавления HTTP-шапок, эквивалентного переключателя для их включения в CLI SAPI нет.
  • Имеются определённые директивы php.ini, которые переопределены в CLI SAPI, поскольку они не имеют смысла в среде окружения оболочки:
Таблица 24-1. Переопределение php.ini-директив
Директива CLI SAPI- значение по умолчанию Комментарий
html_errors FALSE Бывает довольно сложно прочитать в оболочке сообщение об ошибке, наполненное всеми этими бессмысленными HTML-тэгами, поэтому по умолчанию значение этой директивы FALSE.
implicit_flush TRUE Желательно, чтобы любой вывод из print(), echo() и компании немедленно записывался в вывод, а не отправлялся в какой-нибудь буфер. Вы всё ещё можете пользоваться буферизацией вывода, если хотите поработать со стандартным выводом.
max_execution_time 0 (unlimited) Из-за бесконечно больших возможностей использования PHP в среде окружения оболочки, максимальное время выполнения не ограничено. В то время как приложения, написанные для web, выполняются в течение долей секунды, приложения оболочки пытаются занять для своего выполнения максимальное время.
register_argc_argv TRUE Глобальные переменные PHP $argc (количество аргументов, передаваемых приложению) и $argv (массив текущих аргументов) всегда регистрируются и заполняются соответствующими значениями при использовании CLI SAPI.
Примечание: Эти директивы не могут быть инициализированы другим значением из файла конфигурации php.ini или специального файла (если специфицирован). Это является некоторым ограничением, поскольку эти значения по умолчанию применяются после разбора всех файлов конфигурации. Однако их значение может быть изменено на этапе прогона программы (что не имеет смысла для всех других директив, например, для register_argc_argv).
  • Легче работать в среде оболочки, когда определены следующие константы:
    Таблица 24-2. Специфические CLI-константы
    Константа Описание
    STDIN Уже открытый поток в stdin. Она хранит открывшего её
    $stdin = fopen('php://stdin', 'r');
    					
    STDOUT Уже открытый поток в stdout. Она хранит открывшего её
    $stdout = fopen('php://stdout', 'w');
    					
    STDERR Уже открытый поток в stdout. Она хранит открывшего её
    $stderr = fopen('php://stderr', 'w');
    					
    Имея всё это, вы не должны, например, самостоятельно открывать поток для stderr, а просто используете константу вместо ресурса потока:
    php -r 'fwrite(STDERR, "stderr\n");'
    			
    Вам не нужно явно закрывать эти потоки, это делается РНР автоматически.
  • CLI SAPI не изменяет текущую директорию на директорию исполняемого скрипта!Пример, показывающий отличие CGI SAPI:
    <?php /* Простое тестирующее приложение */ echo getcwd(), "\n"; ?>
    			
    Когда используется CGI-версия, на выходе будет:
    $ pwd /tmp $ php-cgi -f another_directory/test.php /tmp/another_directory
    			
    Это ясно показывает, что PHP изменяет свою текущую директорию на директорию исполняемого скрипта.Использование CLI SAPI даёт:
    $ pwd /tmp $ php -f another_directory/test.php /tmp
    			
    Это даёт большую гибкость при написании утилит командной строки на PHP.
    Примечание: CGI SAPI поддерживает поведение CLI SAPI с помощью ключа -C при запуске из командной строки.

Список опций командной строки исполняемого файла PHP может быть получен в любое время путём запуска PHP с ключом -h:

Usage/Использование: php [options] [-f] <file> [args...] php [options] -r <code> [args...] php [options] [-- args...] -s Отображает исходный текст с разными цветами. -w Отображает исходный текст без комментариев и пробелов. -f <file> Разбирает <file>. -v Номер версии. -c <path>|<file> Ищет файл php.ini в данной директории. -a Запустить интерактивно. -d foo[=bar] Определить INI-вхождение foo со значением 'bar'. -e Генерировать расширенную информацию для отладчика/profiler'а. -z <file> Загрузить <file> Zend-расширения. -l Только проверить синтаксис (lint). -m Показать скомпилированные модули. -i PHP-информация. -r <code> Запустить PHP <code> без использования тэгов скрипта <?..?> -h Данный help. args... Аргументы, передаваемые скрипту. Используйте -- args когда первый аргумент начинается с - или скрипт читается из stdin
		

CLI SAPI имеет три разных способа получения PHP-кода, который нужно выполнить:

  1. Сказать PHP выполнить определённый файл.
    php my_script.php php -f my_script.php
    			
    Оба способа (с/без использования переключателя -f) выполняют данный файл my_script.php. Вы можете выбрать для выполнения любой файл, названия ваших файлов скриптов PHP не обязаны заканчиваться расширением .php, а могут иметь любое имя или расширение.
  2. Передать PHP код для выполнения непосредственно из командной строки.
    php -r 'print_r(get_defined_constants());'
    			
    Особого внимания требует замена переменных оболочки и использование кавычек.
    Примечание: Просмотрите пример внимательно, нет начальных и конечных тэгов! Переключателю -r они просто не нужны. Использование их в данном случае приведёт к ошибке разборщика.
  3. Предоставить PHP-код для выполнения через стандартный ввод (stdin).Это позволяет динамически создавать PHP-код и передавать его экзешнику, как показано в данном (надуманном) примере:
    $ some_application | some_filter | php | sort -u >final_output.txt
    			

Вы не можете комбинировать эти три способа при выполнении кода.

Как и в любом приложении оболочки, не только сам PHP, но и ваши скрипты PHP также принимают аргументы. Количество передаваемых в скрипт аргументов в РНР не ограничивается (оболочка имеет ограничение на количество передаваемых символов).
Аргументы, передаваемые в ваш скрипт, доступны через глобальный массив $argv. Нулевой индекс всегда содержит имя скрипта (которое является символом - в случае, когда PHP-код приходит со стандартного ввода или с использованием ключа командной строки -r).
Вторая регистрируемая глобальная переменная это $argc, которая содержит количество элементов в массиве $argv (а не количество аргументов, передаваемых в скрипт).

Если аргументы, которые вы хотите передать в скрипт, не начинаются с символа дефиса (-), ничего специально наблюдать не надо. Передача в скрипт аргумента, начинающегося с - , создаст проблемы, поскольку PHP думает, что должен сам их обработать. Чтобы предотвратить это, используйте в качестве сепаратора аргументов списка --. После того как аргумент будет разобран PHP, каждый последующий аргумент передаётся в ваш скрипт без изменений/не разобранным.

# Это не выполнит данный код, но продемонстрирует использование PHP $ php -r 'var_dump($argv);' -h Usage: php [options] [-f] <file> [args...] [...] # Аргумент '-h' будет передан в ваш скрипт, что предупредит показ PHP его использования $ php -r 'var_dump($argv);' -- -h array(2) { [0]=> string(1) "-" [1]=> string(2) "-h" }
		

Однако, вот другой способ использования PHP для скриптинга оболочки. Вы можете написать скрипт, первая строка которого начинается с #!/usr/bin/php, а затем идёт нормальный PHP-код, содержащийся между начальным и конечным тэгами PHP, и соответствующим образом устанавливаются атрибуты выполнения файла. Таким способом он может быть исполнен как нормальный скрипт оболочки или perl:

#!/usr/bin/php <?php var_dump($argv); ?>
		

Приняв, что файл называется test и находится в текущей директории, мы можем выполнить:

$ chmod 755 test $ ./test -h -- foo array(4) { [0]=> string(6) "./test" [1]=> string(2) "-h" [2]=> string(2) "--" [3]=> string(3) "foo" }
		

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

Таблица 24-3. Опции командной строки
Опция Описание
-s Отображать синтаксис в цвете.Эта опция использует внутренний механизм разбора файла, производит его расцвеченную HTML-версию и записывает её в стандартный вывод. Заметьте, что генерируется лишь блок <code> [...] </code> HTML-тэгов без HTML-header.
Примечание: Эта опция не работает вместе с опцией -r.
-w Отобразить исходный текст без комментариев и пробелов.
Примечание: Эта опция не работает вместе с опцией -r.
-f Разбирает и выполняет данный файл. Этот переключатель является необязательным и может быть опущен. Достаточно предоставить имя файла для выполнения.
-v Записывает PHP, PHP SAPI и Zend-версии в стандартный вывод, например:
$ php -v PHP 4.3.0-dev (cli), Copyright (c) 1997-2002 The PHP Group Zend Engine v1.2.1, Copyright (c) 1998-2002 Zend Technologies
				
-c С помощью этой опции можно либо специфицировать директорию для поиска php.ini, либо специальную директорию INI-файла (который не обязательно называется php.ini), например:
$ php -c /custom/directory/ my_script.php $ php -c /custom/directory/custom-file.ini my_script.php
				
-a Запускает PHP интерактивно.
-d Эта опция позволяет устанавливать специальное значение для каждой директивы конфигурации, которые допускаются в php.ini. Синтаксис таков:
-d configuration_directive[=value]
				

Примеры:

# Опущение части value установит данную директиву конфигурации в "1" $ php -d max_execution_time -r ' $foo = ini_get("max_execution_time"); var_dump($foo);' string(1) "1" # Передача пустой части value установит данную директиву конфигурации в "" php -d max_execution_time= -r ' $foo = ini_get("max_execution_time"); var_dump($foo);'string(0) "" # В директиву конфигурации будет установлено то, что # передано после символа '=' $ php -d max_execution_time=20 -r ' $foo = ini_get("max_execution_time"); var_dump($foo);' string(2) "20" $ php -d max_execution_time=doesntmakesense -r ' $foo = ini_get("max_execution_time"); var_dump($foo);' string(15) "doesntmakesense"
				
-e Генерирует расширенную информацию для debugger/profiler.
-z Загружает Zend-расширение. Если задано только имя файла, PHP пытается загрузить данное расширение из текущего пути по умолчанию к библиотеке в вашей системе (обычно специфицируется как /etc/ld.so.conf в Linux-системах). Передача filename с абсолютным путём не будет использовать системный путь поиска библиотеки. Относительное filename с информацией директории скажет PHP - попытаться загрузить расширение относительно текущей директории.
-l Эта опция предоставляет удобный способ выполнения проверки синтаксиса данного PHP-кода. В случае успеха - текст No syntax errors detected in <filename> записывается в стандартный вывод, а return-код оболочки будет 0. При неудаче - текст Errors parsing <filename> вместе с внутренним сообщением разборщика об ошибке записывается в стандартный вывод, а return-код оболочки будет 255.Эта опция не будет находить фатальные ошибки (вроде не определённых функций). Используйте -f, если хотите проверить также и наличие фатальных ошибок.
Примечание: Эта опция не работает вместе с -r.
-m Используя эту опцию, PHP печатает на вывод встроенные (и загруженные) модули PHP и Zend:
$ php -m [PHP Modules] xml tokenizer standard session posix pcre overload mysql mbstring ctype [Zend Modules]
				
-i Эта опция командной строки вызывает phpinfo() и печатает на вывод результаты. Если PHP не работает правильно, советуем выполнить php -i и посмотреть, выводятся ли сообщения об ошибке до или вместо таблиц информации. Имейте в виду, что вывод будет на HTML и, следовательно довольно сумбурным.
-r Эта опция позволяет выполнять PHP прямо в командной строке. Начальный и конечный тэги PHP (<?php и ?>) не нужны и вызывают ошибки разборщика.
Примечание: Нужно проявлять внимание при использовании этой формы PHP, чтобы не было противоречий с заменой переменных командной строки, выполняемой оболочкой.
Пример, выводящий ошибку разборщика:
$ php -r "$foo = get_defined_constants();" Command line code(1) : Parse error - parse error, unexpected '='
					
Проблема здесь в том, что sh/bash выполняет замену переменной даже при использовании двойных кавычек ". Поскольку переменная $foo вряд ли определена, она ни во что не разворачивается, что в результате даёт код, передаваемый в PHP для выполнения, фактически прочитанный:
$ php -r " = get_defined_constants();"
					
Корректным будет использовать одинарные кавычки '. Переменные в строках, заключённые в одинарные кавычки, не разворачиваются при работе sh/bash.
$ php -r '$foo = get_defined_constants(); var_dump($foo);' array(370) { ["E_ERROR"]=> int(1) ["E_WARNING"]=> int(2) ["E_PARSE"]=> int(4) ["E_NOTICE"]=> int(8) ["E_CORE_ERROR"]=> [...]
					
Если вы используете оболочку/shell иначе, чем sh/bash, у вас могут появиться новые вопросы. Отправляйте bug report или mail по адресу phpdoc@lists.php.net. Можно легко столкнуться с проблемами при попытке получить переменные оболочки в коде или использовании обратных слэшей (/) для замен/escaping.
Вы предупреждены...
-h С помощью данной опции вы можете получить информацию о действующем списке опций командной строки и небольшое описание их работы.

Исполняемый файл PHP может быть использован для запуска PHP-скриптов абсолютно независимо от web-сервера.
Если вы работаете под Unix, вы должны добавлять специальную первую строчку в ваши PHP-скрипты и делать их исполняемыми, чтобы система знала, какая программа должна выполнять эти скрипты.
Под Windows вы можете ассоциировать php.exe с опцией двойного щелчка по файлам .php либо сделать batch-файл (.bat) для запуска скрипта через PHP. Строка, добавленная в начало скрипта для работы под Unix, не помешает под Windows, поэтому вы можете писать таким образом межплатформенные программы. Ниже дан пример простой РНР-программы для выполнения из командной строки.

Пример 24-1. Скрипт, предназначенный для запуска из командной строки (script.php)
#!/usr/bin/php <?php if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) { ?> This is a command line PHP script with one option. Usage: <?php echo $argv[0]; ?> <option> <option> can be some word you would like to print out. With the --help, -help, -h, or -? options, you can get this help. <?php } else { echo $argv[1]; } ?>
				

Здесь мы используем специальную первую строку для указания на то, что этот файл должен быть запущен в PHP. Здесь мы работаем с CLI-версией, поэтому не выполняется вывод HTTP-шапок/header. Имеются две переменные, которые вы можете использовать при написании РНР-приложений для командной строки: $argc и $argv. Первая - это количество аргументов плюс 1 (имя запущенного скрипта). Вторая - это массив аргументов, начиная с имени скрипта с индексом ноль ($argv[0]).

Мы проверяем, имеется ли менее или более одного аргумента. Также, если аргумент был --help, -help, -h или -?, мы печатаем help-сообщение, выводя имя скрипта динамически. Если мы получили какой-либо другой аргумент, мы выводим его (echo).

Если вы хотите выполнить вышеприведённый скрипт под Unix, вам необходимо сделать его executable и просто вызвать как script.php echothis или script.php -h. Под Windows вы можете создать batch-файл для выполнения этой задачи:

Пример 24-2. Пакетный/Batch-файл для запуска PHP-скрипта в командной строке (script.bat)
@c:\php\php.exe script.php %1 %2 %3 %4
				

Приняв, что вы назвали программу script.php и что ваш php.exe находится в c:\php\php.exe, этот batch-файл запустит её с добавленными вами опциями: script.bat echothis или script.bat -h.


Источник: http://phpclub.ru/manrus/feat/commandline.html

Сергей Рудюк 7 июля 2015

Автор: Рудюк С . А.
http://corp2.net

E-Mail: rs@corp2.net

В 1С-Битрикс требуют установку параметров php.ini:

php_value mbstring.func_overload 2 php_value mbstring.internal_encoding UTF-8

Но, с некоторых пор данные параметры не изменяются в файле .htaccess. Изменение же в php.ini может отрицательно сказаться на работе других сайтов.

Решением может настройка конфига виртуального хоста:

php_admin_value mbstring.func_overload 2 php_admin_value mbstring.internal_encoding UTF-8

Автор: Рудюк С . А. http://corp2.net

Сергей Рудюк 7 июля 2015

MD5 далеко не всегда уместен. Например, он бесполезен, когда нам нужно зашифровать информацию о кредитной карте, а затем расшифровать ее.

Одно из простейших решений - это модуль Mcrypt, доступный в виде РНР-расширения. Библиотека Mcrypt позволяет выполнить высокоуровневое шифрование. Mcrypt предоставляет на выбор более 30 шифров, которыми вы можете шифровать ваши данные. Для использования Mcrypt нужно перекомпилировать РНР с поддержкой Mcrypt, как это было показано в #18.

Теперь поговорим об использовании Mcrypt. Следующий сценарий показывает, как использовать Mcrypt для шифрования и дешифрования данных:

<?php $data = "Stuff you want encrypted"; $key = "Secret passphrase used to encrypt your data"; $cipher = "MCRYPT_SERPENT_256"; $mode = "MCRYPT__M0DE_CBC"; function encrypt($data, $key, $cipher, $mode) { // Шифрование данных return (string) base64_encode ( mcrypt_encrypt ( $cipher, substr (md5 ($key) , 0,mcrypt_get_key_size ($cipher, $mode) ) , $data, $mode, substr (md5 ($key), 0, mcrypt_get_block_size ($cipher, $mode)) ) ) ; } function decrypt($data, $key, $cipher, $mode) { // Дешифрование данных return (string) mcrypt_decrypt ( $cipher, substr(md5($key),0,mcrypt_get_key_size($cipher, $mode)), base64_decode($data) , $mode, substr(md5($key),O,mcrypt_get_block_size($cipher, $mode)) ) ; } ?>

Функции mcrypt () нужно передать следующую информацию:
• Данные, которые нужно зашифровать.
• Парольную фразу, необходимую для шифрования и дешифрования данных; она называется ключом.
• Шифр, используемый для шифрования данных, определяющий алгоритм шифрования. В сценарии используется алгоритм MCRYPT_SERPENT_25 6, но вы можете использовать другие алгоритмы, в том числе MCRYPT_TWOFISH192, MCRYPT_RC2, MCRYPT_DES и MCRYPT_L0KI97.

Примечание.
Чтобы узнать, какие шифры поддерживаются вашим сервером, прочитайте п. #8. Если расширение Mcrypt установлено, то в выводе phpinfо() в секциях Supported Cipher и Supported Modes вы увидите список поддерживаемых шифров и режимов, соответственно.

• Режим (параметр mode) используется для шифрования данных. Вы можете использовать несколько режимов, в том числе Electronic Codebook и Cipher Feedback. Данный сценарий использует Cipher Block Chaining - MCRYPT_MODE_CBC.

• Вектор инициализации, также известен как IV, или seed - дополнительный бит бинарных данных, используемый алгоритмом шифрования. Вектор инициализации делает шифр более сложным для расшифровки.

• Длину строки, необходимой для ключа и IV, которая может варьироваться шифром и блоком. Используйте функции mcrypt_get_key__size () и mcrypt_get_block_size () для нахождения соответствующей длины. Затем значение ключа нуж-но урезать до значения, возвращенного функцией mcrypt_get_ key__size(); это делается функцией substr (). Если ключ короче, чем требуемое значение, - не волнуйтесь: Mcrypt заполнит недостающие символы нулями.

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

Злоумышленнику нужно знать функцию, данные и парольную фразу -и только в этом случае он, возможно, получит доступ к вашему серверу.

При использовании Mcrypt нужно учитывать одну проблему. Mcrypt возвращает данные в бинарном виде, что приводит к ошибкам при попытке их сохранить в базе данных MySQL. Поэтому мы используем функции base64encode () и base64decode () для преобразования данных в SQL-совместимый вид.

Совершенствуем сценарий

Вы можете поэкспериментировать с разными методами шифрования. Также можно сделать сценарий более удобным, объявив глобальные константы в подключаемом файле (см. #1), в которых будет храниться ключ и выбранный режим.


Источник: http://www.phpsql.ru/mcrypt-encrypt

Сергей Рудюк 28 июня 2015

Рабочее время офиса: с 9 по 18 в рабочие дни.
Общая стоимость аренды: 13600 грн.
Телефонные линии: 3 телефона.
Интернет: Wifi и через провода 100 Мбит.
Санузлы: 2 штуки.
Арендуется 2 комнаты общей пощадью 34 кв. м.
Общая зона для обедов и отдыха: +40 кв. м.
Расположение: 400 м. от м. Лукьяновская.
Сигнализация заведена на пульт Держохорони.
Вход прямо с ул. Белорусская.
Возможность расположения Вашего серверного оборудования у нас в серверной в специальных условиях хранения.
Возможность воспользоваться нашими услугами администрирования и программирования 1С, Web.
Офис подходит:
- для проведения семинаров и обучения;
- для магазина;
- для офиса или бухгалтерии любой компании.
Предоплата аренды: 3 месяца.
Оплата за офис - официальная на всю сумму.
Состояния офиса: свежий ремонт.
Отопление: не зависимое, регулируемое на заданную температуру.
Офис находится ниже уровня прорзания, поэтому, в нем держится постоянная температура 22-24 градуса.
Освещение поступает с улицы из приямков.
Наш телефон: +38 067 901-63-22
E-mail: rs@corp2.net

Схема помещения:

Схема помещения NEW

Расположение:
office_path
IMG_20140723_120629
IMG_20140723_120546

IMG_20140723_120449 IMG_20140825_153404 IMG_20140825_153620 IMG_20140825_153646 IMG_20140825_153656

Сергей Рудюк 21 июня 2015

Автор: Рудюк С.А.

http://corp2.net

Интересный проект был реализован для группы торговых предприятий. Конфигурация 1С8 УТП была запущена на в операционной системе Linux и полностью начала работать как на стороне пользователей, так и на стороне сервера.
В Linux были реализованы все потребности данных организаций:
- Построение системы на базе бесплатных программных средств с открытым исходным кодом.
Организация на беслатных технологиях позволяет Вам избавиться от оплаты за серверную операционную систему Windows, за каждое подключение к терминалу, за операционные системы Windows на рабочих местах, за программные пакеты Microsoft Office на рабочих местах, за базу данных MsSQL и за каждое подключение к ней, за VPN-сервера и сервера электронной почты, за веб-сервера. Фактически, 70-90% программных — это бесплатное программное обеспечение с открытым исходным кодом. Так же позволяет добиться высокой степени безопасности такой системы, защищенности от вирусов и высокого уровня масштабирования. Такое решение позволяет экономить около 70-90% средств, обычно затрачиваемых на лицензии. К такому решению не могут придраться правоохранительные органы, контролирующие лицензионность программных средств.
— Работа на сервере по RDP.
Для системы 1С8 рекомендуется работа пользователей через терминал — на сервере. Такие решения не только требуют отдельного сервера терминалов, но и затратны с точки зрения стоимости лицензий. Реализация RDP на базе открытых технологий позволяет Вам значительно экономить деньги на лицензиях, добиться гибкости, а так же удовлетворить потребности 1С8. По RDP с системой можно работать с любой операционной системы, поддерживающей протокол RDP: Windows, Linux, MacOS, IOS, Android и т.п.
- Поддержка звука.
Обычно, RDP-решения на базе открытых технологий работают без поддержки звука. Нам удалось решить данную проблему. В результате, звук может транслироваться через интернет и проигрываться прямо у вас на компьютере или планшете.
- Печать штрих-кодов и их генерация.
Linux не поддерживает COM, DCOM, ActiveX, OCX и т.п. Поэтому, стандартные решения, применяемые программистами 1С8 в Windows тут не применимы. Нам удалось решить данный вопрос. В результате, получилось высоко-скоростное решение с высоким уровнем безопасности.
- Групповая печать штрих-кодов и этикеток.
На предприятиях с большим количеством номенклатуры возникает необходимость печати большого количества штрих-кодов и этикеток. Для этого, мы предусмотрели возможность печати большого количества штрих-кодов за один раз.
- Google-карта и гео-локация.
Используя смартфоны, планшеты или GPS-трекеры, могут отслеживаться маршруты машин или сотрудников. Эти маршруты передаются на веб-сервер и сохраняются в базе данных. В 1С8 выводятся маршруты с наложением на Google-карту. Такая карта работает не только в Windows, но и в Linux.
— Импорт информации из Excel.
В Linux нет COM и ActiveX. Тут нельзя импортировать информацю привычным для 1С-ников способом. Импорт информации из Excel происходит без вызова Excel — на прямую из файла. Такой импорт работает ощутимо быстрей и значительно выше по безопасности.
— Резервное копирование информации.
Резервное копирование информации производится в полностью автоматизированном режиме с передачей информации через интернет по протоколу FTP или SSH в архивированном виде и с использованием крипто-устойчивых алгоритмов шифрации.
— Использование кросс-платформенной SQL-базы данных Postgresql.
В классической структуре построения одна из основных статей затрат — это использование базы данных MsSQL и оплаты за каждое подключение к ней. Введя замену вместо MsSQL — Postgresql Вы получаете соизмеримую производительность, ощутимо выше масштабируемость а так же 100% экономию на лицензиях, обычно затрачиваемых на базу данных и подключения.
- Обмен информацией между базами данных.
Обмен информацие между базами данных тоже значительно отличается от Windows-реализации. Но, такой обмен безопасней и иногда — быстрей.
— Виртуализация машины.
Построение решения на базе виртуальных машин позволяет Вам клонировать программное решение, делать его копии, а так же легко перемещать с одной физической машины на другую.
- Шифрование информации.
Использование шифрования информации на физическом уровне позволяет Вам защитить Ваши данные от хищения или не санкционированного доступа при прямом физическом контакте злоумышленников с сервером.

Вот как выглядит рабочий стол пользователя. Это подключение по RDP с поддержко звука. Работает на Windows, Linux, MacOS, IOS, Android. Серверная часть реализована на бесплатной операционной системе Linux Ubuntu, с использованием бесплатной базы данных Postgresql.

1s_1
Конфигуратор 1С8 запускается и в Linux. Программист системы 1С8 может реализовывать новый функционал в привычной для себя среде программирования.

1s_2

Гео-локация производится с передачей координат от планшета или мобильного телефона. В 1С выводится гугл-карта трафика перемещения машин.

1s_3

1s_4

Штрих-кодирование используется в документах и для товарных позиций. Штрих-коды отлично печатаются и сканируются. Поддерживаются все основные стандарты штрих-кодирования: EAN-13, EAN-8, UPC-A, UPC-E, ISBN, CODE 39, CODE 128C, CODE 128B, CODE 128, 128 RAW, INTERLEAVED 2 of 5, CODABAR, MSI, PLESSEY, CODE93. При необходимости, можно использовать QR-коды.

1s_5 1s_6 1s_7 1s_8

1s_9 1s_10 1s_11 1s_12

Импорт из Excel используется без вызова COM-объектов Excel. Такой импорт работает ощутимо быстрее, чем в Windows и не требует установки платного программного обеспечения Microsoft Office.

1s_13 1s_14 1s_15 1s_16 1s_17

Резервное копирование делается на уровне операционной системы без участия человека с передачей информации через интернет по протоколц FTP или SSH в архивном виде с использованием шифрования.

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

Если Вам необходимо реализовать подобное решение, звоните и пишите.
Телефон: +38 067 901-63-22
E-mail: rs@corp2.net

Сергей Рудюк 16 июня 2015

Обучение Linux Ubuntu
- Что такое Pipe. Понятие вывода информации в командах Linux.
- Командная строка.

Навигация
- ls – вывод списка файлов и каталогов.
- dir – отображает файлы в текущем каталоге в алфавитном порядке и с учётом регистра.
- cd – перемещение по каталогам.
- echo Текст – вывод информации на экран.
- Как задать каталог, если он содержит пробелы ?
- Значки > и >> - адресация вывода.
- Значек | - соединение команд.
- Знак \ - для ввода много-строчных команд.
- which – показывает полный путь к исполняемому файлу команды.
- cat <название файла> - вывод содержимого файла на экран.
- less – реализация прокрутки вывода.
- Совмещение команд, используя понимание pipe в linux. Например:
cat <название файла> | less
- mc – аналог nc.
копирование, удаление, редактирование, создание каталога, установка прав.
- редактирование файлов в mc.
- Права доступа к файлам и каталогам. Разделение прав доступа в Linux.
- Рекурсивная групповая установка прав.
chown –R <имя пользователя> <каталог> - рекурсивная установка прав владельца на каталог или файл.
chgrp –R <имя группы> <каталог> - рекурсивная установка прав группы на каталог или файл.
chmod –R <атрибут> <каталог> - установка атрибутов на каталоги и файлы.
- Ссылки на файлы. В чем отличие от ярлыков Windows.
- Команда ln – для содания ссылок.
- pwd – отображает полный путь к текущему каталогу.
- history – показывает пронумерованный список команд, которые Вы выполняли в этом и предыдущем сеансе. Если в списке историии их довольно много, то увидите последние.
- clear – очищает экран терминала (если это возможно).

Помощь
- Параметр --help – вывод помощи по команде.
- man <команда> - документация по команде.
- whatis – поиск по базе данных страниц руководства и отображение краткого описания.
- whereiz – находит файлы, страницы справочного руководства для указанной команды.

Установка прорамм
- apt-get install <команда> - установка программ.
- apt-cache search <команда> - поиск пакета программ.

Утилитки
- dc – калькулятор.
- cal – вывод календаря в тектовом виде.

Файловые операции
- cp <откуда> <куда> – копирование файлов.
- mkdir – создание указанного каталога.
- rename – переименовывает файлы.Очень удобно, когда много файлов.
- mv – переименовывает или перемещает файлы или каталоги.
- rm – удаление указанного файла.Можно и много удалить.
- rmdir – удаление указанного пустого каталога.
- safedelete – удалиние указанного файла в каталог safedelete,где он хранится некоторое время перед необратимым удалением.
- undelete – восстанавливает файлы удалённые командой safedelete.
- shred – выполняет безопасное удаление файла предварительно перезаписав его содержимое на другой диск.
- resize – изменяет размер окна виртуального терминала в графическом окружении.
- file – показывает тип содержимого указанного файла(текст, выполняемый, данные).
- find – поиск файлов в текущем каталоге.Если указать путь, можно искать везде.
- dd – копирование файла с одновременным выполнением различных, дополнительных преобразований (мощная, но из-за этого опасная команда).
- du – показывает количество блоков диска, занятых каждым из файлов каталога.
- mcat – копирует необработанные данные на дискету.
- mcopy – использует отформатированную дискету MSDOS для копирования файлов в Линукс и из Линукс без предварительного подключения дискеты к файловой системе.
- mdel – удаляет файл на отформатированной дискете MSDOS.
- mdir – отображает содержимое каталога на дискете MSDOS.
- mdu – показывает дисковое пространство занятое каталогом MSDOS.
- stat – отображение всей доступной информации об указанном файле.
- touch – изменяет время последнего доступа или изменения файла на текущее время.

Монтирование дисков
- mount – монтирование файловой системы.
- umount – отмонтирование файловой системы (в обоих командах необходимо указать, что именно).
- autorun – автоматически распознаёт все доступные приводы CDROM в системе, монтирует их при вставке диска и может запускать отдельные приложения (например проигрыватель).Для использования, необходимо добавить параметры в файл привода.
- eject – извлекает носитель из указанного устройства.Если устройство смонтировано то команда производит размонтирование перед извлечением носителя.

Текстовые файлы
- joe – простой в использовании редактор работающий в текстовом режиме.
- pico – простой и удобный в использовании текстовый редактор.Удобен для редактирования конфигурационных и простых файлов.
- emacs – запуск текстового редактора Emacs.
- vi – запуск классического текстового редактора VI для UNIX систем.
- tail –f <название файла> - вывести последние несколько строк и показывать поступление новых строк. Совмещение данной команды с grep.
- head – утилита выводит первые десять строк файла.Можно и несколько файлов.
- nl – команда нумерует строки в указанном файле.
- paste – обьединяет соответствующие строки файлов в колонки.При желании можно обьединить несколько файлов.
- pr -подготавливает текст к печати, осуществляя форматирование с разбиением на страницы.Можно подготовить несколько файлов.
- sort – команда позволяет отсортировать строки файла в алфавитном порядке.
- split – разбивает файл на части.
- tmpwatch – удаление всех файлов в указанном каталоге, если к ним не осуществлялся доступ в течении последних n часов.Очищает временные каталоги.
- fmt – данная утилита производит форматирование каждой строки в указанном файле таким образом, что все строки имеют одинаковую ширину.
- cmp – производит быстрое сравнение двух указанных файлов.Если они идентичны, то никакие сообщения не выводятся.
- column – форматирует входной текст из указанного файла в список из пяти колонок.
- diff – сравнивает два указанных текстовых файла.Каждое отличие выводится в контексте. Позволяет сравнивать каталоги.
- diff3 – сравнивает три указанных файла и выводит результаты.
- csplit – разбивает файл на несколько частей.Надо задать метод разбивки (строки и т.д.).
- wc – показывает число строк, слов и символов в файле.

Архивация и кодирование
- Архиваторы 7z, rar, unzip.
- zip – архивирует и сжимает файлы.
- zipnote – позволяет вывести и отредактировать комментарии к файлам из архива ZIP.
- zforce – добавляет расширение .gz ко всем файлам в рабочем каталоге, или к указанному файлу, которые были сжаты, но не имеют расширения.Т.е. предотвращает повторное сжатие.
- uuencode – кодирует двоичный файл для передачи по ASC11сетям.
- uudecode – декодирует выше названный файл.
- restore – восстанавливает файлы заархивированные с помощью команды dump.
- bunzip2 – распаковывает указанный файл на 30%быстрей чем gzip.
- bzip2 – сжимает указанный файл по ускоренному алгоритму.
- bzip2recover – делает попытку восстановить данные из повреждённого файла сжатого bzip2.
- compress – сжимает указанный файл по другому алгоритму.
- uncompress – распаковывает файл сжатый предыдущей командой.

Графические файлы и архивы
- enscript – преобразует указанный текстовый файл в формат Post Script.Вывод может быть направлен на печать или записан в файл.
- pdf2ps – преобразует файл формата PDF в Post Script.Результат записывает на диск.
- pdftotext – преобразует файл из формата PDF в текст и записывает результат на диск.
- zcat;zmore – выводит содержимое файла сжатого gzip на экран без распаковки.
- zcmp – сравнивает сжатые gzip два файла без распаковки.
- zdiff – сравнивает сжатые gzip два файла без распаковки.
- zegrep;zfgrep;zgrep – осуществляют поиск указанной строки, выражения в файле сжатом gzip, без распаковки.
- convert – преобразует указанный входной графический файл, в выходной.Распознаёт множество форматов. Скачать так же как и предидущую.
- identify – определяет формат и характеристики графического файла и проверяет целостность и наличие ошибок.
- mogrify – преобразует графический файл и перезаписывает исходный.
- montage преобразование нескольких файлов в обьединённое изображение.
- combine – обьединяет два и более графических файла в один.Огромное количество спецэффектов.Является частью пакета Image Magick и можно взять

Звук
- mpg123 – воспроизводит на основном устройстве воспроизведения аудио файл в формате MP3. Вписывается имя файла или его адрес в Интернет.Чтобы остановить воспроизведение Ctrl+c.Что бы остановить и выйти из программы Ctrl+c нажать дважды.
- play – воспроизводит звуковой файл с указанным именем.Автоматически распознаёт тип файла. Позволяет добавлять различные звуковые эффекты к воспроизводимым файлам.
- playmidi – воспроизводит зуковые файлы в формате MIDI.
- rec – записывает входной сигнал с микрофона или других входов в звуковой файл. Тип файла следует указать с помощью параметра (type).Есть возможность добавить звуковые эффекты.
- sox – преобразует сэмплы из формата входного сигнала, на выходной с добавлением эффектов.

Информация о системе
- df – показывает количество используемого и свободного дискового пространства для всех подключенных разделов файловой системы.
df –m – вывод информации в мегабайтах.
- uname –a – получение информации о системе.
- arch – отображает данные об архитектуре центрального процессора.
- lsb_release –a – получение информации о версии операционной системы.
- Определение конфигурации:
procinfo
lshw
linuxinfo
hardinfo

Дата и время
- date – отображает текущие дату и время, по системным часам ядра.
- Установка даты.

Управление пользователями
- Что такое sudo.
- adduser <название пользователя> - Создание пользователя.
- passwd <имя пользовтеля> - задание пароля пользователю.
- userdel – удаляет пользователя с указанным именем.
- usermod – изменяет параметры пользователя с указанным именем.
- mkpasswd – создаёт высококачественный пароль, состоящий по умолчанию из девяти символов и содержащий по крайней мере буквы в разном регистре и цифры.
- pwgen – создаёт высококачественный пароль,который хорошо запоминается.Длинна пароля указывается числом.
- addgroup <имя пользователя> <группа> - добавление пользователя в группу.
- groupadd – создание группы пользователей с указанным именем.
- groupdel – удаляет группу с указанным именем.
- groupmod – изменяет параметры группы с указанным именем.
- shutdown –r now или reboot– перезагрузка сервера.
- shutdown –h now или halt(poweroff) – выключение сервера.
- su <имя пользователя> - войти под пользователем.
- who – показать кто авторизирован.
- last – показать последних авторизированных.
- users – отображает краткий список пользователей работающих в системе в данный момент.
- w – подробная информация о всех пользователях, работающих в данный момент и также простой, вход в систему и др.Если нужен один пользователь, то указать имя в параметре.
- lastlog – проверяет историю входа в систему зарегистрированных
- id – отображает действующие значения идентификаторов пользователя и группы для текущего пользователя.
- chage – применяется для изменения срока действия учетной записи.Для администрирования.
- chfn – изменяет сведения о пользователе в файле /etc/passwd из которого берёт информацию команда finger .

quota – показывает текущую статистику использования диска и текущие ограничения для пользователя или группы с указанным именем.
quotacheck – исследует файловую систему на предмет использования дискового пространства.
quotaon – включает и отключает ограничения на использование дискового пространства.

Процессы
- uptime – показывает текущее время, продолжительность сеанса , количество пользователей и загруженность процессора.
- times – показывает полное время выполнения процессов для всей системы и данного пользователя.
- free – отображает информацию об оперативной памяти, подкачки, кэше,свободная памать, общая и т.д.
- vmstat – выдаёт сведения о процессах, памяти и загруженности центрального процессора
- top – стандартная команда вывода занятости процессора.
- Понятие загрузки процессора и регрессии.
- htop – усовершенствованная команда занятости процессора.
- jobs – выводит список всех выполняемых и приостановленных задач.
- ps aux – вывод процессов на экран.
- grep – фильтрация вывода.
ps aux | grep mysql
cat <название файла> | grep <строка>
- kill <название процесса> - убить процесс.
- kill -9 <название процесса> - убить процесс не взирая ни на что.
- kill 0 к чему приведет ?
- killall – позволят управлять процессами используя их имена или имена файлов, а не идентификаторы как в kill. Завершаются все указанные процессы.
- logout, Ctrl+D – выход из авторизации.
- whoami – показывает текущий идентификатор пользователя, работающего в данном терминале.
- dmesg – выводит на экран сообщения ядра, включая отображаемые при запуске и потом.
- sleep – приостанавливает начало выполнения процесса на заданное количество секунд.
- usleep – приостанавливает на микросекунды.
- sync – очищает буферы файловой системы.

Сеть и пересылка команд
- ifconfig – вывод информа о сетевых интерфейсах.
-if config –a – вывод подробной информации о сетевых интерфейсах.
- Что такое порт. Как называются сетевые интерфейсы в Linux. Как обмениваются компьютеры друг с другом по сети.
- ping <адрес> - пингование компьютера или сервера.
- telnet <адрес> <порт> - подключение по порту. Проверка работы сервиса.
- netstat – вывод информации о сетевой подсистеме.Очень много настроек и параметров.
- write – отправляет сообщение другому пользователю, находящемуся в системе, путём копирования строк с терминала отправителя на терминал получателя.
- mesg – контролирует доступ к Вашему терминалу, что бы коллеги не могли засыпать Вас сообщениями с помощью команды write
- trafshow <имя интерфейса> - показать трафик.
- whois <название домена> - информация о домене.
- wall – отправляет сообщение на терминал каждого пользователя находящегося в системе в данный момент.
- mail – утилита редактирования и просмотра электронной почты.Отправка и получение писем.
- fetchmail – утилита получения почты.Роботает в фоновом режиме.Скачивает почту с указанного сервера.
- ssh – подключение по ssh.
- ftp – устанавливает соединение с указанным узлом и позволяет скачивать или закачивать файлы.

Удаленное подключение к серверу
- hostname – команда отображает идентификатор данного узла сети ( его имя). root может изменить имя узла на новое.
Файл хостов. Файл названия сервера. Откуда берется информация о связи навания сервера с именем.
- wget <URL> - закачка файлов и интернет-страниц.
- curl – пересылка файлов по ftp.
- команда ssh.
- Подключение из mc по ssh или ftp.
- Утилита putty – текстовый терминал для подключения к серверу по ssh.
Настройка putty.
- Утилита FileZiilla – бесплатная программа для копирования файлов по sftp и ftp.
- Настройка FileZilla.

Управление задачами
- crontab – обеспечивает возможность выполнения определённых задач по расписанию.
- at – ставит задания в очередь для последующего выполнения в указанное время.
- atq – показывает список заданий которые поставлены в очередь на выполнение.

Другое
- script – позволяет записывать весь вывод с терминала в файл.Что бы остановить запись нажмите Ctrl+d.Если имя файла не указано то записывается в typescript.
- lpr – отправляет документ на печать демону печати.
- runlevel – отображает текущий и предыдущий уровни выполнения.

Примеры данных команд в действии:
1. Добавление роутинга для VPN модема. Модем рассположен по адресу 192.168.10.200, а сеть доступна через сетевую карту eth0.
Код:
route add -host 10.0.21.1 gw 192.168.10.200 dev eth0
2. Роутинг на сеть 192.168.76-77.0-255 через роутер 192.168.10.101
Код:
route add -net 192.168.76.0 gw 192.168.10.101 netmask 255.255.254.0 dev eth0
3. Получение списка расшаренных папок на удаленном компьютере.
Код:
smbclient -N -L 192.168.8.129
4.Монтирование удаленной папки для работы с ней, как с обычным каталогом
Код:
mount -t smbfs -o iocharset=UTF8,codepage=cp866,guest,ro //192.168.8.129/Films /home/mebius/smb
5. Информация о таблице разбиения диска /dev/hda
Код:
fdisk -l /dev/hda
6. Создание пустого файла нужного размера (нужно для многих эмуляторов или работы с файлом, как с отдельной файловой системой)
Код:
dd of=hd.img bs=1024 seek=1000000 count=0
7. Монтирование в папку ISO образа. Любая программа после этого будет видеть эту папку, как содержимое привода. Можете смонтировать образ DVD фильма и смотреть, не мучая оптический привод.
Код:
mount -o loop /home/mebius/video/dvd.iso /home/mebius/cd
8. Автоматическая скачка файла по SMB/Windows Network сети. Будет работать с докачкой и при обрыве не придется начинать сначала.
Код:
smbget -r -n -u Guest ‘smb://192.168.0.125/films (f)/films/Чужие из бездны (Aliens of the deep).avi’ -o aliens_of_the_deep.avi
9. Отключение компьютера через 90 минут
Код:
shutdown -h +90
10. Создание ISO образа диска. Его можно потом записать снова на диск или пользоваться образом как полноценным приводом.
Код:
readcd dev=/dev/hdc f=dvd.iso
11. Создание ISO образа для его последующей записи.
Код:
mkisofs -allow-lowercase -iso-level 3 -l -o /home/mebius/video/dvd.iso /mnt/windows_d/video/dvd1/
12. Запись образа на болванку
Код:
growisofs -dvd-compat -Z /dev/hdd=/home/mebius/video/dvd.iso

13. Сканирование диапазона IP-адресов по порту 139 (Netbios aka шаринг папок в сети Microsoft). Покажет все доступные компьютеры не взирая на всякий маразм типа рабочих групп.
Код:
nmap -p 139 192.168.10-11.1-255
Ещё дополню список команд:
ls -al – форматированный список со скрытыми
каталогами и файлами
cd dir – сменить директорию на dir
mkdir dir – создать каталог dir
rm file – удалить file
rm -r dir – удалить каталог dir
rm -f file – удалить форсированно file
rm -rf dir – удалить форсированно каталог dir *
cp file1 file2 – скопировать file1 в file2
cp -r dir1 dir2 – скопировать dir1 в dir2; создаст
каталог dir2, если он не существует
mv file1 file2 – переименовать или переместить file1
в file2. если file2 существующий каталог – переместить
file1 в каталог file2
ln -s file link – создать символическую ссылку link к
файлу file
touch file – создать file
cat > file – направить стандартный ввод в file
more file – вывести содержимое file
head file – вывести первые 10 строк file
tail file – вывести последние 10 строк file
tail -f file – вывести содержимое file по мере роста,
начинает с последних 10 строк
kill pid – убить процесс с id pid
killall proc – убить все процессы с именем proc *
ps – вывести ваши текущие активные процессы
top – показать все запущенные процессы
bg – список остановленных и фоновых задач;
продолжить выполнение остановленной задачи в фоне
fg – выносит на передний план последние задачи
fg n – вынести задачу n на передний план
chmod octal file – сменить права file на octal,раздельно для пользователя, группы и для всех
добавлением:
● 4 – чтение (r)
● 2 – запись (w)
● 1 – исполнение (x)
Примеры:
chmod 777 – чтение, запись, исполнение для всех
chmod 755 – rwx для владельца, rx для группы и остальных.
ssh user@host – подключится к host как user
ssh -p port user@host – подключится к host на порт
port как user
ssh-copy-id user@host – добавить ваш ключ на host
для user чтобы включить логин без пароля и по ключам
grep pattern files – искать pattern в files
grep -r pattern dir – искать рекурсивно pattern в dir
command | grep pattern – искать pattern в выводе command
locate file – найти все файлы с именем file
whoami – имя, под которым вы залогинены
finger user – показать информацию о user
cat /proc/cpuinfo – информация ЦПУ
cat /proc/meminfo – информация о памяти
man command – показать мануал для command
df – показать инф. о использовании дисков
du – вывести “вес” текущего каталога
free – использование памяти и swap
whereis app – возможное расположение программы
app
which app – какая app будет запущена по умолчанию
Архивация:
tar cf file.tar files – создать tar-архив с именем
file.tar содержащий files
tar xf file.tar – распаковать file.tar
tar czf file.tar.gz files – создать архив tar с

сжатием Gzip
tar xzf file.tar.gz – распаковать tar с Gzip
tar cjf file.tar.bz2 – создать архив tar с сжатием
Bzip2
tar xjf file.tar.bz2 – распаковать tar с Bzip2
gzip file – сжать file и переименовать в file.gz
gzip -d file.gz – разжать file.gz в file
Сеть
ping host – пропинговать host и вывести результат
whois domain – получить информацию whois для

domain
dig domain – получить DNS информацию domain
dig -x host – реверсивно искать host
wget file – скачать file
wget -c file – продолжить остановленную закачку

Установка пакетов
Установка из исходников:
./configure
make
make install

dpkg -i pkg.deb – установить пакет (Debian)

rpm -Uvh pkg.rpm – установить пакет (RPM)

Клавиатурные сочетания
Ctrl+C – завершить текущую команду
Ctrl+Z – остановить текущую команду, продолжть с fg
на переднем плане или bg в фоне
Ctrl+D – разлогиниться, тоже самое, что и exit
Ctrl+W – удалить одно слово в текущей строке
Ctrl+U – удалить строку

!! – повторить последнюю команду
exit – разлогиниться
scp – копирование файлов по SSH на другой сервер. Пример: scp /local/file user@host.com:/path/to/save/file.
vi – тестовый редактор. Есть множество различных текстовых редакторов, таких как emacs, nano и проч. Однако vi есть практически на любом сервере и потому он будет не плохим выбором. Для редактирования файла введите команду: vi file. Для перехода в режим редактирования нажмите i. Для сохранения изменений и выхода нажмите ESC :wq. Для выхода без сохранения – ESC :q!. Есть ещё миллионы других команд, однако для минимально редактирования вам будет достаточно и этого.

Сергей Рудюк 16 июня 2015

В данной статье мы рассмотрим установку сервера 1С в среде Ubuntu Server. Решения на альтернативной платформе пользуются заслуженной популярностью в среде пользователей и администраторов, так как позволяют экономить ощутимые суммы за счет отказа от покупки Windows Server, но отличаются повышенной сложностью установки и настройки. Однако если вы будете следовать нашим рекомендациям, то проблем не возникнет.

Как всегда, начнем с краткого теоретического отступления. Сервер 1С Предприятия поставляется в двух вариантах: 32 и 64 бита, которые отличаются прежде всего ценой (42 и 72 тыс. руб.). Ключ от 64-битного сервера позволяет запускать и 32-битную версию, но не наоборот.

В случае с платформой Linux мы рекомендуем чтобы битность сервера 1С и Ubuntu совпадали, хотя вы можете установить 32-битную версию сервера на 64-битный Ubuntu воспользовавшись пакетом ia32-libs, но это выходит за рамки данной статьи. В нашем случае мы будем устанавливать 64-битный сервер на Ubuntu Server 10.04.4 64-бита, однако все сказанное будет справедливо и для 32-битной платформы, существенные отличия мы будем оговаривать отдельно.

Почему 10.04.4, когда на подходе 12.04? Во-первых 10.04 (как и 12.04) - LTS релиз, предполагающий стабильные пакеты и расширенную поддержку, во-вторых 10.04 отлично изучен, все известные баги устранены, все особенности изучены и задокументированы.

В любом случае у нас в запасе остается год для перехода на новый 12.04 LTS, что позволит хорошо изучить новую версию ОС, устранить известные ошибки, создать пользовательскую документацию. Сегодня ничего этого еще нет.

Также мы не рекомендуем использовать промежуточные релизы: 10.10, 11.04, 11.10. Почему? В данных релизах используются последние версии пакетов, производится обкатка новых технологий, они имеют короткий срок поддержки. Конечно никто не может вам запретить их использовать, но в этом случае будьте готовы взять на себя риски возможного нестандартного поведения или отказа системы.

Итак, у нас имеется свежеустановленная и обновленная Ubuntu Server 10.04.4, с установленными mc и ssh, это позволит нам проводить все работы по настройке сервера удаленно, со своего рабочего места. В первую очередь установим необходимые для сервера 1С зависимости. Мы будем приводить отдельную команду для установки каждого пакета, хотя вы можете установить их все за один раз, просто перечислив необходимые пакеты через пробел. Все команды выполняются от имени суперпользователя или через sudo:

apt-get install imagemagick apt-get install libgsf-1-114 apt-get install ttf-mscorefonts-installer apt-get install t1utils apt-get install libt1-5 apt-get install unixodbc

Теперь установим пакет ttf2pt1, которого нет в репозитории, его можно взять с нашего сервера. Создадим в домашней директории отдельную папку:

mkdir ~/1c-depends

Перейдем в нее:

cd ~/1c-depends

Скачаем пакет:

wget "http://interface31.ru/tech_it/files/1c/ttf2pt1_3.4.4-1.3_amd64.deb"

Для 32-битной системы:

wget "http://interface31.ru/tech_it/files/1c/ttf2pt1_3.4.4-1.3_i386.deb"

Установим его:

dpkg -i *.deb

Создадим символическую ссылку для библиотеки libglib:

ln -s /lib64/libglib-2.0.so.0.2400.1 /usr/lib64/libglib-2.0.so

Для 32-битной системы:

ln -s /lib32/libglib-2.0.so.0.2400.1 /usr/lib32/libglib-2.0.so

Внимание! В вашем случае имя библиотеки может отличаться от libglib-2.0.so.0.2400.1, поэтому проверьте фактическое наличие данной библиотеки и при необходимости откорректируйте команды.

Теперь можно приступать к установке непосредственно сервера 1С. Дистрибутив можно получить на дисках ИТС, с сайта поддержки 1С или у обслуживающих вас партнеров. Будем считать что дистрибутив находится у вас на диске. Смонтируем оптический диск:

mount /dev/cdrom /media

Создадим каталог для пакетов сервера 1С:

mkdir ~/1c

При помощи mc (или иным образом) найдем на диске и скопируем необходимые пакеты в созданную директорию, затем перейдем в нее и установим пакеты:

cd ~/1c dpkg -i *.deb

Изменим владельца для папки 1С:

chown -R usr1cv82:grp1cv82 /opt/1C

Настроим автозапуск:

update-rc.d srv1cv82 defaults

Установим необходимые для работы 1С локали:

locale-gen en_US locale-gen ru_RU dpkg-reconfigure locales

Сконфигурируем сервер:

/opt/1C/v8.2/x86_64/utils/config_server

Перезагрузимся:

reboot

Теперь на всех клиентских машинах, которые будут работать с нашим сервером 1С добавим в Windows\System32\drivers\etc\hosts следующую запись:

10.0.0.128 1c-server

где 1c-server имя нашего сервера, а 10.0.0.128 его IP-адрес.

Если в вашей сети работает DNS-сервер, то можно добавить на нем запись типа A:

1c-server.domain.local. IN A 10.0.0.128

где 1c-server имя сервера, а 10.0.0.128 его IP-адрес, domain.local имя локального домена.

Теперь можно установить на клиентскую машину компоненту Администрирование сервера 1С:Предприятия и попробовать подключиться к нашему серверу:

indexЕсли все пройдет удачно, сервер 1С можно признать настроенным и готовым к использованию. Остается только установить драйвер ключа HASP, однако это тема для отдельной статьи и мы рассмотрим ее в ближайшее время.

Источник: http://interface31.ru/tech_it/2012/04/server-1s-predpriyatiya-chast-3-ustanovka-na-platforme-linux-ubuntu.html

Сергей Рудюк 16 июня 2015

1

Rus-To-Lat это плагин транслитерации русских ссылок. Некоторые веб-мастера предпочитают использовать русские урлы. Мол, так выглядит красивее, да и поисковики давно уже научились понимать такие ссылки и красиво их подчеркивают в результатах поиска. Но недостатки русских ссылок перевешивают их достоинства. Попробуйте, например, скопировать русский урл и вставить его в любой текстовой редактор. Ссылка вида http://www.testwp.ru/привет-мир.html превратится в набор символов http://www.testwp.ru/%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82-%D0%BC%D0%B8%D1%80.html. Делиться с кем-либо такими ссылками не очень то удобно.

Такая ситуация возникает из-за того, что по спецификации ссылки не могут содержать русские символы. Они должны быть закодированы последовательностью символов – каждый русский символ заменяется на 6 латинских символов. Например, русская буква "а" превращается в "%D0%B0".

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

Отсутствие плагинов транслитерации в блоге обязательно вызовет проблемы и со многими плагинами, работающими с файлами. Они тоже зачастую не учитывают возможность того, что названия файлов в блоге могут содержать русские символы. Например, популярный плагин обеспечения безопасности WordPress File Monitor в принципе отказывается понимать русские символы. И поверьте на слово – таких плагинов очень много.

На мой взгляд, использование плагинов транслитерации обязательно для любого веб-мастера, но это лишь мое мнение. Все-таки, многие блоггеры прекрасно обходятся и без них. Они считают, что неудобство копирования русских ссылок не так уж важно, а плагины, не понимающие русские символы, вполне можно заменить на какой-нибудь их более современный аналог.

Скачиваем плагин по ссылке в конце страницы и устанавливаем его:

1 Распаковываем архив.

2 Копируем папку rustolat в /wp-content/plugins/.

3 Заходим в админку блога на вкладку "Плагины" и активируем плагин.

У плагина есть лишь одна настройка, которую вы можете найти в меню "Настройки\RusToLat". Это настройка стандарта транслитерации:


2

Советую использовать стандарт ISO 9-95, так как он более соответствует сложившимся в рунете правилам транслитерации. Однако, при всем уважении к стандартам ISO и ГОСТ, мне не нравится, как они переводят на латиницу русскую букву "Х". ГОСТ заменяет ее на "KH", а ISO на латинскую "X". Не знаю, что общего в произношении русской буквы "Х" и латинской "X", поэтому я обычно заменяю "X" на "H" и "x" на "h", мне кажется это более правильным.

Чтобы это сделать откройте файл rus-to-lat.php в папке плагина и отредактируйте его следующим образом:

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
		
$iso = array( "Є"=>"YE","І"=>"I","Ѓ"=>"G","і"=>"i","№"=>"#","є"=>"ye","ѓ"=>"g", "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D", "Е"=>"E","Ё"=>"YO","Ж"=>"ZH", "З"=>"Z","И"=>"I","Й"=>"J","К"=>"K","Л"=>"L", "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R", "С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"H", "Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'", "Ы"=>"Y","Ь"=>"","Э"=>"E","Ю"=>"YU","Я"=>"YA", "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d", "е"=>"e","ё"=>"yo","ж"=>"zh", "з"=>"z","и"=>"i","й"=>"j","к"=>"k","л"=>"l", "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r", "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h", "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"", "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya", "—"=>"-","«"=>"","»"=>"","…"=>"" );
		

Теперь, когда вы будете создавать записи в своем блоге или заливать файлы с русскими названиями, плагин автоматически будет их транслитерировать. Но плагин не станет изменять уже существующие русские ярлыки в вашем блоге. Вы должны их изменить вручную. Для этого достаточно лишь удалить старый русский ярлык, нажать кнопку "OK" и плагин автоматически создаст новый ярлык, произведя транслитерацию русского заголовка записи.

В такой особенности плагина кроется, как его недостаток, так и его достоинство. Если вы не хотите менять уже существующие ссылки в блоге, то вы должны использовать именно плагин Rus-To-Lat. Если же вам необходимо поменять в блоге кучу ярлыков в уже существующих записях, то советую использовать плагин Cyr-To-Lat, который делает это автоматически при своей активации. У плагина Cyr-To-Lat, кстати, много и других достоинств и обычно в качестве плагина транслитерации я рекомендую использовать именно его. Но только не в случае, когда вы хотите оставить старые ярлыки без изменения.


Источник: http://www.wordpressplugins.ru/critical/rustolat.html

Сергей Рудюк 16 июня 2015

Связка сервера 1С:Предприятие и PostgreSQL вторая по популярности среди установок 1С и самое используемое решение на платформе Linux. В отличии внедрений на базе Windows и MSSQL, где трудно сделать так, чтобы не заработало, внедрения на базе Linux таят множество подводных камней для неопытного администратора. Часто бывает так, что вроде бы все сделано правильно, но ошибка следует за ошибкой. Сегодня мы рассмотрим самые типовые из них.

Общая информация

Перед тем, как начинать искать ошибки установки и, вообще, приступать к внедрению серверной версии 1С:Предприятия было бы неплохо освежить представление как это работает:

Сервер 1С Предприятия. Часть 1 - Общие вопросы.

В небольших внедрениях сервер 1С и сервер СУБД обычно совмещают на одном физическом сервере, что немного сужает круг возможных ошибок. В нашем случае будет рассматриваться ситуация, когда сервера разнесены по разным машинам. В нашей тестовой лаборатории мы развернули следующую схему:

index

В нашем распоряжении имеются два сервера под управлением Ubuntu 12.04 x64, на одном из них установлен сервер 1С:Предприятие версии 8.3, на другом PostgreSQL 9.04 от Ethersoft, а также клиент под управлением Windows. Напоминаем, что клиент работает только с сервером 1С, который, в свою очередь, формирует необходимые запросы к серверу СУБД. Никаких запросов от клиента к серверу управления базами данных не происходит.

Сервер баз данных не обнаружен
ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (Ident)

index2

Данная ошибка возникает при разнесении серверов по разным ПК из-за неправильно настроеной проверки подлинности в локальной сети. Для устранения откройте /var/lib/pgsql/data/pg_hba.conf, найдите строку:

<code><span class="hljs-keyword">host</span> <span class="hljs-literal">all</span> <span class="hljs-literal">all</span> 192.168.31.0/24 ident</code>

и приведите ее к виду:

<code><span class="hljs-keyword">host</span> <span class="hljs-literal">all</span> <span class="hljs-literal">all</span> 192.168.31.0/24 md5</code>

где 192.168.31.0/24 - диапазон вашей локальной сети. Если такой строки нет, ее следует создать в секции IPv4 local connections.

Сервер баз данных не обнаружен
could not translate host name "NAME" to address: Temporary failure in name resolution

index3

На первый взгляд ошибка понятна: клиент не может разрешить имя сервера СУБД, типичная ошибка для небольших сетей, где отсутствует локальный DNS-сервер. В качестве решения добавляют запись в файл hosts на клиенте, что не дает никакого результата...

А теперь вспоминаем, о чем было сказано несколько раньше. Клиентом сервера СУБД является сервер 1С, но никак не клиентский ПК, следовательно запись нужно добавлять на сервере 1С:Предприятие в файл /etc/hosts на платформе Linux или в C:\Windows\System32\drivers\etc\hosts на платформе Windows.

index4

Аналогичная ошибка будет возникать, если вы забыли добавить запись типа A для сервера СУБД на локальном DNS-сервере.

Ошибка при выполнении операции с информационной базой
server_addr=NAME descr=11001(0x00002AF9): Этот хост неизвестен.

index5

Как и прошлая, эта ошибка связана с неправильным разрешением клиентом имени сервера. На этот раз именно клиентским ПК. В качестве решения добавляем в файл /etc/hosts на платформе Linux или в C:\Windows\System32\drivers\etc\hosts на платформе Windows запись вида:

<code>192.168.31.83 SRV-1C-1204</code>

где указываете адрес и имя вашего сервера 1С:Предприятия. В случае использования локального DNS следует добавить A-запись для сервера 1С.

Ошибка СУБД: DATABASE не пригоден для использования

index6

Гораздо более серьезная ошибка, которая говорит о том, что вы установили несовместимую с 1С:Предприятие версию PostgreSQL или допустили грубые ошибки при установке, например не установили все необходимые зависимости, в частности библиотеку libICU.

Если вы имеете достаточный опыт администрирования Linux систем, то можете попробовать доустановить необходимые библиотеки и заново инициализировать кластер СУБД. В противном случае PostgreSQL лучше переустановить, не забыв удалить содержимое папки /var/lib/pgsql.

Также данная ошибка может возникать при использовании сборок 9.1.x и 9.2.x Postgre@Etersoft, подробности смотрите ниже.

Ошибка СУБД:
ERROR: could not load library "/usr/lib/x86_64-linux-gnu/postgresql/fasttrun.so"

index7

Довольно специфичная ошибка, характерная для сборок 9.1.x и 9.2.x Postgre@Etersoft, также может приводить предыдущей ошибке. Причина кроется в неисправленной ошибке в библиотеке fasttrun.so. Решение - откатиться на сборку 9.0.x Postgre@Etersoft.

Ошибка СУБД
ERROR: type "mvarchar" does not exist at character 31

index8Возникает если база данных была создана без помощи системы 1С:Предприятия. Помните, для работы с 1С базы данных следует создавать только с использованием инструментов платформы 1С: через консоль Администрирование серверов 1С Предприятия

index9или через средство запуска 1С.

index10

Сервер баз данных не обнаружен
ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (по паролю)

index11

Очень простая ошибка. Неправильно указан пароль суперпользователя СУБД postgres. Вариантов решения два: вспомнить пароль или изменить его. Во втором случае вам нужно будет изменить пароль в свойствах всех существующих информационных баз через оснастку Администрирование серверов 1С Предприятия.

Сервер баз данных не обнаружен
FATAL: database "NAME" does not exist

index12Еще одна очень простая ошибка. Смысл ее сводится к тому, что указанная БД не существует. Чаще всего возникает из-за ошибки в указании имени базы. Следует помнить, что информационная база 1С в кластере и база данных СУБД - две разные сущности и могут иметь различные имена. Также следует помнить, что Linux системы чувствительны к регистру и для них unf83 и UNF83 два разных имени.

Источник: http://interface31.ru/tech_it/2014/05/tipovye-oshibki-ustanovki-servera-1s-i-postgresql-na-platforme-linux.html

Сергей Рудюк 16 июня 2015

Несмотря на огромную популярность WordPress, этот движок, не оптимизированный под современные требования поисковых систем, вполне способен загнать под фильтр новый сайт, даже несмотря на размещаемый там качественный контент. Стандартная настройка CMS приводит к появлению множества дублей на сайте: один и тот же текст может повторяться самой статье, в «архиве», на странице категории и т.д. Добавьте к этому HTML-код, полный «мусора», комментарии, где каждый желающий может оставить ссылку на любой сайт или дорвей, и вы поймете, почему все большее число новых сайтов на WordPress попадает под фильтр.

SEO-оптимизация и внесение изменений в WordPress могут быть организованы двумя способами: 1) вносить все необходимые изменения непосредственно в PHP-файлы движка, 2) использовать для этого плагины.

Недостаток правки PHP-кода заключается в том, что практически каждое обновление CMS «сносит» все внесенные изменения, и их приходится заново прописывать «ручками», что может потребовать немалое количество времени. Однако чрезмерное количество плагинов отрицательно сказывается на работе CMS, так как каждый из них подключается через так называемые «хуки» (ловушки), что со временем приведет к значительным «тормозам».

Самый простой способ внести необходимые изменения в WordPress – это правка PHP-файлов, входящих в состав шаблона. Все файлы одной темы находятся в одноименной директории, которую можно легко перенести с одного ресурса на другой или же сохранить на свой компьютер.

В данной статье мы рассмотрим простейшие способы оптимизации WordPress под поисковые системы.

Как создать главную страницу на WordPress

Создание главной страницы WordPress позволяет избежать дублирования имеющихся на сайте статей, представленных в виде анонсов записей. Расположенный на главной странице статичный, не меняющийся текст – это возможность заточить «морду» ресурса под основные ключевики, необходимые для продвижения.

Чтобы создать статичную главную страницу на WordPress, проделайте следующее:

1. В админ-панели перейдите заходим на вкладку Страницы и создайте или отредактируйте имеющуюся там страницу.

2. Перейдите по адресу Параметры -> Чтение. В списке под названием «На главной странице отображать» выберете «Статическую страницу», и в выпадающем меню «Главная страница» укажите, какую именно статью вы хотите сделать главной. Сохраните изменения.

Настройка ЧПУ в WordPress

Настроить человеко-понятные адреса страниц в WordPress можно средствами самого движка: никаких дополнительных плагинов устанавливать не требуется. Для этого переходим на вкладку Постоянные ссылки и в Общих настройках выбираем пункт Произвольно, после чего прописываем туда следующий шаблон: /%postname%-%post_id%.html.

Для автоматического перевода названий статей на транслит, следует установить плагин RUS-to-LAT.

Есть мнение о том, что каждая страница web-ресурса должна оканчиваться расширением .htm или .html, иначе поисковые системы будут воспринимать ее как директорию. Для того чтобы добавить к страницам расширение .html, используем небольшой плагин Page_Htm со стандартной установкой и без дополнительных настроек.

Теперь закомментируем в файле /wp-includes/post.php несколько строк, чтоб обеспечить переносимость страниц между разделами.

// $path = '/' . $curpage->post_name . $path; // $uri = $page->post_name . "/" . $uri;

Установка кода Sape на WordPress

Для того чтобы подключить блог на WordPress к бирже продажи ссылок Sape, необходимо использовать плагин iMoney, который позволяет осуществить все необходимые настройки быстро и просто.

Прежде всего, следует скачать плагин с сайта разработчика или официального блога WordPress. Полученный zip-архив следует закачать в специальную папку. Затем в панели администрирования блога следует перейти на вкладку управления плагинами и выбрать там команду «Добавить новый». В появившейся вкладке выберете команду «Загрузить» и, кликнув по кнопке «Обзор», выберете сохраненный zip-архив с плагином iMoney (распаковывать архив не нужно) и нажмите на кнопку «Установить».

На странице появится ссылка «Активировать плагин», нажимаем на нее, чтобы начать работу с iMoney. После этого плагин начнет свою работу.

Переходим в раздел «Параметры» и выбираем там раздел iMoney, чтобы перейти к настройкам плагина. Перед нами появится список настроек дополнения, среди которых будет необходимый нам раздел Sape, где следует указать уникальный VID, полученный нами на бирже ссылок.

Чтобы узнать свой VID, следует скачать на бирже папку с PHP-кодом для установки на сайт. Название, представляющее собой длинный код из букв и цифр, - это и есть искомый VID. Вставляем его в соответствующее поле плагина iMoney.

После этого iMoney предложит вам создать на хостинге специальную папку, необходимую для работы кода Sape. Для этого жмем на кнопку «Create».

Для выбора размещения продаваемых ссылок, активируйте соответствующие разделы в настройках: Before Content Links (перед статьей), After Content Links (после статьи), Sidebar Links (в колонке возле статьи). Также вы можете активировать раздел Sape context для продажи ссылок непосредственно из статьи. Все остальные настройки следует выполнить в панели Sape.

Карта сайта на WordPress

Одним из преимуществ движка, привлекающих к WordPress множество пользователей, является огромное число плагинов, позволяющих выполнить самые разнообразные задачи. К подобным задачам относится создание карты сайта, которое необходимо для того, чтобы находящиеся на сайте записи и статьи были, во-первых, легко доступны поисковым роботам, а во-вторых, не вызывали путаницы у посетителей, которым необходимо найти ту или иную информацию.

Все плагины для создания карты сайта на WordPress подразделяются на два типа: для создания XML-файла, облегчающего индексацию сайта поисковым роботам, и для создания HTML-карты, которая позволяет разместить все материалы на расстоянии двух-трех кликов от главной страницы, а также создает удобную и понятную структуру сайта.

Для создания XML файла обычно используется наиболее известный плагин Dagon Design Sitemap Generator, который имеет множество настраиваемых параметров, а также удобен и понятен в использовании.
Инсталляция плагина Dagon Design Sitemap Generator является полностью стандартной. Необходимо ввести его название в соответствующее поле в админ-панели и подтвердить его установку.

После активации плагина в списке Параметры появится дополнительный пункт DDSitemapGen, где расположены настройки плагина. Чаще всего ничего, кроме используемого языка, менять там не нужно. Однако при желании вы можете настроить количество ссылок на странице, параметры отображения количества комментариев, даты и других данных, относящихся к записи или странице.

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

Чтобы поисковый робот мог найти XML-карту, расположенную в корне сайта, следует указать адрес ее расположения в файле robots.txt. Однако обычно поисковые роботы и сами находят этот файл, если поместить его в корне сайта и назвать sitemap.xml.

Вы можете указать в настройках плагина, ссылки на какие именно элементы web-ресурса необходимо разместить в карте. Многие владельцы сайтов не размещают в sitemap.xml ссылки на категории и другие служебные страницы наподобие архивов, календаря и ряда других, указывая там только адреса страниц и записей.

Подобные настройки зависят исключительно от структуры сайта.

Источник: http://seo-praktika.com/seo-optimizaciya-wordpress.html
Адрес и телефон
E-mail: rs@corp2.net Skype: rudjuk
г. Киев, ул. Белорусская 30, офис. К2Р (схема проезда)
Мы в сети
Меню
www.megastock.ru Здесь находится аттестат нашего WM идентификатора 000000000000
Проверить аттестат
Наверх