Skip to content

Instantly share code, notes, and snippets.

View MichalBrylka's full-sized avatar

Michał Bryłka MichalBrylka

View GitHub Profile
@MichalBrylka
MichalBrylka / Program.cs
Created February 5, 2024 11:09
Result public
// See https://aka.ms/new-console-template for more information
using ConsoleApp1;
var nameEntities = new[] { "", null, "Dawid", "Kacper", "Wojciech", "Michał M", "Michał B", "Rafał", "Anna", "Floris" }
.Select(CreateUser).ToList();
var index = 0;
foreach (var ne in nameEntities)
{
if (ne.TryGetValue(out var u)) Console.WriteLine($"{index++}. User created: {u}");
@MichalBrylka
MichalBrylka / InterceptorsLogging.cs
Created November 27, 2023 13:59
Interceptor for logging
using System.Runtime.CompilerServices;
namespace Net8.Features;
[Order(9)]
internal class InterceptorsLogging : IShowable
{
public void Show()
{
var todo = new TodoApi();
@MichalBrylka
MichalBrylka / LogCallBenchmarks.cs
Created February 22, 2023 13:21
TestLoggerCallsPerf
using System;
using BenchmarkDotNet.Attributes;
using Serilog;
namespace TestLoggerCallsPerf;
/*Console
| Method | Mean | Error | StdDev | Ratio | RatioSD | Allocated | Alloc Ratio |
|----------- |---------:|--------:|---------:|------:|--------:|----------:|------------:|
| ParamsArgs | 477.0 ms | 8.56 ms | 8.01 ms | 1.00 | 0.00 | 3.75 MB | 1.00 |
@MichalBrylka
MichalBrylka / Benchmarks.csproj
Last active February 6, 2023 22:17
LINQ benchmarks
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net6.0;net7.0</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="BenchmarkDotNet" />
@MichalBrylka
MichalBrylka / JsonTableFontAwesome.csproj
Created January 8, 2023 14:36
Generate FontAwsome free list
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
@MichalBrylka
MichalBrylka / Extensions.cs
Last active December 9, 2022 14:24
Generic matrix
using System.Buffers;
namespace GenMath;
public static class Extensions
{
public static TResult[] ToArray<TResult>(this Range range, Func<int, TResult> transformer)
{
if (range.Start.IsFromEnd || range.End.IsFromEnd) throw new NotSupportedException("'FromEnd' ranges are not supported ");
@MichalBrylka
MichalBrylka / DoubleVector.cs
Last active October 13, 2023 03:53
Generic math performance
using System.Numerics;
namespace Benchmarks;
readonly struct DoubleVector
{
private readonly double[] _values;
public DoubleVector(double[] values) => _values = values;
public double Average()
@MichalBrylka
MichalBrylka / Program.cs
Created November 29, 2022 08:09
Generic Physics
var distances = Enumerable.Range(1, 10).Select(i => new Distance(i)).ToArray();
var sumOfDistances = Sum(distances);
var times = Enumerable.Range(1, 10).Select(i => new Time(i * i)).ToArray();
var velocities = distances.Zip(times).Select(pair => pair.First / pair.Second).ToArray();
static TUnit Sum<TUnit>(IEnumerable<TUnit> units)
where TUnit : IUnit<TUnit>
@MichalBrylka
MichalBrylka / Program.cs
Last active November 17, 2022 23:42
Static Interface Members
var parsedLines = Lines<CommaSeparatedWords>.Parse("""
Ala,has,a,cat
Cat,has,Ala
""");
var parsedNumbers = CsvFile<int>.Parse("""
11
22
33
""");
@MichalBrylka
MichalBrylka / Program.cs
Created October 18, 2022 21:36
GetAvgSentiment
string[] symbolsUniverse = new[] { "AAPL", "VOD", "ADBE", "GRPN", "META", "ACER", "GOOG", "BP" };
List<string> GenerateSymbols(int number)
{
var symbols = new List<string>();
for (int i = 0; i < symbolsUniverse.Length; i++)
{
var bit = 1 << i;
if ((number & bit) == bit)
symbols.Add(symbolsUniverse[i]);
}