воскресенье, 7 апреля 2019 г.

MS Computer Vision - Перенос проектов в Azure

Скорее всего вы попали на эту страницу, потому что ищите решение ошибки "access denied due to invalid subscription key. make sure to provide a valid key for an active subscription.", и оно здесь действительно есть.

У Microsoft есть ресурс - https://www.customvision.ai, на котором в простом и понятном интерфейсе можно обучить модель распознавать объекты на изображениях или классифицировать изображения.

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

Процесс переноса достаточно прост:
1. Создаем бесплатную уч.запись на Azure
2. Заходим по ссылке https://limitedtrial.customvision.ai/
3. Запоминаем значения из 1, 2, 3
3. Нужно создать в Azure новый ресурс - "Пользовательский фотопоиск". 
Отдельное спасибо переводчикам MS, которые перевели Computer Vision не как компьютерное зрение, но что самое ужасное, такой ресурс в Azure тоже есть и он не тот, который нам нужен. Я потратил час пытаясь понять, почему же у меня не хочет мигрировать проект. АРРРРГХ!!!!
4. Можно смело выбирать бесплатную подписку (F0) и регион, который вам по душе.
5. После создания ресурса запоминаем ключ №1

5. Далее качаем скрипт миграции, инструкция предельно проста, от себя добавлю, что если будут ошибки (Access denied) при установке PIP или скрипта, то добавляйте ключ --user - https://github.com/Azure-Samples/custom-vision-move-project
6. Составляем строку с параметрами, нам понадобятся параметры 1-2-3 из шага 3 и ключ из шага 5. Я переносил проект из Южно-центрального региона в Западную Европу и полная строка у меня получилась следующая
7. После успешной миграции проекта в Azure, модель нужно будет повторно обучить, выбрав соответствующий раздел меню ресурса. После открытия портала обучения не забудьте выбрать необходимую директорию, в которую были перенесены проекты, иначе в списке у вас не будет доступных проектов.

8. Обучение производится стандартно - кнопкой Train. Отметил интересную особенность, что модель до переноса в Azure обучалась примерно за 10 минут, после переноса - 23 минуты.



понедельник, 5 февраля 2018 г.

Reporting Service 2016 + Win 2016 Server + Oracle

Имелся Reporting Server 2014 на базе Win 2008R2, с установленным Oracle client 12r4 + ODP.NET и настроенным источником данных Oracle, на базе которого был построен отчет. В строке подключения было прописано "data source=<NAME>"

Пришло время обновить все приложения, был установлен Win 2016 Server, MS SQL 2017 и Reporting Server 2016. Компоненты Oracle остались без изменений.

Первое различие было в том, что тип источника данных в SSRS 2014 называется просто "Oracle", а в SSRS 2016 - "Oracle Database", но это мелочи. Скопировав настройки подключения со старого сервера, подключиться не удалось. При этом текст ошибки чудесен и сводится к следующему "Вы что-то сделали не так, наверное где-то ошиблись, но мы точно не знаем, потому что всё уже закончилось".

4 часа, ЧЕТЫРЕ часа я потратил на переустановку всего и вся, правки в реестре, перезагрузку, безудержное гугление, все без толку, в итоге всё осточертело и я написал строку подключения большими буквами "DATA SOURCE=<NAME>" и о чудо, оно заработало.

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

понедельник, 23 октября 2017 г.

Обновление XML данных в MSSQL Server

Например есть XML и необходимо заменить значение c id = 1030

<data>
<field id="2">работы по проекту НПС</field>
<field id="1014"/><field id="1017">60</field>
<field id="1019"/><field id="1020"/>
<field id="1022">60</field>
<field id="1030">2</field>
<field id="1031"/>
<field id="1038">324</field>
<field id="1039">329</field>
<field id="1092">869</field>
</data>

Выполняется следующим запросом

UPDATE Task
SET Data.modify('replace value of (/data/field[@id="1030"]/text())[1] with ("998")')
WHERE id = 20179

четверг, 7 сентября 2017 г.

conversion between dt_date and dt_dbtimestamp is not supported

Необходимо заменить приемник с "SQL Server Destination" на "OLEDB Destination"

Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)"."

Если в качестве назначения используется "SQL Server Destination" и возникает указанная ошибка, то в настройках подключения необходимо указать MaxInsertCommitSize с 0 на значение между 100 и 1000.

понедельник, 16 мая 2016 г.

Отключение дампов памяти при ошибке в Upsource и Cassandra

Последнее время Upsource стал занимать неприлично большое кол-во дискового пространства, при 9 подключенных проектах. Быстрый анализ показал наличие дампов памяти в папке \logs\cassandra.

Логи можно безболезненно удалить и внести изменение в конфигурацию (описано ниже), либо настроить регулярное задание по очистке дампов средствами ОС, подход каждый решает сам.

По умолчанию JVM запускается с опцией -XX:+HeapDumpOnOutOfMemoryError, это значит, что при возникновении ошибки OutOfMemory будет сделан дамп памяти и записан по умолчанию в \logs\cassandra в виде файлов формата pidXXXXX_.hprof.

Для отключения этой опции необходимо в файлах launcher.setenv.bat, либо в launcher.setenv.sh (зависит от ОС), убрать удалить опцию -XX:+HeapDumpOnOutOfMemoryError

Файлы расположены по следующим путям:
 \launcher\conf  
 \apps\cassandra\launcher\conf  
 \apps\hub\launcher\conf  
 \apps\upsource-analyzer\launcher\conf  
 \apps\upsource-frontend\launcher\conf  
 \apps\upsource-monitoring\launcher\conf  
 \apps\vcs-settings\launcher\conf  

P.S. Описанный способ только устраняет последствия, настоятельно рекомендую найти причину ошибки и устранить её.