Skip to content

Instantly share code, notes, and snippets.

View fernandoescolar's full-sized avatar
:octocat:

Fernando Escolar fernandoescolar

:octocat:
View GitHub Profile
@fernandoescolar
fernandoescolar / TypesAssignableFromServiceCollectionExtensions.cs
Created March 13, 2023 16:46
ServiceCollection extensions to add assembly types that are assignable from the give generic type
namespace Microsoft.Extensions.DependencyInjection;
using System.Reflection;
public static class TypesAssignableFromServiceCollectionExtensions
{
/// <summary>
/// Adds all types assignable from TInterface in the assembly to the service collection.
/// </summary>
/// <typeparam name="TInterface">The interface to scan for.</typeparam>
/// <param name="services">The service collection.</param>
@fernandoescolar
fernandoescolar / RecordEndpoints.cs
Created March 9, 2023 19:41
.Net >= 7 Minimal API Record Endpoints
global using Framework;
namespace Framework;
using System.Reflection;
public interface IEndpoint
{
RouteHandlerBuilder Configure(IEndpointRouteBuilder builder);
}
public abstract record Endpoint(string[] Verbs, string Path) : IEndpoint
{
@fernandoescolar
fernandoescolar / install-docker-multipass.sh
Last active March 16, 2023 09:45
Install docker using canonical multipass VM in MacOS (an alternative to docker desktop)
NM=$1
function create_setup() {
cat << EOF > setup-vm.sh
#!/bin/bash
function get_architecture() {
arch=\$(uname -m)
if [ \$arch == "x86_64" ]; then
echo "amd64"
elif [ \$arch == "aarch64" ]; then
@fernandoescolar
fernandoescolar / Data.cs
Last active March 5, 2021 11:38
Entity Framework Core vs. C#9 records
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace EfCoreVsRecords
{
public record Item(Guid Id, string Name, bool IsDone)
{
@fernandoescolar
fernandoescolar / settings.json
Created November 17, 2020 11:56
Windows Terminal settings.json
// Fernando Escolar's configuration 2020-11-01
{
"$schema": "https://aka.ms/terminal-profiles-schema",
"defaultProfile": "{75de88dc-a61a-4f9d-8f17-b820620e7163}",
"theme": "dark",
"copyOnSelect": false,
"copyFormatting": false,
# execute it as root
# update
apt-get update
apt-get install make gcc tcl
# download redis
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable