Перехват нажатия кнопки на сканере из NT-службы

Сканер HP G2710, точнее его ПО, не могло по нажатию кнопки отправлять изображение в общую сетевую папку, если пользователь не был залогинен в Windows (XP). Также сканирование “без вопросов, без окошек” требовалось для того, чтобы не отвлекать сотрудника, к чьему компьютеру был подключен сканер.

Скачать программу rooscan
версия 3.5 (06.02.13) | 1.2 Мб | stable

Программа rooscan представляет из себя NT-службу Windows XP и предназначена для перехвата нажатия кнопок сканера. Отсканированный файл будет сохранен в указанной папке (например, на сетевом ресурсе) в JPG или PDF-формате. Ведет краткий лог. Листинг основной части программы на C# приведен чуть ниже.
Перед запуском rooscan убедитесь, что у вас установлен .NET Framework 2.0, есть права администратора и выполните следующие действия:

  1. Скачайте приложенный к этой записи файл и установите, например, в C:\Program Files\rooscan
  2. Запустите оснастку управления службами (Пуск – Выполнить – services.msc), в списке дважды щелкните на службе rooscan, перейдите на вкладку “Вход в систему”, убедитесь, что выбран переключатель “Вход с системной учетной записью”. Однако, если вы работаете в домене, либо к папке сохранения нужны права доступа, то выберите переключатель “С учетной записью”, укажите здесь любой локальный или доменный аккаунт с достаточными правами доступа (особенно к сетевым папкам), например, “Администратор”, введите его пароль и нажмите “OK”, чтобы сохранить настройки.
  3. Убедитесь, что сканер подключен и присутствует в системе. Уберите из автозагрузки программное обеспечение сканера (есть или нет – здесь вам может помочь msconfig)
  4. Запустите и остановите службу rooscan. Все возможные идентификаторы событий от вашего сканера добавятся в конец файла rooscan.conf
    (добавление к концу файла выглядеть будет приблизительно так)
  5. Здесь параметрам scanEvent и pdfEvent выставьте свои значения-события, выбранные, как уже было сказано – из полученных способом выше. Если собираетесь использовать связку сканер+принтер (как ксерокс), также заполните параметры printEvent и printerName.
  6. Заполните остальные параметры (там даны комментарии), сохраните конфигурационный файл и запустите службу rooscan

Листинг основной части программы на C# (правда, это еще код версии 1.0, весь код есть в ссылке в комментариях):

Если у вас ADF (automatic document feeder, устройство автоматической подачи документов) можете дополнительно использовать библиотеку adfwia
Для тестирования взаимодействия кода с WIA установил виртуальный сканер Microsoft “WIA Sample MicroDriver Scanner Device”: файлы testmcro.dll и testmcro.inf находятся внутри установочного файла по ссылке выше (собрал при помощи XP DDK).
Для удаления старой версии службы достаточно выполнить – sc delete rooscan)
UPD. Если при запуске службы появляется “Ошибка 1053: Служба не ответила на запрос своевременно”, выполните
regsvr32 “C:\Program Files\rooscan\wiaaut.dll”

QiP 8097 + big smiles

Скачать QiP 2005_8097 (это не QiP 2010/2012!):
qip8097.cab
размер 6,3 Мб
или QiP 2005 8097 с большими смайлами:
qutim_bigsmiles
qip8097_bigsmiles.cab
размер 7 Мб
Для QutIM’а отдельный архив:
kolobkibig_qutim.zip
размер 1 Мб
Распакуйте в /home/user_name/.config/qutim/emoticons/
(C:\Documents and Settings\Имя пользователя\Application Data\qutim\emoticons)
Сам QutIM (для Debian Sqeezy/Ubuntu): qutim_0.2.tar.gz
размер 5,4 Мб; требует пакет libqt4-webkit
Поддержка протокола MRA (Mail.ru Agent) для Empathy (версии 3.4 и выше) – mrim-prpl_0.2.0+git.20130301-1_i386.deb

