Дизайн интерьеров

Установка Postgresql и указание пароля

PostgreSQL — это объектно-реляционная система баз данных, которая обладает признаками традиционной коммерческой базы данных, с расширениями, которые будут доступны следующему поколению СУБД (систем управления базами данных).

Установка

Для установки PostgreSQL выполните следующую команду в терминале:

Сразу после установки вы можете настроить сервер PostgreSQL по вашим потребностям, хотя стандартная настройка вполне жизнеспособна.

Настройка

По умолчанию соединения через TCP/IP заблокированы. PostgreSQL поддерживает множество методов аутентификации. Метод аутентификации IDENT используется для postgres и локальных пользователей пока не настроено что-то еще. Обратитесь к PostgreSQL Administrator’s Guide, если вы собираетесь использовать какую-либо альтернативу типа Kerberos.

Дальнейшее обсуждение предполагает, что вы собираетесь разрешить соединения по TCP/IP и используете аутентификацию клиентов на основе метода MD5. Файлы настроек PostgreSQL хранятся в каталоге /etc/postgresql/<version>/main. Например, если вы установили PostgreSQL 8.4, файлы настроек сохранятся в каталоге /etc/postgresql/8.4/main.

Для настройки аутентификации ident добавьте записи в файл /etc/postgresql/8.4/main/pg_ident.conf. В файле содержатся подробные комментарии чтобы направлять вас.

Чтобы разрешить соединения по TCP/IP, отредактируйте файл /etc/postgresql/8.4/main/postgresql.conf. Найдите строку

и замените ее на:

Чтобы разрешить другим компьютерам соединяться с вашим PostgreSQL сервером, замените ‘localhost’ на IP адрес вашего сервера или в качестве альтернативы на 0.0.0.0, чтобы подключить все интерфейсы.

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

Теперь, поскольку мы можем подключиться к нашему серверу PostgreSQL, следующим шагом будет установка пароля для пользователя postgres. Выполните следующую команду в терминале для соединения со стандартной базой шаблонов PostgreSQL:

Эта команда подключится к PostgreSQL базе данных template1 как пользователь postgres. После подключения к серверу PostgreSQL вы окажетесь в SQL консоли. Вы можете выполнить следующую SQL команду в консоли psql для настройки пароля пользователя postgres:

После настройки пароля, измените файл /etc/postgresql/8.4/main/pg_hba.conf на использование MD5 аутентификации для пользователя postgres:

Под конец вам потребуется перезапустить сервис PostgreSQL для применения новых настроек. Из терминала выполните следующее для перезапуска PostgreSQL:

Настройка выше в любом случае неполная. Пожалуйста обратитесь к руководству PostgreSQL Administrator’s Guide для настройки других параметров.

Ссылки

1. Как упоминалось выше, Administrator’s Guide — великолепный ресурс. Руководство также доступно из пакета postgresql-doc-8.4. Выполните следующую команду в терминале для установки пакета:

Чтобы увидеть руководство, введите file:///usr/share/doc/postgresql-doc-8.4/html/index.html в адресную строку вашего браузера.

2. Для общей информации по SQL смотрите Using SQL Special Edition от Rafe Colburn.

3. Также смотрите страницу PostgreSQL Ubuntu Wiki для дополнительной информации.


Источник: http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85/postgresql

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Дизайн интерьеров

Программирование в командной строке используя PHP

Ubuntu предоставляет в комплекте с пакетом apache2 утилиты для включения\выключения виртуальных хостов и модулей. Однако, создание конфигов для виртуальных хостов отнимают дополнительное время. Поэтому, мне захотелось исправить этот недостаток. Можно было, конечно, сделать автоматические поддомены для апача, но я решил написать скрипт, который создает файлы конфигурации виртуальных хостов для апача, а так же, при необходимости, добавляет имя хоста в файл /etc/hosts. Я не очень хорошо пишу скрипты в bash’e, поэтому решил использовать PHP для моей довольно простой задачи, который я, к тому же, знаю довольно неплохо.
Итак, в этой статье мы сделаем сразу две полезных вещи: ознакомимся с операциями ввода\вывода командной строки в PHP и напишем скрипт, который совсем немного упростит нам жизнь.

Проверка прав доступа

Наверное, ни для кого не секрет, что достаточно просто в первой строке PHP скрипта написать
#!/usr/bin/env php
и такой скрипт можно будет выполнить как обычную программу в Linux.

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

  1. $virtual_hosts_dir = «/etc/apache2/sites-available/»;
  2. if (!is_dir($virtual_hosts_dir) || !is_writable($virtual_hosts_dir))
  3. {
  4.     echo «You must run this script as root!\n«;
  5.     exit;
  6. }

 

Получение информации из параметров

Далее, нам необходимо узнать у пользователя некоторую информацию, которая нам нужна для создания конфига. Кроме последовательного ввода из консоли, можно передать эту информацию в качестве параметров, которые мы передаем при вызове скрипта. В PHP есть глобальные переменные $argc и $argv. Первая содержит количество входящих параметров, а вторая — массив со входящими параметрами. По-умолчанию входящий параметр всего один — полный путь к вызываемому скрипту. Таким образом, обработка входящих переменных сводится просто к обработке массива:

  1. if ($argc>1)
  2. {
  3.     for ($i=1; $i<$argc; $i++)
  4.     {
  5.         $option = explode(«=», $argv[$i]);
  6.         switch ($option[0])
  7.         {
  8.             case «-h»:
  9.             case «—add-to-hosts»:
  10.                 $add_to_hosts = true;
  11.             break;
  12.             case «-n»:
  13.             case «—no-add-to-hosts»:
  14.                 $add_to_hosts = false;
  15.             break;
  16.             case «-a»:
  17.             case «—server-alias»:
  18.                 if (isset($option[1]))
  19.                 {
  20.                     $server_alias = $option[1];
  21.                 }
  22.                 else
  23.                 {
  24.                     echo «Wrong option: {$argv[$i]}\n«;
  25.                 }
  26.             break;
  27.             case «-d»:
  28.             case «—document-root»:
  29.                 if (isset($option[1]))
  30.                 {
  31.                     if ($option[1] == «default»)
  32.                     {
  33.                         $document_root = $default_doc_root
  34.                     }
  35.                     else if (is_dir(dirname($option[1])))
  36.                     {
  37.                         $document_root = $option[1];
  38.                     }
  39.                 }
  40.                 else
  41.                 {
  42.                     echo «Wrong option: {$argv[$i]}\n«;
  43.                 }
  44.             break;
  45.             default:
  46.                 if (substr($argv[$i], 1, 1) == ‘-‘)
  47.                 {
  48.                     echo «Unknown option: {$argv[$i]}\n«;
  49.                 }
  50.             break;
  51.         }
  52.     }
  53. }

 

