Skip to content

Instantly share code, notes, and snippets.

View MarkPflug's full-sized avatar
🌲

Mark Pflug MarkPflug

🌲
View GitHub Profile
@MarkPflug
MarkPflug / TryCatchCrash.cs
Last active October 15, 2025 18:38
TryCatchCrash
using System.Runtime.CompilerServices;
static class Program
{
static void Main(string[] args)
{
for (int i = 10; ; i += 10)
{
Console.WriteLine(i);
try
@MarkPflug
MarkPflug / SqlTableUsage.sql
Created August 1, 2025 16:36
A query that provides roughly the same data as "Disk usage by table", but with some extra info about lob usage
SELECT
a3.name AS [schemaname],
a2.name AS [tablename],
a1.rows as row_count,
coalesce(a1.reserved, 0) * 8 AS reserved,
a1.data * 8 AS data,
a1.rodata * 8 AS rodata,
a1.lobdata * 8 AS lobdata,
(CASE WHEN (a1.used + ISNULL(a4.used, 0)) > a1.data THEN (a1.used + ISNULL(a4.used, 0)) - a1.data - a1.lobdata ELSE 0 END) * 8 AS index_size,
@MarkPflug
MarkPflug / Example.cs
Created May 23, 2024 21:54
Generic Specialization for IParsable<T>
using System.Reflection;
var x = GetParser<Thing>();
var y = GetParser<int>();
static IParser<T> GetParser<T>()
{
// specialize for T == Thing
if (typeof(T) == typeof(Thing))
{
@MarkPflug
MarkPflug / InvertedStreamCsvExample.cs
Created May 16, 2024 19:57
.NET Stream Inversion
// Include nupkgs: Sylvan.Data, Sylvan.Data.Csv
using Sylvan.Data;
using Sylvan.Data.Csv;
int count = 10000000;// controls how many records to write
const string file = "dump.csv";
// "invert" the WriteCsvToStream code into a readable stream.
using Stream stream = new InvertedStream((stream) => WriteCsvToStream(stream, count));
@MarkPflug
MarkPflug / SqlTimeZoneConvert.cs
Created January 19, 2024 17:59
SQL TZ Convert
using System.Data.SqlClient;
internal class Program
{
static void Main(string[] args)
{
var dbStr = args[0];
var srcTz = args[1];
var dstTz = args[2];
@MarkPflug
MarkPflug / example.cs
Created January 5, 2024 16:05
CsvPostgresBulkInsert
using Npgsql;
using NpgsqlTypes;
using Sylvan.Data.Csv;
using System.Collections.ObjectModel;
using System.Data.Common;
class Program
{
static async Task Main()
{
@MarkPflug
MarkPflug / CsvValidate.cs
Last active October 30, 2023 18:30
CSV Parser Validation
using CsvHelper;
using nietras.SeparatedValues;
using RecordParser.Extensions;
using Sylvan.Data;
using Sylvan.Data.Csv;
using System.Globalization;
using System.Runtime.CompilerServices;
var tw = new StringWriter();
tw.WriteLine("A,B,C,D");
This file has been truncated, but you can view the full file.
AA
AAH
AAHED
AAHING
AAHS
AAL
AALII
AALIIS
AALS
@MarkPflug
MarkPflug / MacOSTextReader.cs
Last active May 4, 2023 15:41
MacOSTextReader
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
sealed class MacOSTextReader : TextReader
{
readonly TextReader inner;
public MacOSTextReader(TextReader inner)
// this is a reworking of the CsvFileResult code posted to the CSharp Reddit:
// https://www.reddit.com/r/csharp/comments/12sip6r/oom_on_custom_fileresult_streaming_from_queryable/
using Microsoft.AspNetCore.Mvc;
using System.Reflection;
public class CSVFileResult<T> : FileResult where T : class
{
private readonly IQueryable<T> _data;