Skip to content

Instantly share code, notes, and snippets.

@ArtemAvramenko
ArtemAvramenko / bindingRedirect.js
Created June 19, 2020 15:15
Creates binding redirect xml from failed msbuild log
msBuildLog.replace(/^.*"([\w\.]+), Culture=(\w+), PublicKeyToken=(\w+)".*to Version "([\d\.]+)".*/gm,
`<dependentAssembly>
<assemblyIdentity name="$1" publicKeyToken="$3" culture="$2" />
<bindingRedirect oldVersion="0.0.0.0-$4" newVersion="$4" />
</dependentAssembly>`)
@ArtemAvramenko
ArtemAvramenko / localization.cs
Last active December 18, 2019 14:08
JSON localization to C# objects
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
@ArtemAvramenko
ArtemAvramenko / searchParamsParser.ts
Created September 23, 2019 12:32
URLSearchParams to object
function objToParams(obj: any) {
let params = new URLSearchParams();
for (let name in obj) {
let value = obj[name];
if (Array.isArray(value)) {
for (let item of value) {
params.append(name, item);
}
} else {
params.set(name, value)
@ArtemAvramenko
ArtemAvramenko / HtmlToPlainText.cs
Last active April 9, 2024 15:07
Convert HTML to plain text in C#
private static readonly Regex[] _htmlReplaces = new[] {
new Regex(@"<script\b[^<]*(?:(?!</script>)<[^<]*)*</script>", RegexOptions.Compiled | RegexOptions.Singleline, TimeSpan.FromSeconds(1)),
new Regex(@"<style\b[^<]*(?:(?!</style>)<[^<]*)*</style>", RegexOptions.Compiled | RegexOptions.Singleline, TimeSpan.FromSeconds(1)),
new Regex(@"<[^>]*>", RegexOptions.Compiled),
new Regex(@" +", RegexOptions.Compiled)
};
public static string HtmlToPlainText(string html)
{
foreach (var r in _htmlReplaces)
@ArtemAvramenko
ArtemAvramenko / current-sql-server-connections.sql
Last active April 12, 2019 12:45
Query current SQL Server connections
select
count = count(*),
db_name = db_name(database_id),
status,
login_name,
host_name,
program_name
from sys.dm_exec_sessions
where is_user_process = 1
group by database_id, status, login_name, host_name, program_name
@ArtemAvramenko
ArtemAvramenko / Reorganize_all_indexes.sql
Last active April 5, 2019 15:52
SQL Server - reorganize all indexes
DECLARE @Indexes table (TableName nvarchar(MAX), IndexName nvarchar(MAX), Value int)
INSERT INTO @Indexes
SELECT
QuoteName(s.name) + '.' + QuoteName(t.name) as TableName,
QuoteName(i.name) as IndexName,
avg_fragmentation_in_percent as Value
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS ips
INNER JOIN sys.tables t on t.object_id = ips.object_id
INNER JOIN sys.schemas s on t.schema_id = s.schema_id
INNER JOIN sys.indexes AS i ON i.object_id = ips.object_id
@ArtemAvramenko
ArtemAvramenko / AsyncHelper.cs
Created January 30, 2019 14:48
C# run async method synchronously
public static class AsyncHelper
{
public static T RunSync<T>(Func<Task<T>> action)
{
try
{
var result = default(T);
Task.Run(async () =>
{
result = await action();
@ArtemAvramenko
ArtemAvramenko / mixins.ts
Last active November 29, 2018 10:01
TypeScript mixins
const MixinHello = <T extends new (...args: any[]) => A>(base: T) =>
class extends base {
hello() { }
};
class A {
a() { }
}
class B extends A {
@ArtemAvramenko
ArtemAvramenko / RawString.cs
Last active May 3, 2018 22:17
Use Microsoft.AspNetCore.Mvc.Razor to generate emails
namespace Razor.Mail
{
public class RawString
{
private readonly string _text;
public RawString(string text) => _text = text;
public override string ToString()
{