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

ASP.NET Core encoding на кирилица като UTF-8

По подразбиране в ASP.NET Core 1.0/1.1 при визуализация на кирилица (всичко non Latin) в сорс-а на страницата се появява нещо подобно на това:

Това затруднява дебъгването и увеличава размера на страницата. По-странното е, че текст написан на кирилица в cshtml-a се показва правилно както е изписан.

Мислех, че е проблем с encoding-а на страницата или контролера или нещо друго, но всичко беше настроено на UTF-8.

В крайна сметка попаднах на дискусия в github: https://github.com/aspnet/HttpAbstractions/issues/315 . Там се обяснява, че по подразбиране се кодира в BasicLatin и съответно всичко останало се променя до UTF-8 като по-горе.

Решението е, да се добави следния код в Startup.cs:

Така и не ми стана ясно, защо default-a e BasicLatin, но вероятно има някаква важна причина, която в момента ми убягва

 

Одитиране на заявки с ASP.NET Core

Лесен начин за одитиране на заявки с ASP.NET Core компилиран от няколко различни сайта и модифициран да работи с Core

Няколко неща, които си заслужава да бъдат обяснени:

Използваме стандартното ASP.NET Core cookie, за да установим нещо като сесия за потребителя. Така получаваме всички действия извършени в хубав хронологичен ред.

Целта да прихванем и OnResultExecuted е да запишем колко време е отнело да се изпълни метода (полезно за разрешаване на проблеми от сорта на “Много е бавно”)

С предаване на параметри може да решим колко детайлно да запазим информация за съответния метод – параметри, query strings и т.н.

Използва се по следния начин в базовия controller (прави се по този начин, за да може да извикаме атрибута хем с DI, хем без параметри)

Допълнително разполагаме с property AuditId, което показва Id на съответния одит запис, в случай че искаме да добавим допълнителна информация в тялото на метода.

 

Например по следния начин:

 

File manager за Tiny MCE (asp.net)

TinyMce е прекрасен rich text редактор с много възможности, лесна интеграция и добър външен вид.

Безплатната версия винаги ми е вършила много добра работа, като единственото съществено нещо, което ми е липсвало е Media/File Manager. В Про версията има MoxieManager, както и много други plugins, но тя струва пари (плаща се месечна такса).

Тъй като на мене ми трябваше нещо просто и бързо, открих http://www.roxyfileman.com/. Поне що се отнася до моя проект върши много добра работа за всички цели. Може да се използва както като stand-alone file manager, така и в лесна интеграция с TinyMce 3/4 и CKEditor.

Debug на Clipper приложение

Clipper е популярен софтуер за разработка на DBase III ориентирани приложения от края на 80-те и 90-те години.

Наложи се да направя промени по едно такова приложение и в процеса научих някои неща, които могат да помогнат за в бъдеще (хе-хе-хе – Clipper и бъдеще в едно изречение!).

Като начало се оказа, че стандартно Clipper генерира p-Code – нещо като байткод, който се изпълнява на собствена виртуална машина.

Така че, за модифицирането на изпълнимия файл не трябва да се пишат ASM инструкции, а специфични Clipper p-Code инструкции.

Например JF (jump if false) e 1B, а JMP е 1E. Съответно лесно се променя кода, тъй като инструкциите са еднакъв размер ( по 1 байт)

Друго полезно нещо е, че приложението е 16 битово, съответно не работи под 64 битова OS. Решението е да се използва някакъв вид виртуална машина, като би трябвало и DosBOX да свърши работа в повечето случаи.

В случай, че започне да се появява грешка DOS Error 4, това обикновено означава, че File handles са изчерпани. Могат да се увеличат, като се редактира следния файл:

Полезни ресурси и инструменти:

Информация за Clipper (на руски) http://softclipper.net/soft/clipper/

Декомпилатор Valkyrie – много удобен, показва pCode-a на приложението. Turbo Vision интерфейс. http://softclipper.net/soft-skachat/dekompilyator-dlya-clipper-5-valkyrie-5.html

valkyrie5

Декомпилатор Rescue5 – генерира сорс кода на приложението и е полезен за бърза справка какво прави програмата. http://softclipper.net/soft-skachat/dekompilyator-dlya-clipper-5-rescue5.html