Быстро расшарить ресурсы Samba

Для того, чтобы быстро поднять сервер на самбе для хранения расшаренных файлов, например, в рабочей группе, где не требуется контроль прав, необходимо привести конфиг smb.conf к такому виду:

samba_logo

Миграция сервера 1С с W2k3/MSSQL8 на Fedora/PgSQL

1c81ico
Версии продуктов:
1C:Предприятие 8.1.12-101.i386 (подписчики ИТС могут забрать с веб-сайта 1C)
PostgreSQL 8.3.3-2.1C (нашел на свежем диске ИТС RPM’ы, а не исходники, как на сайте 1C)
Fedora Core 10
Замечаний по установке нет. Добавлю лишь, что сразу после установки изменил локаль системы на русский (System-Administration-Language). То есть в файле /etc/sysconfig/i18n у меня строчка LANG=”ru_RU.UTF-8″.
Это я сделал для того, чтобы initdb инициализировал новую базу с локалью RU, а не EN, так как в региональных настройках исходной ИБ 1C у меня установлено “Русский (Россия)”.
Скажу сразу, что сервер может работать и без ключа – но поддерживает лишь до 12 подключений (включительно).
Установка драйвера USB-ключа HASP не требует ряда шаманских танцев, описанных во всех руководствах (подозреваю из-за того, что там версия Fedora была старее).
Просто скачиваем драйвер отсюда, вытаскиваем из него aksusbd-redhat-1.5-1.i386.rpm и устанавливаем.
Есть еще версия под WINE, но я ее не устанавливал.
Устанавливаю 1C:

затем 1C_Enterprise-common-nls-8.1.12-101.i386, 1C_Enterprise-server-8.1.12-101.i386 и 1C_Enterprise-server-nls-8.1.12-101.i386
Аналогично попытался установить PostgreSQL (порядок установки такой:
postgresql-libs, postgresql, postgresql-server, postgresql-plperl и postgresql-contrib)
Однако, предварительно, для разрешения зависимостей, пришлось установить libtermcap2-2.0.8-36mdk.i586 и readline-compat-4.3-307.i586. RPM’ы взял с сайта rpm.pbone.net.
Далее инициализируем базу данных:

В файле /var/lib/pgsql/data/postgresql.conf найдите параметр
default_with_oids, раскомментируйте и установите его значение в on
Затем редактируем /var/lib/pgsql/data/pg_hba.conf
Будет вот такая строчка:
host all all 0.0.0.0/0 md5
Которая говорит серверу PostgreSQL не запрашивать пароль при локальном входе.
Превратите ее в
host all all 0.0.0.0/0 trust
Возможно, вместо trust, попробую написать password – пока выяснять было некогда.
Затем рестартим, выполняем вход в консоль PostgreSQL:

и даем команду

где sergtsop – новый пароль. У вас, естественно, он будет другим. Апострофы и точка с запятой в строке запроса к БД – обязательны. Выходим из консоли командой \q
Поздравляю, теперь вы знатный постгресмен!
В Система-Администрирование-Службы разрешаем и запускаем сервер PostgreSQL. Я выключил фаерволл, хотя оснастке вроде был нужен только порт 1540 TCP.
При решении проблем я также запретил работу SELinux.
Полагаем, что все в порядке. Базу данных будем создавать из винды.
Первым делом в винде в файле hosts прописываем IP-адрес и имя линукс-сервера.
Устанавливаем аналогичную виндовую версию 1C, запускаем MMC-оснастку “Серверы 1C Предприятия”, создаем центральный сервер, именем которого – имя линукс-сервера из hosts.
Далее в кластере пытаемся создать информационную базу, если оснастка зависает, то необходимо удалить папку /home/usr1cv81/.1cv81 и перезапустить демон 1C.

