Skip to content

Instantly share code, notes, and snippets.

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;

public class Program
{
    static void Main() => WebHost.Start(ctx => ctx.Response.WriteAsync("Hello World!")).WaitForShutdown();
}
namespace System.Collections.Generic
{
public static class ConcurrentDictionaryExtensions
{
/// <summary>
/// Provides an alternative to <see cref="ConcurrentDictionary{TKey, TValue}.GetOrAdd(TKey, Func{TKey, TValue})"/> that disposes values that implement <see cref="IDisposable"/>.
/// </summary>
/// <typeparam name="TKey"></typeparam>
/// <typeparam name="TValue"></typeparam>
/// <param name="dictionary"></param>
@mikaelo
mikaelo / Program.cs
Created March 9, 2021 17:08 — forked from tmarkovski/Program.cs
Generate elliptic curve SECP256K1 key pair using Bouncy Castle for .NET
using System;
using System.Linq;
using Org.BouncyCastle.Asn1.X9;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Generators;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;
namespace Program
{
@mikaelo
mikaelo / EnumMapper.cs
Created August 28, 2021 22:00 — forked from SteveDunn/EnumMapper.cs
Enum Mapper in C#
public class EnumMapper : IDisposable
{
readonly Dictionary<Type, Dictionary<string, object>> _stringsToEnums =
new Dictionary<Type, Dictionary<string, object>>( ) ;
readonly Dictionary<Type, Dictionary<int, string>> _enumNumbersToStrings =
new Dictionary<Type, Dictionary<int, string>>( ) ;
readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim( ) ;
@mikaelo
mikaelo / tokens.md
Created October 13, 2021 20:02 — forked from zmts/tokens.md
Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Last major update: 25.08.2020

  • Что такое авторизация/аутентификация
  • Где хранить токены
  • Как ставить куки ?
  • Процесс логина
  • Процесс рефреш токенов
  • Кража токенов/Механизм контроля токенов
// * stackalloc does not work, we need pool as consumer is async so it needs Memory not Span
// * this might be most likley overcomplicated and ArrayBufferWriter could be enough,
// but it really tries to abuse the chance that read chunks are very small so there is
// only one rent from pool and one alloc for final result
// * these 3 methods could be a struct nicely encapsulating functionality but it is used
// from async method so struct would be copied all the time
// * these 3 methods could be a class, but I would like to limit allocation to minimum,
// so it uses `ref` arguments to delegate `state` to caller and allow keeping it on stack
static async ValueTask<ReadOnlyMemory<byte>> ReceiveStringAsync(WebSocket socket, CancellationToken ct = default)