Инсталация и използване на Tika OCR сървър

 

Сървърът е достъпен на

Инсталиране на нов език за Tesseract:

Извличане на текст от съдържанието на документ:

Доълнителна информация може да се намери тук: https://medium.com/@masreis/text-extraction-and-ocr-with-apache-tika-302464895e5f

Проверка дали сървърния сертификат е с пълна верига

Ако сървърния SSL не е с пълна верига е възможно мобилни браузъри и приложения да имат проблем със свързването като дават SSL грешки.

Локално това може да се провери с OpenSSL

Например:

Ако се получава цялата верига, ще има информация подобна на:

Certificate chain

Ако по някаква причина се връща само последния сертификат, то ще има резултат от сорта на:

В този случай, трябва да се оправи сървърния сертификат, така че да връща цялата удостоверителна верига

Повреден лог в SQL Server Express

В случай, че база не може да се закачи към SQL Server с подобна грешка:

и стандартната команда с ATTACH_REBUILD_LOG не работи, може да се използва ATTACH_FORCE_REBUILD_LOG, която ще създаде лог-а при всички ситуации.


Взето от тук:

https://blog.sqlauthority.com/2016/11/04/sql-server-unable-attach-database-file-activation-failure-log-cannot-rebuilt/

Parameter sniffing или защо понякога заявките в SSMS са бързи, а в приложението не

SQL Server има оптимизация, която се нарича parameter sniffing, която запазва и кешира query планове при извикване и компилиране на stored procedure за конкретни параметри.

По подразбиране .NET приложенията използват малко по-различни параметри отколкото SSMS например:

За приложения:

за SSMS:

Съответно в някои случаи заявките се оптимизират грешно за .NET приложения (с arithabort off), но в SSMS работят наред, тъй като няма натрупана статистика, за да се оптимизират.

Бързо решение на проблема (временно!) е да се изпълни

Това изчиства кеша на сторнатите процедури и започва наново да се съхраняват. Тези статистики се пазят в паметта, поради което рестарт на сървъра също върши работа.

Има и други опции, като да се добавят различни опции към заявката като use recompile, option recompile, optimize for unknown и т.н.

По-глобално решение би било използването на Trace flag 4136 или

По-долу има подробна информация за този (и други случаи) и различни решения на проблема:

http://www.sommarskog.se/query-plan-mysteries.html

Сериозен недостатък при .NET приложения и EF е генерирането на  dynamic SQL, който използва sp_executesql и лесно може да възникне такъв проблем.

Tile Server за OpenStreetMaps

OpenStreetMaps са прекрасни карти, които са безплатни за  използване, могат да се редактират от всеки и допускат да се изтеглят сурови данни.

За да се използват данните е нужен “tile server”, който да ги предоставя. Стандартните mapnik и т.н. са много добри, но и сложни за подкарване.

Тук идва Tile Server GL – лесен за инсталиране като npm пакет или docker контейнер. NPM пакета съществува и в разновидност, която е изцяло javascript (без растер) и включва node сървър.

За работа са необходими mbtiles карти например от OpenMapTiles

Цялото подкарване отнема по-малко от 5 мин и след това it just works 🙂

Генериране на Nuget пакет и качване в локално хранилище

Бърз начин за генериране на nuget пакет и Upload към локално (shared folder) хранилище

 

Криптиране на връзката към MS SQL Server

Бърз начин за осигуряване на криптирана връзка по пътя (data at transit) до MS SQL server е използването на SSL сертификати от сървърна страна.

Ако не може да се издаден валиден SSL сертификат или няма възможност за локален CA, то може да се добави TrustServerCertificate=Yes към connection string-a към базата, за да вярва на сървърния сертификат.

Разбира се по този начин осигуряваме криптирана връзка с лесна конфигурация на цената на риска от използването на self-signed сертификат.

 

Криптиране на конфигурационни файлове в ASP.NET

Криптиране на connectionStrings секцията в web.config използвайки DPAPI. Командата трябва да се изпълни на машината, където е сървъра, защото използва данни от machine.config

и съответно декриптиране на секцията

 

Конфигуриране на TDE за SQL Server

SQL скрипт за създаване на TDE (Transparent Data Encryption) и осигуряване на “Encrypt the data at rest”.

Информацията в базата данни е криптирана и ако някой намери backup на базата няма да може да я използва.

Друга положителна страна е, че приложението,което достъпва данните няма нужда се променя и продължава да работи както и досега.

Криптирането на базата е онлайн, прозрачно и може да се проследи до къде е стигнало чрез изпълнение на query към dmv таблица.

Важно е да се запазят ключовете и сертификата, за да може базата данни да се прочете, ако се премести на друг сървър!

 

 

SQL Server 2016/2017 – MS 70-761 Querying data with T-SQL

Подготовката за изпит MS 70-761 Querying data with Transact-SQL задължително минава през новостите в SQL Server 2016, като част от тях  са:

  • Dynamic Data Masking
  • Row Level Security
  • Always encrypted
  • Temporal data
  • JSON support
  • Polybase

Долните са по-скоро административни, но така или иначе са полезни

  • Query Store
  • Stretch Database