При создании новой информационной базы используйте аналогичные данные:
Имя: moyabasa
Сервер баз данных: ИмяСервераLinuxВфайлеhosts
База данных: moyabasa
Пользователь сервера БД: postgres
Пароль пользователя БД: sergtsop
Создать базу данных в случае ее отсутствия: ставим галочку.
Лично я еще установил phpPgAdmin – по умолчанию он находится по адресу http://localhost/phpPgAdmin/ (регистр важен!)
Изменений в конфиге /etc/phpPgAdmin/config.inc.php коснулись только строчки:

Ну, и httpd должен быть запущен.
Поздравляю, на этом этапе вы уже можете начинать работу в новой базе. Однако, мы же переходим к перекачке данных из MS SQL 2000 в наш PostgreSQL.
Для этого заходим конфигуратором в рабочую базу 1C и в меню Администрирование выбираем пункт “Выгрузить информационную базу”. Указываем куда и в какой файл. Время выгрузки из моей базы (файл БД MSSQL весил 48 Гб) длилось около двух часов. Файл информационной базы 1C в итоге занял ~1,5 Гб.
Логично, что теперь заходим конфигуратором во вновь созданную базу и открываем пункт меню “Администрирование”-“Загрузить информационную базу”. Загрузка будет происходить также долго. Размер базы PostgreSQL без малого такой же – 51 Гб.
Теперь можно переходить к бэкапу SQL-базы средствами 1C v8

Что означает "> /dev/null 2>&1"?

Долгое время никто не мог объяснить мне, что за амперсанды, знаки и цифры идут после юниксовых команд. При этом все примеры были показаны без объяснения – зачем все это? Гугл также не давал ответа. Особенно заметно использование таких команд во время работы компилятора. В этой статье постараюсь объяснить эти странные команды.
К примеру, у нас есть такая строчка:

Перенаправление вывода
Оператор > (“больше чем”), как в примере выше, переадресовывает вывод программы. В данном случае, что-что отправляется в /dev/null, а что-что переадресовывается в &1.
Стандартные ввод, вывод и ошибка
Существует три стандартных значения ввода и вывода для программ. Ввод получают от клавиатуры (интерактивная, диалоговая программа), или из программы, обрабатывающей вывод другой программы.
Результат программы обычно печатается в стандартной вывод и иногда в файл “STDERR” (ошибка). Все это три дескриптора файла (вы можете представить их как “потоки данных”, пришли из языка программирования C), которые часто называют STDIN, STDOUT и STDERR.
Но часто к ним обращаются не по имени, а по номеру:
0 – STDIN, 1 – STDOUT и 2 – STDERR
По умолчанию, если вы не укажете номер, то будет подразумеваться STDOUT.
В нашем примере видно, что команда направляет свой стандартный вывод в /dev/null (псевдоустройство, которое может принять произвольный объём данных, не сохраняя их совершенно нигде, следовательно, подавив стандартный вывод). Затем все ошибки (то есть STDERR) перенаправить в стандартный вывод. Необходимо поставить амперсанд “&” перед номером назначения.
Смысл вкратце – “весь вывод указанной команды спихнуть в черную дыру!“.
Это один из способов сделать программу по-настоящему безмолвной. Добавлю, что команда в примере аналогична команде

Официальный FAQ FreeBSD предупреждает: отправка данных в /dev/null/ перегревает ваш процессор!


© на английском, первая публикация перевода – blogs/nix

Работа в 1C 7.7 под Debian

1c77ico
Базу с сервера будем монтировать в .~/wine/drive_c/1c77bases – добавил строчку в fstab:

