Эксперимент по блокировке записей UPDLOCK в MS SQL Server

Дано: MS SQL Server 2014.
Цель эксперимента: выяснить реакцию sql-сервера на попытку одновременного доступа на редактирование записи от конкурентных запросов без использования транзакций.
Эксперимент проводился в связи со следующей задачей: есть таблица ваучеров на доступ к сети WiFi. Эти ваучеры выдаются определенным людям по запросу (с предъявлением документа, удостоверяющего личность). Оператор (сотрудник, непосредственно выдающий ваучеры на руки) делает запрос к базе через веб-приложение на выдачу ваучера. Информация о самом ваучере и о том, что он выдан находится в одной таблице. Данный запрос реализуется при помощи следующего алгоритма, состоящего из 2х этапов:

1) SELECT-запрос - запрос на наличие свободного ваучера и получения его идентификатора (ID):
SELECT TOP 1 intID FROM tblVouchers WHERE blnIsGiven = 0

2) UPDATE-запрос - обновление информации о ваучере (указание, что он выдан и когда выдан на базе полученного в предыдущем запросе идентификатора).
UPDATE tblVouchers 
SET blnIsGiven = 1, dtGivenDate = GetDate() 
WHERE intID = @IntID

Проблема: если два оператора одновременно сделают подобный запрос на выдачу ваучера, то может случиться такое, что пока не выполнен UPDATE-запрос ваучер остается условно свободным и может быть случайно выдан два раза (см. эксперимент 1).

Сбербанк онлайн ошибка проверки ПП: требует реквизиты как налогового платежа

Дано: Из 1С выгружено платежное поручение в Сбербанк бизнес-онлайн (СББОЛ).
Проблема: при проверке документа система выдает ошибки о незаполненных полях, которые обычно заполняют только при налоговых платежах:
Результаты проверки документов
 - Поле «Показатель статуса (101)» не заполнено.
 - Поле «КПП плательщика (102)» не заполнено.
 - Поле «КПП получателя (103)» заполнено некорректно. Поле должно содержать 9 цифр.
 - Поле «КБК (104)» не заполнено.
 - Поле «ОКТМО (105)» не заполнено.
 - Поле основание платежа (106) не заполнено.
 - Поле «Номер документа (108)» не заполнено.
 - Поле «Дата документа (109)» не заполнено.

IIS Редирект HTTP на HTTPS (правило URL Rewrite)

Дано: сайт на IIS 8.5 (SSL сертификат уже установлен и сайт настроен на работу по HTTPS). На IIS установлен модуль URL Rewrite.
Задача: необходимо настроить перенаправление всех запросов сайта (редирект) с HTTP на HTTPS.


pfSense 2.3 форма входа (login) и выхода (logout) (Captive Portal)

Дано: на сервере установлен pfSense 2.3 с модулем Captive Portal (кэптив портал для контроля входа пользователей в Интернет через WiFi - wifi-hotspot).
Задача: настроить собственную страницу ввода логина-пароля (или номера ваучера) взамен встроенной (login page form), а также отображать собственную страницу выхода (logout page, отсоединения сесии), а также обойти проблему всплывающего окна формы выхода (popup window, которая зачастую блокируется в браузере).

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

Как загрузить свои шаблоны форм?
Делается это на странице настроек Captive портала в блоке "HTML Page Contents" (Services - Captive Portal - Имя зоны - Configuration):

FreeBSD 10: настройка FreeRadius 3 на доменную авторизацию (Samba 4.4, Active Directory). Хождение по мукам…

Дано: существующий домен-контроллер (DC) на Windows Server 2012 R2, заполненный Active Directory (AD) каталог пользователей.
Задача: поднять бесплатный RADIUS сервер и настроить его на аутентификацию пользователей через вышеуказанный AD.

Предыстория такова, что первоначальная задача, это не радиус, а Caprive Portal (о котором напишу в другой статье), который будет авторизовывать (показывать страницу логина-пароля) и контролировать пользователей, подключающихся к корпоративному WiFi.
В качестве источника бесплатного готового решения Caprive портала был выбран pfSense 2.3, которому для сторонней (в том числе доменной) авторизации пользователей нужен радиус-сервер.
Статья больше является неким логом действий и ошибкок от закоренелого Windows-админа, поэтому не судите строго, это заметка для unix-чайников от unix-чайников.

В качестве радиус сервера был выбран бесплатный FreeRadius версии 3.
В качестве операционной системы для него - FreeBSD 10.3