Потоки ввода\вывода

Но не всегда ведь удобно вбивать кучу параметров в консоль. Поэтому теперь мы просим пользователя ввести с клавиатуры то, что нам до сих пор неизвестно. Для этого нам понадобятся потоки ввода\вывода, а в данном случае только ввода. В PHP для работы с потоками ввода\вывода используются константы STDIN, STDOUT, STDERR. По сути, эти потоки ничем не отличаются от файловых потоков и работать с ними так же просто. Например, строка:

  1. $line = fgets(STDIN);

просто считает строку из консоли и запишет её в переменную $line. В данном случае, мы не открывали и не закрывали поток, т.к. PHP делает это автоматически. Но, мы можем открыть поток вручную и держать его открытым столько, сколько нам нужно. Это будет работать быстрее, если Вам нужно считать\записать более одной строки:

  1. $stdin = fopen(«php://stdin», «r»);
  2. $line1 = gets($stdin);
  3. $line2 = gets($stdin);
  4. fclose($stdin);

В данном случае мы сначала открываем поток, считываем из него две строки и закрываем его.
С записью аналогично, хотя я предпочитаю для вывода на экран просто использовать echo.

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

  1. while (!$server_alias)
  2. {
  3.     echo «Enter your hostname: «;
  4.     $server_alias = trim(fgets(STDIN));
  5. }

Теперь, спросим у пользователя, нужно ли добавлять информацию о этом хосте в /etc/hosts, но спрашиваем только в том случае, если эта информация не была передана в качестве параметра. Так как скрипт я писал себе для повседневной работы, то никаких реальных сайтов у меня не будет и чаще всего нужно будет добавлять хост в /etc/hosts, поэтому если мы ничего не вводим, а просто нажимаем Enter то это принимается как согласие:

  1. if ($add_to_hosts === null)
  2. {
  3.     echo «Add $server_alias to your /etc/hosts ? (Y/N) [Y]: «;
  4.     $line = trim(fgets(STDIN));
  5.     if ($line == ‘n’ || $line == ‘N’)
  6.     {
  7.         $add_to_hosts = false;
  8.     }
  9.     else
  10.     {
  11.         $add_to_hosts = true;
  12.     }
  13. }

То же самое и с корневой директорией сайта:

  1. if (!$document_root)
  2. {
  3.     $default_doc_root = $default_doc_root.‘/’.$server_alias;
  4.     echo «Enter your document root [$default_doc_root]: «;
  5.     $line = trim(fgets(STDIN));
  6.     if ($line && is_dir(dirname($line)))
  7.     {
  8.         $document_root = $line;
  9.     }
  10.     else
  11.     {
  12.         $document_root = $default_doc_root;
  13.     }
  14. }

 

Генерация конфиг-файла

На этом этапе весь сбор информации закончен и у нас есть все, что нужно, для того, чтобы создать конфиг. Надо убедится, что корневая директория сайта существует, а если её нет — создадим её:

  1. if (!is_dir($document_root))
  2. {
  3.     mkdir($document_root);
  4. }

Мы спрашивали у пользователя по поводу добавления хоста в /etc/hosts. Сделаем это, если он согласился:

  1. if ($add_to_hosts)
  2. {
  3.     $hosts = file_get_contents(«/etc/hosts»);
  4.     $hosts .= «127.0.0.1\t$server_alias\n«;
  5.     file_put_contents(«/etc/hosts», $hosts);
  6. }

Собственно так выглядит шаблон нашего конфига:

  1. $host_template = <<<HOST
  2. <VirtualHost *:80> 
  3. ServerAdmin i@bogus.in 
  4. ServerAlias $server_alias
  5.  
  6. DocumentRoot $document_root 
  7. <Directory $document_root> 
  8.     Options Indexes FollowSymLinks MultiViews 
  9.     AllowOverride All 
  10.     Order allow,deny 
  11.     allow from all 
  12. </Directory>
  13.  
  14. ErrorLog \${APACHE_LOG_DIR}/$server_alias-error.log; 
  15. LogLevel warn 
  16. CustomLog \${APACHE_LOG_DIR}/$server_alias-access.log combined
  17. </VirtualHost>
  18. HOST;

Ну и теперь просто запишем конфиг в файл и напомним пользователю о том, что конфиг теперь нужно еще и активировать с помощью a2ensite:

  1. file_put_contents(«/etc/apache2/sites-available/$server_alias«, $host_template);
  2. echo «Apache config for this hostname created successfully! Don’t forget to run a2ensite $server_alias\n«;

Скрипт написан. Нужно сохранить его в файл и не забыть установить флаг +x, чтобы его можно было запускать как программу:
chmod +x a2addsite

Использование

Теперь скрипт можно использовать. Можно как вводить всю информацию в консоли:
% sudo ./a2addsite
Add test.local to your /etc/hosts? (Y/N) [Y]:
Enter your document root [/home/www/test.local]:
Apache config for this hostname created successfully! Don’t forget to run a2ensite test.local

так передавать всю или часть информации скрипту в качестве параметров при вызове:
% sudo ./a2addsite —server-alias=test2.local —add-to-hosts —document-root=default
Apache config for this hostname created successfully! Don’t forget to run a2ensite test2.local

Выводы

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

Литература

Больше информации о потоках ввода вывода, а также о остальных особенностях работы с консолью в PHP можно получить на официальном сайте PHP (англ.):
Command line usage
PHP input/output


Источник: http://habrahabr.ru/post/112146/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Низкоуровневое форматирование на Debian или Ubuntu

Случилось так, что понадобилось мне низкоуровневое форматирование. Винт на 2Тб, а значит и времени тоже надо было много, потому решил вставить винт в сервер и делать всё на нем. Процедура эта не трудоемкая, но очень длительная.

1. Подключаем винт
2. Перезагружаем железо
3. Сотрим список подключенных винтов и флешек

1
# fdisk -l

В результате получим нечто такого плана (для примера взял флешку на 4Гб):

1
2
3
4
5
6
7
8
9
10
11
Disk /dev/sdg: 4057 MB, 4057989120 bytes
255 heads, 63 sectors/track, 493 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xcad4ebea
   Device Boot      Start         End      Blocks   Id  System
/dev/sdg4   *           1         494     3962848+   c  W95 FAT32 (LBA)
Partition 4 has different physical/logical endings:
     phys=(492, 254, 63) logical=(493, 90, 45)

/dev/sdg — это наш пациент (последняя буква может отличатся!)
4. Отмонитируем все разделы:

1
# umount /dev/sdg*

5. Запускаем форматирование

1
# dd if=/dev/zero of=/dev/sdg

По завершению форматирования получим объем флешки (должен соответствовать заявленному), скорость и время записи.
По памяти, жесткий диск форматировался со скоростью 1 Гб/мин (~16,5 Мб/сек), ибо подключен был через sata, а флешка куда дольше будет.

 


Источник: http://g13.org.ua/%D0%BD%D0%B8%D0%B7%D0%BA%D0%BE%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D0%B5%D0%B2%D0%BE%D0%B5-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0-debian-%D0%B8/

Установка терминального сервера на базе Ubuntu Server 12.04 LTS 64-bit для работы c платформой «1С:Підприємство» 8.3

Конспект установки и настройки терминального сервера XRDP на базе Ubuntu server 12.04 LTS 64-bit для работы пользователей с конфигурациями, которые запускаются на платформе «1С:Підприємство» 8.3 в native режиме, без эмулятора Windows.

Устанавливаем дистрибутив ubuntu-12.04.2-server-amd64.iso, процедура стандартная почти автоматическая, в интернете можно найти подробное описание процесса.

Рекомендую поставить эти службы, ненужное можно будет потом временно отключить.

Linux Ubuntu

Устанавливаем графическую оболочку LXDE  (http://xaxatyxa.ru/_ubuntu/ustanavlivaem-lxde-ubuntu.html) :

sudo apt-get update && apt-get upgrade

sudo apt-get install lxde

перезагрузка.

После ребута ubuntu загрузится уже в графическом режиме.

LXDE

Делаем автоматический вход в Ubuntu Lxde:

запускаем LXTerminal

для удобства работы устанавливаем Midnight Commander

sudo apt-get install mc

sudo mc

делаем правку файла sudo leafpad /etc/lxdm/lxdm.conf или в mc F4(edit)

надо раскомментировать (убрать #) перед autologin в самом начале файла,

поставить имя желаемого пользователя для автовхода:

autologin=ИмяПользователяДляАвтовхода

перезагрузка, теперь при старте сразу попадаем на рабочий стол lxde .

 

Устанавливаем XRDP:

sudo apt-get update

С сайта http://scarygliders.net/ берем адрес скрипта для автоматической компиляции XRDP из исходников самой последней доступной версии.

sudo apt-get install git

sudo git clone https://github.com/scarygliders/X11RDP-o-Matic.git

создается в домашнем каталоге папка X11RDP-o-Matic

sudo su

cd X11RDP-o-Matic

./X11rdp-o-matic.sh –justdoit

стартует долгий процесс скачивания, проверки и компиляции модулей для xrdp, обязательно нужно дождатся завершения процедуры —

LXDE2

в папке /X11RDP-o-Matic/packages/ лежат уже готовые собранные пакеты x11rdp_0.7.0-1_amd64.deb, xrdp_0.7.0-1_amd64.deb, пригодятся при переинсталированнии сервера без необходимости еще раз компилировать и собирать xrdp из исходников.

Проверяем установку xrdp:

sudo /etc/init.d/xrdp restart

netstat -lntp |grep 3389

Ставим xrdp в автозагрузку:

sudo update-rc.d xrdp defaults

sudo update-rc.d xrdp enable

Там же в папке /X11RDP-o-Matic/ находится скрипт создания файла *.xsession с командой startlxde для запуска LXDE при подключении пользователей:

./RDPsesconfig.sh

———————————————————————————————————————

Устанавливаем «1С:Підприємство» 8.3 и HASP драйвер:

sudo dpkg -i haspd_3.3-eter5ubuntu_amd64.deb

sudo dpkg -i haspd-modules_3.3-eter5ubuntu_amd64.deb

следующий пакет 32 бит, но без него не запускались HASP ключи:

sudo dpkg -i dkms-aksparlnx_3.2-eter1ubuntu_all.deb

Проверяем- sudo /etc/init.d/haspd restart

LXDE1C

Видим что aksusbd не запустился. Интернет подсказал решение — ”Некоторые программы из пакета драйверов HASP откомпилированы для 32-х битных систем. Для них необходимо установить поддержку 32-х битных приложений. Без пакета ia32-libs драйвера HASP-ключей на нашей 64-х битной системе работать не будут.” Устанавливаем:

sudo apt-get install ia32-libs

теперь aksusbd наконец стартует.

Распаковываем файлы deb64.tar.gz и client.deb64.tar.gz из дистрибутива «1С:Підприємство» 8.3 в одну папку.

Устанавливаем:

sudo dpkg -i 1c*.deb

sudo apt-get -f install

sudo apt-get install ttf-mscorefonts-installer

sudo apt-get install imagemagick

Запускаем для проверки конфигуратор и создаем пустую базу —

1C

 

 

Останавливаем службу сервера «1С:Підприємство» 8.3 ( пока не нужна )

sudo /etc/init.d/srv1cv83 stop

Отключаем автозапуск сервера «1С:Підприємство» 8.3

sudo update-rc.d srv1cv83 disable

заодно можно отключить и другие не задействованные службы:

sudo update-rc.d postgresql disable

———————————————————————————————————————

Устанавливаем программы необходимые для работы пользователей в терминальных сессиях :

sudo apt-get install libreoffice

sudo apt-get install libreoffice-l10n-ru

sudo apt-get install libreoffice-l10n-uk

в репозитарии версия 3, так же доступен к скачиванию и установке новый libreoffice 4 с сайта.

http://www.libreoffice.org/download/?type=deb-x86_64&lang=ru&version=4.1.0

sudo apt-get install firefox

sudo apt-get install firefox-locale-ru

sudo apt-get install sylpheed

sudo apt-get install qbittorrent

sudo apt-get install cups-pdf

Настраиваем рабочий стол и окружение:

Добавляем на LXPanel — “Индикатор раскладок клавиатуры“, “Клавиатурный индикатор“

Мне понадобился еще один язык для переключения — украинский, поэтому редактируем файл /etc/default/keyboard (с правами администратора):

sudo leafpad /etc/default/keyboard

Изменяем строку:

XKBLAYOUT=»us,ru,ua»

Настраиваем «скелеты» для пользователей:

Выполняем с правами рута

cd /home/Настроенный_Пользователь

cp -R -f -b .config/ /etc/skel/ # настройки lxde

cp -R -f -b Desktop/ /etc/skel/ # Содержимое рабочего стола

Теперь можем добавлять пользователей терминалов:

sudo adduser term1 # например

sudo adduser term2 #

Подключаемся как term1, я пробовал с Windows 8 64 bit, запустилось, но в терминале возникли проблемы с переключением языков клавиатуры.

Для решения редактируем файл /etc/X11/Xsession:

В самом начале после строки set -e прописываем:

if [ -r /etc/default/locale ]; then

. /etc/default/locale

export LANG LANGUAGE

fi

setxkbmap -layout «us,ru,ua» -model «pc105» -option «grp:alt_shift_toggle,grp_led:scroll»

Снова коннектимся к серверу и наконец получаем работающий терминал клиента —

WindowsLinux

В принцыпе, там еще много донастраевать в Ubuntu нужно, но основа создана и сервер терминалов, работающий по протоколу RDPv5 запущен, если нужно более 10-и подключенных одновременно клиентов, тогда увеличиваем значение записанное в опцию MaxSessions в секции Sessions файла /etc/xrdp/sesman.ini. 


Вид рабочей базы Бухгалтерия 8 на Linux:

1C в Linux

Источники информации:

[HOWTO] Терминальный сервер XRDP на Ubuntu.

http://forum.ubuntu.ru/index.php?topic=208235.0


http://infostart.ru/public/196375/

Предметная визуализация

Публикация исходного кода в WordPress с помощью модуля SyntaxHighlighter

WordPress.com не позволяет использовать в блоге потенциально опасный код, однако есть возможность публикации исходного кода для просмотра. Мы создали тег, который сохраняет форматирование исходного кода и даже обеспечивает подсветку синтаксиса для некоторых языков. Пример:

1
2
3
4
#button {
    font-weight: bold;
    border: 2px solid #fff;
}

Чтобы получить результат, аналогичный приведенному выше фрагменту, заключите свой код в эти теги:

ваш код

Параметр «language» определяет язык и правила подсветки синтаксиса. Поддерживаются следующие значения:

  • actionscript3
  • bash
  • coldfusion
  • cpp
  • csharp
  • css
  • delphi
  • erlang
  • fsharp
  • diff
  • groovy
  • html
  • javascript
  • java
  • javafx
  • matlab
  • objc
  • perl
  • php
  • text
  • powershell
  • python
  • r
  • ruby
  • scala
  • sql
  • vb
  • xml

Если значение параметра «language» не задано, используется значение «text» (без подсветки синтаксиса).
Код между тегами «code» будет автоматически закодирован для отображения, поэтому вам не стоит беспокоиться об элементах HTML или о чем-либо подобном.

Параметры конфигурации

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

  • autolinks (true/false) — Каждый URL в коде отображается как гиперссылка. Значение по умолчанию: true.
  • collapse (true/false) — Если задано значение true, при загрузке страницы область кода будет свернута. Для того, чтобы развернуть ее, нужно будет кликнуть по ней. Это полезно для больших фрагментов кода. По умолчанию задано значение false.
  • firstline (номер) — Определяет, с какого числа начинается нумерация строк. Значение по умолчанию: 1.
  • gutter (true/false) — Если задано значение false, номера строк будут скрыты. Значение по умолчанию: true.
  • highlight (номера, разделенные запятыми) — Номера строк, которые будут выделены, например, «4,7,19».
  • hmtlscript (true/false) — Если задано значение true, выполняется подсветка HTML/XML-кода. Это полезно при публикации смешанного кода, например, PHP внутри HTML. Работает только с некоторыми языками. Значение по умолчанию: false.
  • light (true/false) — Если задано значение true, номера строк и панель инструментов будут скрыты. Это полезно при размещении фрагмента кода из одной-двух строк. Значение по умолчанию: false.
  • padlinenumbers (true/false/целое число) — Позволяет контролировать дополнение номеров строк нулями. Значение true задает автодополнение, значение false отключает дополнение, число задает фиксированное количество знаков для номеров строк.
  • toolbar (true/false) — Если задано значение false, при наведении на код не будет появляться панель инструментов с кнопками. Значение по умолчанию: true.
  • wraplines (true/false) — Если задано значение false, будет отключен перенос строк. При наличии длинных строк появится горизонтальная полоса прокрутки.
  • title (строка) – заголовок для кода. Может быть полезным в сочетании с параметром collapse.

Примеры использования вышеописанных параметров:

8
9
10
11
Эта строка не выделена.
Эта строка выделена.
Эта строка выделена.
Эта строка не выделена.
0001
Это короткий фрагмент кода с дополнением номеров строк нулями до 4 знаков.
//В этом примере отключен перенос строк. Чтобы прочитать текст полностью, вам придется воспользоваться полосой прокрутки. Кроме того, в данном примере отключена нумерация строк и спрятана панель инструментов.

А это фрагмент кода побольше. Здесь выбран язык PHP и выделена строка номер 12.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>WordPress.com Code Example</title>
</head>
<body>
    <h1>WordPress.com Code Example</h1>
    <p><?php echo 'Hello World!'; ?></p>
    <p>Эта строка выделена.</p>
    <p>Очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень-очень длинная строка.</p>
    <div class="foobar">
        This    is  an
        example of  smart
        tabs.
    </div>
    <p><a href="http://wordpress.com/">WordPress.com</a></p>
</body>
</html>

Благодарности
Для реализации данной возможности используется проект SyntaxHighlighter (автор Alex Gorbatchev). Пользователи WordPress.org могут установить соответствующий плагин.


Источник: https://ru.support.wordpress.com/code/posting-source-code/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и дизайн

3D визуализация и интерьер

Настройка звука в XRDP для Linux Ubuntu

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

E-Mail: rs@corp2.net

Замена Windows Server на Linux Ubuntu — выгодное и полезное решение. Такое решение может получиться более стабильно работающим и главное, масштабируемым и более защищенным. Но, есть в решениях Linux всегда ложка дегтя. Прежде всего, это работа с аппаратурой. Ряд аппаратных средств работает только с Windows. И даже гордятся этим, выставляя на своем корпусе лейбочку мелко-софтовской компании…

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

Итак, устанавливаем необходимые нам пакеты:

sudo apt-get build-dep xserver-xorg-core

 

apt-get install autoconf libtool pkg-config

 

apt-get install libssl-dev libpam0g-dev libjpeg-dev libx11-dev libxfixes-dev flex bison libxml2-dev intltool xsltproc xutils-dev python-libxml2 xutils libpulse-dev

 

Устанавливаем Git, чтоб иметь возможность брать исходные коды прямо из репозитариев:

apt-get install git

Клонируем проект XRDP в текущую папку:

git clone git://github.com/FreeRDP/xrdp.git

Можно так же просто закачать zip-архив по адресу: https://github.com/FreeRDP/xrdp

Компилируем XRDP:

./bootstrap

 

./configure --enable-jpeg --enable-simplesound

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

make

 

make install

Компилируем X11RDP.

Для этого, заходим в каталог xorg/X11R7.6 и вводим команду:

./buildx.sh /opt/X11rdp

Создаем ссылку:

ln -s /opt/X11rdp/bin/X11rdp /usr/local/bin/X11rdp

Добавляем в загрузку:

cp /etc/xrdp/xrdp.sh /etc/init.d/

 

update-rc.d xrdp.sh defaults

Копируем ключ rsa для шифрации:

sudo cp ../xrdp/rsakeys.ini /etc/xrdp

Устанавливаем пакеты, необходимые для переадресации звука:

sudo apt-get install libjson0-dev libsndfile1-dev libspeex-dev libspeexdsp-dev

Закачиваем исходные коды пакета pulseaudio из http://freedesktop.org/software/pulseaudio/releases/:

tar -zxvf pulseaudio-3.0.tar.gz

Входим в каталог и выполняем:

./configure

Если возникли проблемы при компиляции, то возможно вы закачали не тот пакет pulseaudio.

Переходим в каталог xrdp/sesman/chansrv/pulse.

Вам необходимо прокомпилировать библиотеку для передачи звука по XRDP.

Отредактируйте переменную PULSE_DIR на путь к исходным кодам pulseaudio.
После этого, выполните:

make

Скопируем библиотеку в pulse (пути могут отличаться в зависимости от версии pulseaudio):

sudo cp module-xrdp-sink.so /usr/lib/pulse-3.0/modules/

Теперь, необходимо подредактировать ряд конфигурационных файлов.

Редактируем (или добавляем) файл /etc/asound.conf:

pcm.pulse {
type pulse
}

ctl.pulse {
type pulse
}

pcm.!default {
type pulse
}

ctl.!default {
type pulse
}

Редактируем файл /etc/pulse/default.pa:

.nofail
.fail
load-module module-augment-properties
load-module module-xrdp-sink
load-module module-native-protocol-unix

Перезагружаемся. После этого, если все правильно настроено у Вас должен передаваться звук по RDP.

 

P.S. Если у Вас возникло желание сменить дорогие решения на Windows на эффективные и хорошо масштабируемые решения на Linux, звоните к автору данной статьи 067 901-63-22 Рудюк Сергей Анатольевич. Или пишите на: rs@corp2.net

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

Настройка веб-браузеров для работы с «1С:Підприємство»

Настройка и использование веб-браузера Microsoft Internet Explorer

Особенности использования

Для работы с веб-клиентом в операционной системе Windows XP SP 2 требуется наличие системной библиотеки jscript.dll версии 5.6.0.8834 или выше.

Библиотека находится в каталоге system32 операционной системы. Если на вашем компьютере установлена более ранняя версия библиотеки, то возможно значительное замедление работы веб-клиента. Для обновления версии необходимо скачать пакет обновлений, находящийся по адресу http://support.microsoft.com/kb/942840/en-us.

При использовании Microsoft Internet Explorer 7 и Microsoft Internet Explorer 8 при включенных закладках, в том окне, где закладки есть, для переключения с помощью клавиатуры из главного (окно с закладками) в дочернюю форму (отдельное окно) следует использовать сочетания клавиш [Shift]+Ctrl+F6. Если закладки отключены, то для переключения можно использовать также сочетания клавиш [Shift+]Ctrl+Tab.

Особенности использования расширенных средств работы с файлами

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

Реализация для Internet Explorer требует установки специального ActiveX компонент «1С:Підприємство». Расширение работы с файлами для Internet Explorer (x86)», либо ее 64 разрядный вариант для 64 разрядного Internet Explorer. Компонент включен в платформу, но ее установка должна быть предусмотрена в конфигурации (должен быть реализован вызов метода УстановитьРасширениеРаботыСФайлами).

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

Для работы с файлами используется библиотека Microsoft Core XML Services (MSXML). Рекомендованные версии MSXML 6.0 и MSXML 4.0. В случае использования MSXML 3.0, возможны проблемы с передачей файлов большого размера с клиента на сервер.

Со списком версий модулей MSXML, ограничений и рекомендаций по установке можно ознакомиться на странице http://support.microsoft.com/kb/269238.

 

Настройки использования веб-браузера

Для использования веб-браузера необходимо выполнить настройку свойств обозревателя. Для этого

  • В меню Сервис (Tools) выберите пункт Свойства обозревателя (Internet Options) и выполните настройки:
  • Разрешите выполнение JavaScript скриптов:
    • на вкладке Безопасность (Security) для зоны Internet нажмите кнопку Другой (Custom level);
    • в разделе Сценарии (Scripting) для параметра Астивные сценарии (Active scripting) установите Разрешить (Enable) и нажмите кнопку «OK».
  • Разрешите всплывающие окна:
    • перейдите на вкладку Конфиденциальность (Privacy);
    • в разделе Блокирование всплывающих окон (Pop-up Blocker) снимите флажок Блокировать всплывающие окна (Block Pop-ups).
  • Разрешите использование cookies:
    • на вкладке Конфиденциальность (Privacy) с помощью регулятора выберите уровень использования cookies — не выше Умеренно высокий (Medium High).

Если предполагается совместная работа со сканером штрих-кодов, электронными весами или другими внешними компонентами, необходимо выполнить следующую настройку веб-браузера:

  • на вкладке Безопасность (Security) нажмите кнопку Другой (Custom level);
  • в открывшемся окне необходимо установить Разрешить (Enable) для следующих параметров:
    • Запрос разрешения для ActiveX объектов (Automatic promting for ActiveX controls);
    • Загрузка подписанных ActiveX объектов с разрешения пользователя (Download signed ActiveX controls);
    • Работа с ActiveX объектам и плагинами (Run ActiveX controls and plug-ins);
    • Работа с объектами, помеченными как безопастные (Script ActiveX controls marked safe for scripting).

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

Для настройки языка ввода по умолчанию выполните следующие действия:

  • откройте настройки операционной системы «Язык и региональные стандарты» («Regional and Languages Options»);
  • на закладке «Языки» («Languages») в разделе «Языки и службы текстового ввода» («Text services and input languages») нажмите кнопку «Подробнее…» («Details…»);
  • в открывшемся окне на закладке «Параметры» («Settings») в разделе «Язык ввода по умолчанию» («Default input language») выберите нужный язык;
  • нажмите кнопку «OK».

При работе в Internet Explorer 8 в некоторых ситуациях при переходе к уже открытому окну из другого окна будет выдаваться диалог с текстом «Нажмите OK для перехода к окну» и кнопкой OK. После нажатия кнопки будет осуществлен переход к окну.

Настройка и использование веб-браузера Mozilla Firefox

Особенности использования

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

Настройки использования веб-браузера

Для подключения к информационным базам «1С:Підприємство» 8 с помощью Mozilla Firefox нужно выполнить следующие настройки:

  • Откройте браузер, в меню Инструменты (Tools) выберите пункт Настройки (Options);
  • В открывшемся окне перейдите в раздел Содержимое (Content)
    • Снимите флажок Блокировать всплывающие окна (Block pop-up windows);
    • Установите флажок Использовать JavaScript (Enable JavaScript).
  • Перейдите в раздел Приватность (Privacy) установите следующие настройки:
    • Установите флажок Принимать cookies с сайтов (Assept cookies from sites);
    • Для детальной настройки приема или отклонения cookies щелкните кнопку Исключения (Exeptions) и следуйте пояснениям диалога настройки.

В случае если в качестве браузера используется английская версия Mozilla Firefox, то для правильной работы веб-клиента требуется выполнить следующую настройку (расположение настроек приведено для версии 3.5):

  • Откройте браузер, в меню Tools выберите пункт Options;
  • На закладке Contents в группе Fonts & Colors нажмите кнопку Advanced;
  • В параметре Default Character Encoding выберите Unicode.

Модификацию остальных параметров, которые могут потребоваться для работы с веб-клиентом «1С:Підприємство», можно осуществить с помощью команды «Сервис — Настройка веб-браузера». В окне выполняются настройки, которые можно также выполнить в настройках самого веб-браузера в диалоге запроса привилегий.

В окне осуществляется настройка следующих параметров обозревателя (в круглых скобках указывается аналогичные параметры настроек веб-браузера):

  • Разрешить работу с буфером обмена, расширением работы с файлами, внешними компонентами (signed.applets.codebase_principal_support) — для работы с буфером обмена, внешними компонентами и расширенной работы с файлами (значение true);
  • Разрешить использование в параметрах строки запуска нелатинских символов (network.standard-url.encode-query-utf8) — для использования нелатинских символов в адресной строке (значение true);
  • Разрешить использование клавиатуры для переключения между окнами приложений (dom.popup_allowed_events) — для разрешения навигации по окнам приложения с клавиатуры (добавляет к значению параметра событие keydown);
  • Использовать аутентификацию операционной системы (network.automatic-ntlm-auth.trusted-uris) — если установлен, то будет выполняться аутентификация операционной системы. Данная настройка изменяет только значение ключа network.automatic-ntlm-auth.trusted-uris. Для аутентификации операционной системы в конкретной конфигурации сети и веб-сервера, возможно, потребуется задание значений для ключей network.negotiate-auth.trusted-uris и network.negotiate-auth.delegation-uris. Дополнительную информацию см. в https://developer.mozilla.org/en/Integrated_Authentication.

Данные параметры можно также настроить вручную. Для этого необходимо в адресной строке веб-браузера набрать about:config, затем в строке фильтра набрать любое слово из имени параметра (например, principal) и поменять его значение в списке.

Рекомендуется выполнить настройку для сохранения файлов:

  • Откройте браузер, в меню Инструменты (Tools) выберите пункт Настройки (Options);
  • В открывшемся окне перейдите в раздел Основные;
  • Установите флажок Всегда выдавать запрос на сохранения файла.

Для ручной настройки аутентификации следует:

  • в адресной строке браузера набрать about:config.
  • затем на странице настроек в строке фильтра ввести название параметра.
    Данная настройка осуществляется для трех параметров:

    • network.automatic-ntlm-auth.trusted-uris,
    • network.negotiate-auth.delegation-uris,
    • network.negotiate-auth.trusted-uris.
  • далее задать список веб-серверов, через которые будет осуществляться работа с базой «1С:Підприємство».

Далее приведено описание, за что отвечают вышеприведенные параметры при разных способах аутентификации:

  • Веб-сервер поддерживает NTLM-аутентификацию.
    Если имя веб-сервера, к которому осуществляется попытка доступа, перечислено в списке имен, содержащихся в параметре network.automatic-ntlm-auth.trusted-uris, то будет осуществлена попытка автоматической аутентификации. Если же имени веб-сервера там нет, то браузер покажет диалог, в котором необходимо указать логин и пароль пользователя для доступа к веб-серверу.
  • Веб-сервер поддерживает Kerberos-аутентификацию.
    Для того, чтобы получить доступ к веб-серверу с данным типом аутентификации, в параметр network.negotiate-auth.trusted-uris нужно добавить имя этого веб-сервера. При работе с файловой информационной базой этого будет достаточно. В случае необходимости обеспечить автоматическую аутентифкацию пользователей веб-клиента при использовании клиент-серверного варианта «1С:Підприємство», необходимо добавить DNS-имя этого веб-сервера в параметр network.negotiate-auth.delegation-uris.
    В случае, если имя веб-сервера, к которому осуществляется доступ, не обнаружено в параметре network.negotiate-auth.trusted-uris, аутентификация производиться не будет, и пользователь увидит сообщение об ошибке 401 Unauthorized. Для информирования пользователя о действиях, которые ему необходимо предпринять, администратор может модифицировать страницу сообщения об ошибке 401 (см. документацию к используемому веб-серверу).

Особенности использования расширенных средств работы с файлами

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

Расширение для работы с файлами требует предоставления привилегии UniversalXPConnect. Веб-браузер Mozilla FireFox выполняет запрос привилегии интерактивно, но пользователь может запомнить решение для данного веб-сайта.

В случае, если веб-браузер Mozilla FireFox запомнил решение пользователя по предоставлению привилегии, а пользователь хочет изменить это решение, ему придется самостоятельно отредактировать файл prefs.js, который хранится в папке его профиля веб-браузера Mozilla Firefox.

Описание, как найти папку профиля, находится здесь:
http://wiki.mozilla.ru/index.php/О профилях Mozilla Firefox (русскоязычная статья)
http://support.mozilla.com/en-US/kb/Profiles (англоязычная статья).

Далее нужно:
1. Завершить работу Mozilla FireFox.
2. Открыть prefs.js любым текстовым редактором
3. Найти в тексте строку UniversalXPConnect. Будет найден фрагмент текста следующего вида:
user_pref(«capability.principal.codebase.p.granted», «UniversalXPConnect»);
user_pref(«capability.principal.codebase.p.id», «»);
user_pref(«capability.principal.codebase.p.subjectName», «»);
либо
user_pref(«capability.principal.codebase.p.denied», «UniversalXPConnect»);
user_pref(«capability.principal.codebase.p.id», «»);
user_pref(«capability.principal.codebase.p.subjectName», «»);
где — любое число, а — это адрес нужного веб сайта. Если другой, то нужно продолжить поиск «UniversalXPConnect» по тексту.
4. Удалить найденные строки из текста.

Настройка и использование веб-браузера Apple Safari

Для использования веб-браузера необходимо выполнить настройку свойств обозревателя.

Для этого откройте меню Настройки Safari (Safari Settings) выберите пункт Настройки (Preferences) и выполните настройки:

  • Разрешите выполнение JavaScript скриптов:
    на закладке Безопасность (Security) выберите Подключить JavaScript (Enable JavaScript)
  • Разрешите использование cookies:
    на закладке Безопасность (Security) в группе Принимать cookies (Accept cookies) выберите Только от посещаемых сайтов (Only from sites I visit);
  • Разрешите всплывающие окна:
    на закладке Безопасность (Security) снимите флажок Блокировать всплывающие окна (Block pop-up windows).

Рекомендуется выполнить настройку для сохранения файлов. Для этого:

  • В меню Настройки Safari (Safari Settings) выберите пункт Настройки (Preferences);
  • На закладке Основные (General) установите флажок Всегда выполнять запрос перед загрузкой (Always prompt before downloading).

Настройка и использование веб-браузера Google Chrome

Для использования веб-браузера необходимо выполнить настройку свойств обозревателя.

Для этого откройте меню Инструменты (Tools), выберите пункт Параметры (Options), на закладке Расширенные (Under the Hood) нажмите кнопку Настройки содержания (Content settings) и выполните настройки:

  • Разрешите использование cookies:
    на закладке Файлы cookie (Cookies) выберите Разрешить сохранять локальные данные (рекомендуется) (Allow local data to be set (recommended)) или настройте исключения;
  • Разрешите выполнение JavaScript скриптов:
    на закладке JavaScript выберите Разрешить всем сайтам использовать JavaScript (рекомендуется) (Allow all sites to run JavaScript (recommended) или настройте исключения;
  • Разрешите всплывающие окна:
    на закладке Всплывающие окна (Pop-ups) выберите Разрешить всплывающие окна для всех сайтов (Allow all sites to show pop-ups) или настройте исключения.

Рекомендуется выполнить настройку для сохранения файлов. Для этого:

  • Откройте меню Инструменты (Tools), выберите пункт Параметры (Options);
  • На закладке Расширенные (Under the Hood) в разделе Загрузки (Downloads) установите флажок Запрашивать место для сохранения каждого файла перед загрузкой (Ask where to save each file before download).

3D визуализация и дизайн

Настройка доступной оперативной памяти в Linux Ubuntu для PostgreSQL

При добавлении оперативной памяти на сервере до 10 Гб, возникла необходимость, чтоб эта память реально использовалась Postgresql, т.к. по умолчанию использовалась только малая часть памяти.

Это делается таким образом:

echo 8589934592 >/proc/sys/kernel/shmall
echo 8589934592 >/proc/sys/kernel/shmmax

или в файле /etc/sysctl.conf прописываются строки:
kernel.shmall = 8589934592
kernel.shmmax = 8589934592

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

vm.swappiness=10

swappiness имеет значение от 0 до 100 и представляет собой процент использования виртуальной памяти.

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

sudo /sbin/sysctl -p

В данном случае, выделяется приложениям 8 Гб, остальная часть идет на нужны операуионной системы.

Полезные статьи по теме:

http://sysdba.org.ua/ustanovka/oracle/ustanovka-oracle-10g-redaktsii-express-i-enterprise-v-ubuntu-8.04.html


Источник: http://postgrestips.blogspot.com/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Предметная визуализация

Настройка shared memory

Вот такая ошибка может появлятся в логах Zoneminder’а:
 
WAR [Buffer overrun at index 31, image 902111, slow down capture, speed up analysis or increase ring buffer size]
Для оптимизации работы рекомендуется изменить значения shmmax и shmall в sysctl.conf.

Но какие значения ставить shmmax и shmall? Для этого сделан небольшой скрипт. Его задача – посчитать и вывести размер shared memory, который равен половине доступной на сервере памяти (всей доступной).

#!/bin/bash
# simple shmsetup script
page_size=getconf PAGE_SIZE
phys_pages=getconf _PHYS_PAGES
shmall=expr $phys_pages / 2
shmmax=expr $shmall \* $page_size
echo kernel.shmmax = $shmmax
echo kernel.shmall = $shmall

Например, для сервера с 2Гб RAM скрипт выдаст следующее:

kernel.shmmax = 1055092736
kernel.shmall = 257591

Здесь SHMMAX — максимальный размер (в байтах) на сегменте shared memory, установлен в 1 Гб. SHMALL – общее количество разделяемой памяти (в страницах), какое все процессы на сервере могут использовать. Количество байтов в странице зависит от операционной системы; в, основном, по умолчанию 4096 байт.

Для того, что бы эти данные применились для Linux, выполните данную команду от root (./shmsetup – данный скрипт):

./shmsetup >> /etc/sysctl.conf

И проверьте правильность:

sysctl -p

ЗЫ. Также не забываем про семафоры в системе:

$ ipcs -l

—— Пределы семафоров ——–
максимальное количество массивов = 128
максимум семафоров на массив = 250
максимум семафоров на всю систему = 32000
максимум операций на вызов семафора = 32
максимальное значение семафора = 32767

Значения в sysctl:

$ sysctl kernel.sem
kernel.sem = 250 32000 32 128

Все четыре значения, возможно, потребуется увеличить на системах с большим число процессов.

После установки и настройки Zoneminder’а сервер был загружен на 70-80%, а во время создания avi-файлов на все 100%. После изменения параметров shmmax и shmall нагрузка в нормальном режиме стала около 35%, а во время склейки изображений в avi ~80%.

3D визуализация и дизайн

Передача файла на сервер. Тонкий и веб-клиенты

Небольшая задачка

Работа пользователей в конфигурациях на платформе «1С:Підприємство» 8.2 часто может быть связана с прикреплением различных файлов к информационной базе. Например, присоединение изображений номенклатуры или отсканированных уставных документов к справочнику «Организации».

1

Прикрепление файлов в толстом клиенте в справочнике «Организации»
(«Управление производственным предприятием», вер. 1.3)
С появлением в платформе 8.2 режимов тонкого и веб-клиентов, изменились способы передачи файлов с клиентской машины на сервер. Если раньше, в толстом клиенте, для прикрепления файла нужно было лишь вызвать диалог выбора и на основе полученного пути к файлу получить его двоичные данные для записи в информационную базу, то теперь остро встает вопрос о механизме передачи двоичных данных файла с клиентской машины на сторону сервера.

2

Как передать файл с клиента на сервер
для тонкого и веб-клиентов.
В настоящей статье рассмотрим процесс передачи файла как для тонкого клиента «1С:Підприємство», так и для варианта работы через веб-клиент.

Тонкий клиент — проще простого!

Начнем с самого простого — передачи файла на сервер для тонкого клиента «1С:Підприємство». Общую информацию о нем Вы можете узнать по ссылке. Отмечу лишь, что тонкий клиент — это отдельное приложение, которое позволяет работать с конфигурациями в режиме управляемого приложения, а также использует меньше ресурсов клиентской машины по сравнению с толстым клиентом.

3

Для демонстрации передачи файла в таком режиме создадим тестовую конфигурацию, в которой будет справочник «Файлы» с реквизитами «Хранилище» (тип «Хранилище значения» для хранения двоичных данных файла) и «ИмяФайла» (строковой реквизит, в котором хранится исходное имя прикрепленного файла).
Самое интересное будет в форме элемента этого справочника. Для прикрепления файла с диска клиентского компьютера добавим команду «Прикрепить файл».
4

По нажатии на кнопку «Прикрепить файл» вызывается диалог выбора файла на диске, а затем его двоичные данные передаются на сторону сервера и записываются в реквизит «Хранилище». На следующем листинге показан программный код обработчика данной команды:

5

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

6

Запись двоичные данных файла в реквизит «Хранилище»
на серверной стороне
Приведенный способ передачи файла с клиента на сервер рабочий, не раз применял его для решения практических задач. Об оптимальности предложенного способа хранения файлов в базе сейчас речь не идет. Единственная проблема, с которой встречался при передаче файла таким образом — это «вылет» платформы, если размер файла был более ~200 МБ. Было это примерно 2 года назад, возможно, такая ситуация была связана больше с качеством соединения, чем с платформой.

Web-клиент — давайте разберемся!

Платформа «1С:Підприємство» 8.2 имеет поддержку работы через веб-браузеры без установки дополнительного программного обеспечения на клиентскую машину. Для этого используется режим запуска в веб-клиенте. Общую информацию о нем Вы можете узнать здесь, отмечу лишь, что по своей сути веб-клиент — это тоже тонкий клиент, но базирующийся на применении веб-технологий. Именно последнее делает необходимым применение другого подхода, по сравнению с тонким клиентом, для решения вопросов разработки и взаимодействий клиента и сервера.

6

Веб-клиент. Ошибка открытия диалога выбора файла
На предыдущем скриншоте показана реакция платформы, при попытке прикрепить файл в веб-клиенте способом, который мы реализовали для тонкого клиента. Описание ошибки явно говорит нам, что для работы с файлами в этом режиме нам нужно установить для браузера плагин «Расширение для работы с файлами». Но и тут не все так просто!
Но обо всем по порядку! Сначала установим расширение для работы с файлами. Для этого по команде «Прикрепить файл», если пользователь работает в режиме веб-клиента, выполним установку компоненты и подключим ее для использования. Вот такой код добавится в начало обработчика:
7
Установка и подключение расширения работы с файлами
для веб-клиента «1С:Підприємство» 8.2
Первый вызов метода «ПодключитьРасширениеРаботыСФайлами» позволяет определить было ли оно установлено ранее. Если подключение компоненты не было выполнено, то выполняется его установка и повторная попытка подключения. Но и после этого прикрепить файл не удастся! Вот какая ошибка встретится у нас на пути:
8

Все дело в том, что веб-клиент не поддерживает конструктор двоичных данных файла на основании пути к нему в файловой системе. Эта ошибка появляется при попытке выполнения строчки с этим конструктором:

«Новый ДвоичныеДанные(<ПутьКФайлу>);»

Как же тогда быть и передать файл на сервер?
Для передачи файлов на сервер в веб-клиенте используется метод «ПоместитьФайлы». Первым параметром метода передается массив элементов типа «ОписаниеПередаваемогоФайла», содержащее полный путь к файлу и адрес во временном хранилище. Вторым параметром передается массив, в который будут помещены результаты передачи файлов на сервер (их адреса во временном хранилище и др. информация). Третий и четвёртый параметр — это флаг интерактивной работы (будут ли выводиться диалоги пользователю) и уникальный идентификатор. Подробнее о работе и синтаксисе данного метода Вы можете узнать в синтаксис помощнике. На следующем изображении демонстрируется пример использования метода «ПоместитьФайлы»:
9
Передача файлов на сервер. Веб-клиент «1С:Підприємство» 8.2
 Что касается изменений в серверном вызове, то они незначительные. Если процедура «ПрикрепитьФайлСервер» вызывается с веб-клиента, то сначала производится получение двоичных данных из временного хранилища значений, и уже после записывается в базу данных:
10
Обработка переданного из веб-клиента файла на сервере
Теперь задача практически решена. Мы можем передавать файлы с клиентской машины на сервер как в режиме тонкого клиента, так и при работе через веб-клиент. В тестовой конфигурации, ссылка для скачивания на которую приведена в конце статьи, Вы можете рассмотреть пример более подробно, поэксперементировать. Также там демонстрируется передача файла обратно с сервера на клиентскую машину.

К чему мы пришли?

Задача решена, все работает. Но стоит сказать о некоторых подводных камнях, с которыми Вы можете столкнуться. Первое, что нужно обязательно знать — это ограничение веб-клиента платформы «1С:Підприємство» 8.2 при работе с такими браузерами как Google Chrome, Safari или Mozilla Firefox. Установить на них расширение работы с файлами проблематично. С первыми двумя у меня так и не получилось научить веб-клиент загружать файлы на сервер. С Firefox задача также была решена, но после долгих танцев с бубном.
Еще один интересный момент — это ограничение работы с некоторыми типами данных на стороне веб-клиента. Выше была показана подобная проблема на примере конструктора двоичных данных. Эти особенности нужно учитывать при разработке.
22
Google Chrome не поддерживает расширение
работы с файлами «1С:Підприємство» 8.2
Таким образом, веб-клиент имеет весьма ограниченные возможности по работе с файлами на машине пользователя, передачи их на сервер и обратно. К тому же поддержка только двумя браузерами расширения работы с файлами ставит под сомнение использование этого компонента для решения практических задач, ведь очень многие пользователи используют Chrome или Safari. Имеется другой путь передачи файлов в веб-клиенте, но это уже другая история.
Файлы для загрузки:


Источник: http://www.develplatform.com/2013/06/blog-post_3.html

Страница 38 из 39« Первая...102030...3536373839