Биты и байты.

Биты и байты.

пятница, 22 апреля 2016 г.

Как получить больше 1000 записей из AD

При использовании связанного сервера к AD,   может возникнуть проблема получения всех записей из AD.
Поскольку  есть ограничения по количеству строк для запроса к LDAP .
Windows Server 2008 and newer domain controller returns only 5000 values in a LDAP response

Самый простой вариант разбить запрос на несколько частей по любому признаку, самое логичное по sAMAccountname 
Таким образом один запрос превращается в два, три и тд.


SELECT NAME,
       givenName,
       SN,
       sAMAccountname,
       mail,
       company,
       division,
       department,
       manager,
       userAccountControl,
       ObjectGuid,
       CASE
            WHEN ad.accountexpires IN ('9223372036854775807', '0', '129895740000000000') THEN
                 '9999-12-31'
            ELSE DATEADD(
                     mi,
                     (CAST(ad.accountExpires AS BIGINT) / 600000000)
                     + DATEDIFF(Minute, GETUTCDATE(), GETDATE()),
                     CAST('1/1/1601' AS DATETIME2)
                 )
       END AS AccountExpiresDate     
FROM   OPENQUERY(
           AD_SERVER,
           'select Name, givenName, SN, sAMAccountname, mail, company,division,department,manager, userAccountControl,ObjectGuid,accountExpires   from ''LDAP://DC=domen,DC=ru'' WHERE  sAMAccountname  < ''L'' and objectClass=''user'''
       ) AS AD
      

среда, 13 апреля 2016 г.

Полезные скрипты JavaScript

Несколько полезных скриптов.

Повесить обработчики на фрейме.

function Addhandler() { var input = window.frames['mainFrame'].document.getElementById('Lastname'); if (input == null) { return; } else { var inputs = window.frames['mainFrame'].document.getElementsByTagName('input'); } if (undefined !== inputs && inputs.length) { for (index = 0; index < inputs.length; ++index) { var input = inputs[index]; input.onkeyup = function (e) { var item; var itext = ''; itext = this.value.replace(' ', ''); itext = itext.replace('ё', 'е'); var items = ["тест", "привет"]; for (i = 0; i < items.length; ++i) { item = items[i].replace(' ', ''); item = item.replace('ё', 'е'); if (itext.toLowerCase() == item.toLowerCase()) { alert('Вы угадали секретное слово ' + itext + ' поздравляем'); } } } } } }

понедельник, 11 апреля 2016 г.

Профилактические работы. Заглушка для сайта.

Хорошим тоном  при переводе сайта в офлайн, т.е.  когда он просто перестает работать является установка страниц заглушек.
На английском языке они называются Coming Soon page , under Construction Page, но  суть их везде одинаковая:
дать пользователю информацию, что это не у него там что-то сломалось, а система действительно не работает и будет  запущена к такому то времени.


Есть несколько вариантов использования таких заглушек.
Вариант 1. С возможностью тестирования.
По текущим портам приложения 80 и 443, ставим заглушки, приложение привязываем  к новому порту например 555 для http  и  556 https.
Пока  пользователи по обычному адресу получают страницу заглушку, мы можем спокойно  обновлять приложение и заниматься его тестированием, по адресу http://сервер:555
Для SharePoint также необходимо настроить сопоставления альтернативного доступа в шарике  через админку , чтобы приложение открывалось по новому порту.

Заглушка состоит из нескольких файлов


web.config  , настраиваем редирект когда файл не найден . ошибка 404

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpRedirect enabled="false" destination="" exactDestination="true" childOnly="false" httpResponseStatus="Permanent" />
        <defaultDocument>
            <files>
                <clear />
                <add value="index.html" />
                <add value="Default.htm" />
                <add value="Default.asp" />
                <add value="index.htm" />
                <add value="iisstart.htm" />
                <add value="default.aspx" />
            </files>
        </defaultDocument>
        <httpErrors errorMode="Custom">
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" path="index.html" responseMode="File" />
        </httpErrors>
    </system.webServer>
    <system.web>
        <authentication mode="Windows" />
        <customErrors defaultRedirect="http://сервер/index.html" mode="On">
            <error redirect="http://сервер/index.html" statusCode="404" />
        </customErrors>
    </system.web>
</configuration>

Сама страница заглушки

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Профилактические работы</title>
       
        <!-- Our CSS stylesheet file -->
        <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans+Condensed:300" />
        <link rel="stylesheet" href="underconstructionfilesctc/css/styles.css" />
        <link rel="stylesheet" href="underconstructionfilesctc/countdown/jquery.countdown.css" />
       
        <!--[if lt IE 9]>
          <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
    </head>
   
    <body>
             <img src="underconstructionfilesctc/img/maint.jpg" alt=""  style="display:block;margin:auto;"/>
             </br>
             <div id="countdown"></div>

             <p id="note"></p>

        <footer>
               <h2><i>Статус:</i> Профилактические работы</h2>
                <a class="tzine" href="mailto:admin@mail.ru">По срочным вопросам <i> обращаться <b> к администраторам</b></i> </a>
        </footer>
       
        <!-- JavaScript includes -->
             <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
             <script src="underconstructionfilesctc/countdown/jquery.countdown.js"></script>
             <script src="underconstructionfilesctc/js/script.js"></script>

    </body>
</html>

Результат выглядит таким образом

пятница, 1 апреля 2016 г.

Селекторы JQuery

Селекторы jQuery

Для изучения используйте jQuery Selector Tester
*


























































































About