Устанавливаем под wine (из репозитория Debian) платформу 1C 7.7. Скачиваем файл dcom98.exe (1.2 мб) – можно найти на разных FTP-серверах через веб-сайт www.filesearch.ru. Скачанный файл перемещаем в ~/.wine/drive_c/
В “Wine configuration” на вкладке “Приложения” добавляем 1cv7.exe (исполняемый файл, который запускает 1C), выделив добавленный файл, переходим на вкладку “Библиотеки” и здесь добавляем следующие библиотеки – msvcrt40, ole32, oleaut32, olepro32, rpcrt4. Всем библиотекам присвойте замещение “Сторонняя, затем встроенная”.
Теперь распаковываем библиотеки DCOM98 командой
wine DCOM98.EXE /C /T:c:\\temp /Q
и перемещаем ole32.dll, oleaut32.dll, olepro32.dll из /drive_c/temp в папку /drive_c/Program Files/1Cv77/BIN (не в system32, так как там находятся одноименные библиотеки других версий для работы 1C 8.1).
Необходимо убрать заставку 1C при запуске. Для этого любым HEX редактором (например, Bless) заменяем в 1cv7.exe строчку 8B 83 54 85 00 00 на 31 C0 90 90 90 90 (естественно, это для сетевой версии, а не для для локальной).
deb1c77_1
Начиная с релиза 7.70.026 имеется возможность отключения проверки идентичности порядка сортировки, установленного для базы данных и системного порядка сортировки. Поэтому создаем в каталоге информационной базы сигнальный файл с именем OrdNoChk.prm
Запускаем 1C – wine 1cv7.exe и первым делом, чтобы 1C перестала аварийно завершаться, снимаем галочку в меню “Окна” -> Панель окон” -> “Показать”.
Единственное, что смущает, не открывается более одной базы одновременно (хотя еще один процесс 1cv7.exe создается). Думаю, что это можно обойти созданием копии отдельных exe-файлов для каждой базы с последующей настройкой свойств этих 1cv7.exe в Wine.
deb1c77_2

Бэкап SQL-базы средствами 1C v8

Файл 1cv8bckp.cmd с командами для выполнения бэкапа, планирую запускать каждую неделю из Windows 2003 – ночью, в то время, когда с базой никто не работает.
Клиент-серверных баз две – одна на Fedora Core 10, вторая – на Windows 2003.
Перед выгрузкой информационной базы требуется выкинуть из 1C всех пользователей. Разберем по очереди варианты с каждой ОС.
На сервере Fedora необходимо перезапустить демон 1C. Из Windows 2003 это можно сделать с помощью SSH для Windows.
Теперь, чтобы при логине на Fedora не запрашивался пароль, сгенерируем пару RSA-ключей:

Парольную фразу вводить не нужно, укажите, что файл хотите сохранить, например в C:\myid.rsa
Затем перемещаем файл C:\myid.rsa.pub на SQL-сервер Fedora и там даем команду:

(oneC.BIGMARKET – это hostname SQL-сервера)
Все, теперь можно подключаться без пароля.
Содержимое файла 1cv8bckp.cmd (здесь “/etc/init.d/srv1cv81 restart” это команда для перезапуска демона 1C):

В файл res_log.txt будут сыпаться ошибки для последующего анализа.
Если в Windows SSH будет выдавать ошибку: “Could not create directory ‘/.ssh'” (а Windows действительно не может создавать папки, начинающиеся с точки), то скачайте RegMon, посмотрите, где процесс ssh.exe ищет папку “.ssh” и создайте ее там в помощью команды mkdir
manual

Lotus Sametime 6.5 / IBM Connect 8/9 (Windows 7/8)

escape-lotus
lotus_yellow[1]
Встроенный в Lotus Notes 6.5 Instant Messenger не запускается и не работает в Windows 7. Для обмена мгновенными сообщениями скачайте и установите отдельный Lotus Sametime 6.5.1 с этой страницы.
Формат: MSI в cab-архиве.
Lotus_st_client_651.cab
размер 37,3 Мб
lotus_notes_suxx lotus_splash
Sametime — название протокола обмена мгновенными сообщениями.
P. S. Пара плакатов по теме: lotus_coming.jpg, lotus_NO.jpg 🙂
lotus-wine

Запуск D-Link AirPlus DWL-650+ в Debian Lenny

