• Где взять практическое задание по xml?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Гляньте формат "Office Open XML" + docx4j. -> вот к чему может привести xml. Так что несколькими днями не отделаетесь. Можно и через год удивляться "а чё, так можно было?"
    Ответ написан
    3 комментария
  • Как реализовать подсвечивания отдельных частей карты\схемы при наведении на список?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    >> решение, которое поможет избежать как раз хардкодинга
    Координаты многоугольника, описывающего помещения, как вы думаете занести без хардкодинга ?
    Могу посоветовать воспользоваться leaflet-ом. Вот пример с подложкой-картинкой: leafletjs.com/examples/crs-simple/crs-simple.html. Поищите ещё примеров, есть очень интересные плагины для leaflet-а.
    Ответ написан
    Комментировать
  • Что такое ElasticSearch?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Знаете, я с вами соглашусь, что хорошую вводную по Elastic трудно найти. Пока сам не переварил доков и не набил шишек многие элементарные понятия оставались для меня неясными. Поэтому вот моя вводная: Elastic можно использовать как NoSQL БД, только надо быть внимательным, т.к. всё-таки его основная задача поиск, а не удовлетворение функций БД. Например, если вы не настроили хранение исходных данных, а только индексацию, то свои данные вы уже не извлечёте из него. НИКОГДА. Только отдельные выражения, удовлетворяющие условиям поиска. Всё, тупик. Так же нельзя повторно индексировать уже загнанные в него данные. Т.е. перед загрузкой данных надо грамотно настроить индексацию, т.к. перестроить индекс, как это делается в реляционной БД невозможно. Нужно придумать новую схему индексации и перезалить данные в Elastic. Именно поэтому основное использование Elastic - как дополнение к существующей БД из которой данные можно перезалить по одному или полностью в Elastic (можно, конечно сделать схему Elastic->Elastic, но тоже есть нюансы).
    Ещё пару слов про схему. Это ЛОЖЬ, что в Elastic нет схемы данных. Она как раз есть и ооочень жёсткая. Жёсткая до того, что однажды определив, вы не сможете её поменять. Изначально Elastic оказывает медвежью услугу, разрешая вам дополнять схему по-умолчанию, но когда вы разберётесь с этой темой, то можете обнаружить, что Elastic "понастроил" такого у себя внутри, что остаётся только охреневать и переделывать всё явно, отказавшись от его "услуг" по автоматическому добавлению полей в схему.
    Так же в Elastic очень непросто строить сложные запросы на поиск и агрегатные запросы. Совершенно неинтуитивно. Но если освоитесь, то будет вам счастье. )))
    Несмотря за такие "страшные" вещи - Elastic классная система и по производительности агрегатных запросов не уступает платной версии MSSQL в поиске в многопроцессорных системах (проверял на одинаковых аппаратных конфигурациях с 16 ядрами). Так что если вам хочется большую скорость в агрегатных запросах и главное - это бесплатность, то берите и осваивайте Elastic. Мощности и возможности у него огромные. Но... нужно потратить приличные усилия на изучение.
    Ответ написан
    1 комментарий
  • Режим работы php как модуль apache. Как обновить версию php?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    У меня прям вот сейчас похожая задача - нужно поднять версию php под старым порталом с php 5.4.45 до php 5.6.27 на Linux. Пересобираю из исходников.
    Ответ написан
    Комментировать
  • [Решено, Solved] Если linux-комп не в Active Directory, то он не считается компьютером домена?

    AlexXYZ
    @AlexXYZ Автор вопроса
    O Keep Clear O
    Проблема решена.
    Вот небольшое расследование.

    Есть два сервера. test-0001/apache,php/Centos 7.2 (нормально аутентифицирует по kerberos) и test-0002/apache,php/OracleLinux 7.2 (сбой аутентификации kerberos).

    Анализ протокола обмена HTTP показал, что «почему-то» web-клиент (IE, FF, Chrome) как один отличают компьютер test-0002 от test-0001. Отличие состоит в том, что ключ аутентификации, которые web-клиент отправляет в качестве авторизации пользователя ооочень сильно отличается «размером»:
    Запрос к test-0002 (сбой аутентификации по Kerberos):
    96706c13d8894210bfe4d0fd2b2516e2.png080ede7e64b0434b9229c520d07af319.png

    Запрос к test-0001 (аутентификация Kerberos выполняется нормально):
    5825189ce16741359c1148fee30b70dd.pngb710650b34bf482d88f77adca35000ff.png

    Давайте всё-таки выясним, почему ключ от test-0002 короче test-0001 ??? Начну с того, что формат ключа - ASN.1 (если интересно, то гляньте https://ru.wikipedia.org/wiki/ASN.1 ). В инете есть просмотрщик этого формата:
    https://lapo.it/asn1js
    Анализ ключа в запросе от test-0002:
    1ceee5434ef44a08b17cee123e5ba515.png
    1. NEGOEX – насколько я понял именно этот формат обеспечивает «объединение» нескольких аутентификаторов одного и того же пользователя в разных протоколах. В данном ключе вложен только протокол NTLM
    2. Данные для протокола NTLM (который не поддерживается компонентом apache mod_auth_gssapi).

    Анализ ключа в запросе к test-0001:
    573bbcfea2e64351a1a27e4db461d303.png
    Как видим во втором ключе уже присутствует протокол Kerberos!!! Занятно! Т.е. проблема для test-0002 не на стороне сервера, раз клиент сразу не отдаёт ему ключ правильного формата!

    Хм. А давайте-ка посмотрим в журнал windows?
    c7d2f48555b348cdb239d1b40e36af8b.png

    0x7 KDC_ERR_S_PRINCIPAL_UNKNOWN
    0x19 KDC_ERR_PREAUTH_REQUIRED

    Опаньки! Это что такое??? Какая-то проблема с принципалом? И почему только с test-0002? (Записей, указывающих на другой компьютер, например, test-0001 не найдено). Получается, что браузер до ответа на запрос серверу уже что-то «подозревает», раз не отдаёт ему нужный ключ (ОЧЕНЬ БОЛЬШАЯ ПРОСЬБА: ЕСЛИ КТО-ТО ПОНИМАЕТ ПРОЦЕСС, КАК БРАУЗЕР ПРИНИМАЕТ РЕШЕНИЕ КАК СОЗДАТЬ КЛЮЧ ДЛЯ АУТЕНТИФИКАЦИИ - РАССКАЖИТЕ МНЕ НЕМНОГО ОБ ЭТОМ!!!).
    Если порыться в интернете, то вопросов по этой ошибке много (https://www.google.ru/search?q=KDC_ERR_S_PRINCIPAL...), но в основном они без ответа. Тупик? Ничего подобного! Давайте глянем в документацию Microsoft по поводу SPN: https://msdn.microsoft.com/en-us/library/ms677949%...
    b5334963f38a4f9ca87c087db77ed639.png
    Т.е. spn моего сервиса должен быть зарегистрирован только в одном аккаунте. ЗАПОМНИМ ЭТО!!! И вот ещё один интересный момент: https://msdn.microsoft.com/en-us/library/ms677601%...
    6545dfe4a1ad44b6acc6577a3163eeb3.png
    Тут написано, что SPN должен быть уникальным. Если он не уникален, то аутентификация даст сбой.

    А вот давайте проверим, а действительно ли SPN для сервера test-0002 уникален? На просторах интернета нашёлся простой скрипт powershell, который после небольшой модификации показывает интересующие нас SPN-ы: social.technet.microsoft.com/wiki/contents/article...
    #Set Search
    cls
    $search = New-Object DirectoryServices.DirectorySearcher([ADSI]“”)
    $search.filter = “(servicePrincipalName=HTTP/test-*)”
    $results = $search.Findall()
    
    #list results
    foreach($result in $results)
    {
           $userEntry = $result.GetDirectoryEntry()
           Write-host "Object Name = " $userEntry.name -backgroundcolor "yellow" -foregroundcolor "black"
           Write-host "DN      =      "  $userEntry.distinguishedName
           Write-host "Object Cat. = "  $userEntry.objectCategory
           Write-host "servicePrincipalNames"
           $i=1
           foreach($SPN in $userEntry.servicePrincipalName)
           {
               Write-host "SPN(" $i ")   =      " $SPN       $i+=1
           }
           Write-host ""
    }


    Результат:
    3e67af20a3d041779246cdaeb21598b9.pngWTF???

    ПОЧЕМУ В ДВУХ РАЗНЫХ АККАУНТАХ ОДИН И ТОТ ЖЕ SPN??? (Помните, чуть выше я просил запомнить правило, что spn должен быть уникален и присвоен только одному аккаунту?) Или может быть я что-то неправильно понял? Пойдём дальше и давайте посмотрим атрибуты для учёток test-0002 и test-0001, но не через оснастку AD, а через оснастку ADSI:
    2f16d1f71fcf40779ff6ac36b4824c2f.png
    test-0002 – OK.
    А вот для test-0001 нас ждёт СЮРПРИЗ (удивительно, что сюрприз связан с аккаунтом сервера на котором ВСЁ РАБОТАЕТ!!!):
    a04ac318d20c4844b68b1f7127f8a934.png
    Так, так!!! Оказывается, что spn для сервера test-0002 имеется в AD в двух экземплярах – в учётке test-0002_httpd и в учётке test-0001_httpd ! Чего по документации быть не должно! Вот это и был корень проблемы! Дубликат SPN.
    После удаления дубликата всё заработало!!!

    Всем спасибо за внимание.)))

    P.S.
    Рекомендация для заведения SPN. Нужно использовать команду setspn -S, а не servspn -A, т.к. setspn -S проверяет наличие дубликатов. Очень рекомендую к прочтению статью https://social.technet.microsoft.com/wiki/contents....
    Ответ написан
    Комментировать
  • Как найти утечку памяти в JS коде?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Мне кажется, что вашу проблему может помочь найти chrome profiling:

    https://developer.chrome.com/devtools/docs/heap-pr...

    Ооочень полезнная штука. Поможет увидеть работу с памятью JS изнутри. Например, если вы создаёте одну большую строку из нескольких маленьких, например, var str = "a"+"b"+"c"+"d"; то будете удивлены, что в памяти появились строки "ab", "abc" и "abcd", хотя вы первые две не заказывали. При том, что присваивание работает только для последнего результата.
    Ответ написан
    2 комментария
  • Как включить опцию GSS-Negotiate в curl?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Вы решили проблему? Я сейчас собираю curl и точно такой же список - GSS-Negotiate - No, и аутентификация по kerberos не работает.

    UPDATE:
    Разобрался, почему "no" - этот параметр относится к CURL_VERSION_GSSNEGOTIATE, который как раз и запрещён в версии 7.38.0:
    b6dd4673a71e4095ae9de877e90e0c1b.png

    Теперь надо разобраться, как правильно аутентифицировать в новой версии. У меня пока не работает (7.50.3).

    Update:
    Всё работает. Надо было кеши полученных ключей почистить на httpd-сервере.
    Ответ написан
    Комментировать
  • Почему под Windows 10 форма не выводится поверх всех окон?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Не подскажу за дельфи, но для C# есть решение:

    stackoverflow.com/questions/10740346/setforeground...

    Пользуюсь им, работает уже в 99.9999% (при разработке ещё подглючивало, но вот уже несколько месяцев работает на 100%). В основном работаю на 8.1, но на домашней windows 10 глюков с этим методом не было.
    Ответ написан
  • Ребята, зацените тестовое задание?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Скорее всего можно предложить обсудить архитектуру, а не писанину. Лично я не вижу смысла вообще писать что-либо без предварительного разговора.
    Ответ написан
  • Chrome не грузит картинки и некоторые сайты из за uBlock?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Откройте консоль (dev tools - F12) и гляньте, что пишется в консоли. Может там ошибок масса вываливается? Загляните в панель "Network".
    Ответ написан
    Комментировать
  • Как спарсить сообщение с форума?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Сразу брать plaintext неправильно. Вместо plaintext надо воспользоваться children(), чтобы получить набор потомков. Потом пройтись по ним циклом. Если встретился div, то предполагаем, что это сообщение. Если следующий элемент - текст, то это уже комментарий к сообщению.
    Ответ написан
    4 комментария
  • Как записать ответы на много ссылок?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Используйте HTA. Тоже, что HTML, только разрешает сохранять текстовые файлы на локальной машине. Последовательность такая: делаете HTML страницу с jquery/angular, На странице запускаете все запросы по вашим ссылкам по ajax, после сборки всех ответов суммируете их и пишете в текстовый файл. Бонус - не нужно писать серверную часть.

    Можно даже без HTA, если сделать на Windows Scripting Host, но тут придётся повозиться с Ajax: stackoverflow.com/questions/13689871/how-do-i-use-...

    Можно поекспериментировать с nw.js: nwjs.io

    Можно ещё на C# + CefSharp (WebBrowser class очень слабый со старой версией IE, настоятельно НЕ рекомендую), но это когда надо серьёзно обработать результат, например, я так грузил набор картинок с сайта, где картинки были как CSS background и сшивал их автоматом в PDFs, для чего подключил iText через NuGet. Если это вы недавно задавали вопрос загрузки данных с сайта стим, то вполне можете этим инструментом написать хорошего паука для обработки данных стима на C# при просмотре страницы online.
    Ответ написан
    Комментировать
  • Есть ли рабочие js-библиотеки для mapdrag div-элемента?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Вот пример на leaflet:
    leafletjs.com/examples/crs-simple/crs-simple.html

    ==================================================
    1429d0ccf41c4f10b3057eb363516c2d.gif
    ==================================================
    Общий каталог примеров: leafletjs.com/examples.html

    Но если вы на нём ещё не работали, то потребуется немного времени. )))

    Штука классная!
    Ответ написан
  • В чем смысл макро программирования?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Чтобы программы могли "делать" те, кто в программировании ничего не понимает. Вы не думайте, не каждый мечтает научиться программировать. Некоторым вполне хватает и макросов.
    Это у вас в голове функционал программы отделён от интерфейса. У других это монолит. )))
    Ответ написан
  • Как передать параметр в httpurlcon??

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Параметры, передаваемые через POST - это просто строка формата param1=value1&param2=value2, но передаваемая в теле запроса, а не в адресной строке. Вот хороший пример преобразования, где учтено экранирование: stackoverflow.com/questions/7671597/convert-map-to...

    connection.setDoOutput(true);  // После этой строки писать всё остальное
    StringBuilder sb = new StringBuilder();
      for(HashMap.Entry<String, String> e : queryString.entrySet()){
          if(sb.length() > 0){
              sb.append('&');
          }
          sb.append(URLEncoder.encode(e.getKey(), "UTF-8")).append('=').append(URLEncoder.encode(e.getValue(), "UTF-8"));
      }
    
    // Теперь нужно эти данные передать в тело запроса:
    
            DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
            wr.write(sb.toString().getBytes());
            wr.flush();
            wr.close();
    Ответ написан
    Комментировать
  • Как "нарисовать" линию улицы на карте?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Я подобную штуку с маршрутами делал на leaflet+mapbox. Где взять координаты улиц не подскажу, у меня были фиксированные маршруты и точки остановок, но обычно линии рисуются на отдельном слое. Т.е. нужно создать слой, выяснить координаты и рисовать на этом слое. Рисовать можно всё что угодно.

    Вот примеры для mapbox+leaflet: https://www.mapbox.com/mapbox.js/example/v1.0.0/po... (с этими примерами я работал в живую)

    Для google maps: https://developers.google.com/maps/documentation/j...

    Вот неплохая статья про openstreet maps: webmap-blog.ru/obzors/znakomimsya-s-otkrytoj-js-bi...

    Если не ошибаюсь, то leaflet работает и с openstreetmap. Если я не прав - подскажите, уберу это предложение.
    Ответ написан
    1 комментарий
  • Где dbforge Studio для MySQL хранит временные скрипты, которые я не сохранил?

    AlexXYZ
    @AlexXYZ Автор вопроса
    O Keep Clear O
    Нашёл!
    Все скрипты живы здоровы! Только не показываются. Теперь впредь буду более осторожным!

    C:\Users\[username]\AppData\Local\Temp\dbForge Studio for MySQL

    63369fbf0fd14ffaa23b26376fa88d9c.png

    # mysql temporary unsaved sql script files path
    Ответ написан
    Комментировать
  • С помощью чего отобразить на странице данные из json?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Гляньте на: https://highlightjs.org/
    Вот пример с json: https://highlightjs.org/static/demo/

    603567891d9a4c2c8d5f6d69c6398a0d.png
    Ответ написан
    Комментировать
  • Почему ответ от сервера приходит 3 раза?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Потому что где-то в коде вы его три раза запрашиваете. Смотрите не только консоль браузера, но и закладку сетевых соединений. А ещё лучше поставьте fiddler и посмотрите им.
    Ответ написан
  • Как поставить на постоянный автокоммит каталог в Windows?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    В принципе поставить watcher можно. Если есть опыт C#, то смотрите FileSystemWatcher. На этой странице даже пример есть. Неплохой, кстати.
    P.S.
    Только смотрите, что эти watcher-ы ждать не будут, пока вы закоммитите. Могут навалить событий воз и маленькая тележка. Но и просто с ходу некоторые темы там туманны. Надо практиковаться.

    P.P.S.
    На всякий случай: https://diff2html.xyz/
    Ответ написан
    Комментировать