Skip to content

Instantly share code, notes, and snippets.

Avatar

Atif Aziz atifaziz

View GitHub Profile
@atifaziz
atifaziz / NCrontabFieldsDemo.csproj
Created Nov 7, 2020
NCrontab demo showing direct use of CrontabField
View NCrontabFieldsDemo.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace></RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ncrontab" Version="3.3.1" />
@atifaziz
atifaziz / Util.linq
Last active Aug 27, 2020
LINQPadless helper for LINQPad's Util 📄 http://share.linqpad.net/age6lg.linq
View Util.linq
<Query Kind="Program">
<Namespace>System.Globalization</Namespace>
<RemoveNamespace>System.Collections</RemoveNamespace>
<RemoveNamespace>System.Data</RemoveNamespace>
<RemoveNamespace>System.Diagnostics</RemoveNamespace>
<RemoveNamespace>System.Linq.Expressions</RemoveNamespace>
<RemoveNamespace>System.Reflection</RemoveNamespace>
<RemoveNamespace>System.Text</RemoveNamespace>
<RemoveNamespace>System.Text.RegularExpressions</RemoveNamespace>
<RemoveNamespace>System.Threading</RemoveNamespace>
@atifaziz
atifaziz / WebLinqData.linq
Last active Sep 20, 2020
LINQPad helper for WebLINQ
View WebLinqData.linq
<Query Kind="Program">
<NuGetReference Version="4.0.0">System.Reactive</NuGetReference>
<NuGetReference Version="4.5.0">System.Text.Encoding.CodePages</NuGetReference>
<NuGetReference Version="1.0.0-alpha-20200416" Prerelease="true">WebLinq</NuGetReference>
<Namespace>System.CodeDom.Compiler</Namespace>
<Namespace>System.Globalization</Namespace>
<Namespace>System.Net</Namespace>
<Namespace>System.Net.Http</Namespace>
<Namespace>System.Net.Http.Headers</Namespace>
<Namespace>System.Reactive</Namespace>
@atifaziz
atifaziz / CowSay.linq
Last active Aug 26, 2020
dotnet-coway as a LINQPad C# Query Program (http://share.linqpad.net/9bfa4d.linq)
View CowSay.linq
<Query Kind="Program">
<NuGetReference Version="1.0.0">Kurukuru</NuGetReference>
<NuGetReference Version="2.2.4">McMaster.Extensions.CommandLineUtils</NuGetReference>
<NuGetReference Version="11.0.2">Newtonsoft.Json</NuGetReference>
<Namespace>Kurukuru</Namespace>
<Namespace>Newtonsoft.Json</Namespace>
<Namespace>McMaster.Extensions.CommandLineUtils</Namespace>
<Namespace>System.Threading.Tasks</Namespace>
<Namespace>System.Net.Http</Namespace>
</Query>
@atifaziz
atifaziz / test.csx
Last active Aug 17, 2020
FileOptions.DeleteOnCode test for my StackOverflow answer https://stackoverflow.com/a/63451070/6682
View test.csx
using System.IO;
var fileName = Path.GetRandomFileName();
Console.WriteLine($"File name: {fileName}");
Console.WriteLine($"Exists? {File.Exists(fileName)}");
using (var fs = File.Create(fileName, 4096, FileOptions.DeleteOnClose))
Console.WriteLine($"Exists? {File.Exists(fileName)}");
Console.WriteLine($"Exists? {File.Exists(fileName)}");
View OptupleCost.cs
using System;
public class C {
public void M((bool, object) x) {
if (x is (true, {} obj)) {
Console.WriteLine(obj);
}
}
public void N(bool f, object obj) {
if (f) {
@atifaziz
atifaziz / sorting.js
Last active May 28, 2020
Two techniques demonstrating sorting time strings
View sorting.js
times = [ '12:00', '10:00', '12:15', '09:30' ]
// simple way
// relies on string comparison operators (`<` and `>`)
sorted = [...times].sort((a, b) => a > b ? 1 : a < b ? -1 : 0)
// sorted = [ '09:30', '10:00', '12:00', '12:15' ]
// complicated way
// - split time on ":" into two parts: hours and minutes
@atifaziz
atifaziz / README.md
Last active Feb 28, 2020
Demo that RyuJIT eliminates unreachable "typeof(T)==typeof(…)" branches in generic instantiations of a method
View README.md

What's this?

Found an interesting [comment] in SqlDataReader's source code:

// this block of type specific shortcuts uses RyuJIT jit behaviours to achieve fast implementations of the primitive types
// RyuJIT will be able to determine at compilation time that the typeof(T)==typeof(<primitive>) options are constant
// and be able to remove all implementations which cannot be reached. this will eliminate non-specialized code for 
@atifaziz
atifaziz / BuilderAsMonoid.csx
Last active Feb 21, 2020
A less ceremonial approach to “explicit endomorphism” presented by Mark Seemann in “Builder as a monoid”
View BuilderAsMonoid.csx
// This script is related the following blog entry by Mark Seeman titled,
// "Builder as a monoid":
//
// https://blog.ploeh.dk/2020/02/17/builder-as-a-monoid/
//
// It demonstrates a simpler approach to avoid the ceremony of "explicit
// endomorphism" by using merely delegates. It does so by replacing
// "IEndomorphism<T>" with "Func<T, T>" and then using "+" in lieu of
// "AppendEndomorphism<T>" to achieve the same effect.
//
@atifaziz
atifaziz / pack-priv.cmd
Created Jan 22, 2020
Windows batch for local/private NuGet packaging of projects
View pack-priv.cmd
@echo off
setlocal
for /f "usebackq" %%f in (`PowerShell -C "([datetimeoffset](git ls -1 --pretty=%%cI)).ToUniversalTime().ToString('yyyyMMdd''T''HHmm')"`) do set COMMIT_TIMESTAMP=%%f
if not %ERRORLEVEL%==0 exit /b %ERRORLEVEL%
call "%~dp0pack.cmd" priv-%COMMIT_TIMESTAMP%
exit /b %ERRORLEVEL%
You can’t perform that action at this time.