Developers logbook
Tips. Thoughts. Notes.
15.01.2022
Тренажёр для работы с Git
27.09.2021
Azure: построение кросс-запросов для различных БД в MS Azure SQL Server
MS Azure SQL Server с точки зрения взаимодействия с ним крайне похож на классический MS SQL Server и во многих аспектах повторяет функциональность. Однако быстрое и удобное создание linked server пока не доступно в Azure версии. В качестве решение можно воспользоваться способом с подключением внешнего источника данных:
-- Производим очистку данных DROP EXTERNAL TABLE tblSource DROP EXTERNAL DATA SOURCE RemoteSource DROP DATABASE SCOPED CREDENTIAL sourceCredential DROP MASTER KEY -- Настраиваем соединение CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'your_password'; CREATE DATABASE SCOPED CREDENTIAL sourceCredential WITH IDENTITY = 'your_login', SECRET = 'your_password'; CREATE EXTERNAL DATA SOURCE RemoteSource WITH ( TYPE=RDBMS, LOCATION='your_server.database.windows.net', DATABASE_NAME='your_db_name', CREDENTIAL= sourceCredential ); CREATE EXTERNAL TABLE dbo.tblSource( [Id] [int] NOT NULL, [Name] [nvarchar](2000) NOT NULL ) WITH ( DATA_SOURCE = RemoteSource ); -- Производим выборку SELECT * FROM dbo.tblSource
С помощью такой методики вы можете подключаться не только к базам Azure SQL, но и другим поддерживаемым источникам данных.
21.09.2021
.NET: compiling single file executables in .NET 5
.NET 5 is not a very new technology, very soon MS will perform release version of .NET 6. Hovewer 5th version is still in use and not all problems were solved in it. One of such problems is compiling single file executables. If you try to do it just by selecting checkbox in publish settings window, just like you did for .Net core 3.1 and ealrlier, it will not work. Visual Studio will still compile multifile build.
Here is a workaround for it. You will need to manually add properties (PublishSingleFile, SelfContained, IncludeAllContentForSelfExtract and RuntimeIdentifier) in your project file. Thus you csproj will look like this:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <OutputType>WinExe</OutputType> <TargetFramework>net5.0-windows</TargetFramework> <PublishSingleFile>true</PublishSingleFile> <SelfContained>true</SelfContained> <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract> <RuntimeIdentifier>win-x64</RuntimeIdentifier> </PropertyGroup> </Project>
Of course your parameters (like runtime or generated file type) may be different according to your task.
20.09.2021
MS Office: снятие защиты с файла Word, Excel, PowerPoint
Как известно современные файлы из пакета MS Office (docx, xlsx и т.п.) являются переименованными zip архивами, содержимое которых легко можно просмотреть. Поэтому есть достаточно простой способ снятия защиты с документа/листа. Пример для Excel можно посмотреть в этом видео:
20.04.2021
SQL: Функция для получения по подстрок из строки с разделителями
Возникла задача по разбиения строкового столбца, в котором есть разделители, например, точка с запятой на отдельные столбцы. Для этого из оригинальной строки нужно получать подстроки с учетом порядкового номера/индекса. Сделать это можно, написав sql-функцию следующего вида:
CREATE FUNCTION [dbo].[f_GetValueFromSeparatedStringByIndex] ( @InputString nvarchar(MAX), @Index int, @Separator nvarchar(1) = ';' ) RETURNS nvarchar(255) AS BEGIN DECLARE @Result nvarchar(255) = NULL SELECT @Result = TRIM(Value) FROM ( SELECT TRIM(value) as Value, ROW_NUMBER() OVER(ORDER BY (SELECT 1)) as OrderNumber FROM string_split(@InputString, @Separator) ) as t WHERE OrderNumber = @Index RETURN @Result END
31.03.2021
.Net библиотеки для работы с маркетинговыми системами
В конце прошлого кода на своей текущей работе в компании Wavemaker (Russia) запустил несколько opensource решений, базирующихся на наработках, сделанных в ходе работы над программным комплексом Data Feeds Platfrom. Часть функциональности задействует ряд библиотек из моего фреймворка Ak.Framework. Как раз недавно было выпущено обновление для одной из библиотек.
Что было сделано:
Adverity.Api.Connector - библиотека для работы с API Adverity Datatap.
Adverity - популярная платформа интеллектуальной маркетинговой аналитики, которая помогает автоматизировать сбор данных из сотни источников и преобразует их в понятную и полезную бизнес-аналитику для принятие решений об инвестициях в разные каналы коммуникации.
Github - https://github.com/wm-russia-software/Adverity.Api.Connector
Nuget - https://www.nuget.org/packages/Adverity.Api.Datatap.Connector
Segmento.Api.Connector - библиотека для работы с API Segmento.
Segmento - российская компания-разработчик одноимённой автоматизированной платформы, использующей собственные технологии машинного обучения для закупки рекламы в формате аукциона в реальном времени и таргетинга цифровой рекламы.
Github - https://github.com/wm-russia-software/Segmento.Api.Connector
Nuget - https://www.nuget.org/packages/Segmento.Api.Connector
Делитесь и пользуйтесь.