dwl650plus
Добиться работы wi-fi PCMCIA-карточки в Debian Lenny можно двумя путями – с помощью acx100-source и через ndiswrapper
Любые варианты не поддерживают WPA2.
ACX100:
Устанавливаем acx100-source и

Скчиваем прошивку acx-firmware-20060207.tar.bz2, в архиве находим папку acx100_1.10.7.K и ее содержимое копируем в /lib/firmware
выполняем команды

Добавил в файл /etc/init.d/interfaces приблизительно такие строки:

Устанавливаем wicd и подключаемся к сети:
wicd
ndiswrapper

С помощью lspci -nn нашел PCI/VEN карточки, скачал драйвер dwl650plus.tar.gz для Windows XP и через ndisgtk (“Windows Wireless Drivers”) установил.

Настройка BackupPC на SUSE Linux

Делаю все через консоль (через ssh).
Создаем пользователя backuppc:

Ставим Апач:

и вводим здесь, например, такой текст:
Добро пожаловать!
Через 2 секунды вы будете перенаправлены на страницу BackupPC

Файл должен содержать:

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

Апач должен запускаться от имени пользователя “backuppc”. Приведем файл /etc/apache/uid.conf к такому виду:

Чтобы спрашивал пароль при доступе к веб-интерфейсу, вносим такие изменения в файл /etc/apache2/default-server.conf

Вносим Апач в автостарт:

и [пере]запускаем:

Предварительно разрешаем зависимости BackupPC перед установкой.

Выключаю поиск DVD-диска, чтобы скачивалось из репозиториев.

Репозиторий ‘openSUSE 11.1-0’ успешно отключён.
И ставим необходимые библиотеки:

Забираем и устанавливаем RsyncP:

Установка BackupPC:


–> Are these paths correct? [y]? Жмем Enter.
–> BackupPC will run on host [имя_host’а]? Жмем Enter.
–> BackupPC should run as user [backuppc]? Жмем Enter.
–> Install directory (full path) [/usr/local/BackupPC]? /opt/BackupPC
–> Data directory (full path) [/data/BackupPC]? /srv/backuppc
–> CGI bin directory (full path) [ ]? /srv/www/cgi-bin
–> Apache image directory (full path) [ ]? /srv/www/htdocs/BackupPC
–> URL for image directory (omit http://host; starts with ‘/’) [ ]? /BackupPC
–> Do you want to continue? [y]? Жмем Enter.

Скрипт отработает и предложит нам “Enjoy!”

адрес по которому будут высылаться отчеты о проблемах:

директория, в которую BackupPC будет складывать архивы:

будем бэкапить винду:

время, в которое BackupPC будет проводить backup:

Так как BackupPC не разрабатывался под SUSE, для решения проблем с автозапуском
выполняем эти команды:

Рассмотрим вариант бэкапа данных Windows XP/Server 2003. Для этого скачиваем файл cygwin-rsyncd-2.6.8_0.zip и распаковываем в папку C:\rsyncd\
В файле rsyncd.conf (список “общих папок” схож с конфигом Самбы) правим:
“auth users = backuppc_user” для каждой “общей папки”.
Затем в rsyncd.secrets добавляем:

Для секюрности можно дать права на чтение файлу rsyncd.secrets только учетной записи “SYSTEM”
Запускаем отсюда же services.bat, чтобы установилась служба rsync.
Теперь снова переходим на наш SUSE-сервер:

вносим в этот файл следующие строки:

Чтобы сервер BackupPC “увидел” этого клиента, добавьте imya_client_compa в файл /etc/BackupPC/hosts и соответственно, запись с сопоставлением IP-адреса в /etc/hosts
Чтобы правильно отображались русских имена файлов и папок в файле /opt/BackupPC/lib/BackupPC/CGI/Lib.pm найдите в теле процедуры Header строчку:

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

backuppc
Открываем http://ip_адрес_SUSE_сервера/cgi-bin/BackupPC_Admin
вводим ранее созданные логин и пароль (у меня adminuser) и настраиваем.