Skip to content

Instantly share code, notes, and snippets.

@GeeLaw
GeeLaw / puzzle.cs
Created September 1, 2023 23:20
`int[]` is `int[*]`, and the constructor of `int[*]` could create an instance of type `int[]`.
View puzzle.cs
/* https://twitter.com/geelaw95/status/1697748857541800366
Copyright (c) 2023 Ji Luo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
@GeeLaw
GeeLaw / CopyLocalLink.vba
Created May 9, 2021 16:01
Outlook local links
View CopyLocalLink.vba
@GeeLaw
GeeLaw / onedrive-bug-report.md
Created April 29, 2021 10:41
Bug in Cloud Filer / Placeholder / Reparse Point Disguising / OneDrive sync engine
View onedrive-bug-report.md

Bug in Cloud Filer / Placeholder / Reparse Point Disguising / OneDrive sync engine

Starting from an unknown version of Windows 10, programs can no longer access dehydrated (online-only, placeholder) files with CreateFile(Ex) normally.

Consider the following excerpt:

// By default (if the program does not have a manifest, so it runs in Windows Vista mode),
// RtlQueryProcessPlaceholderCompatibilityMode returns PHCM_DISGUISE_PLACEHOLDER, and
// RtlQueryThreadPlaceholderCompatibilityMode returns PHCM_APPLICATION_DEFAULT.
@GeeLaw
GeeLaw / CreateAppointmentFromMessage.vb
Created October 16, 2020 11:13
Outlook macro: Create appointment from e-mail.
View CreateAppointmentFromMessage.vb
Option Explicit
Sub CreateAppointmentFromMessage()
Dim activeWin As Object
Dim targetItem As Object
Dim targetMsg As MailItem
Dim targetFolder As Folder
Dim newAppointment As AppointmentItem
Dim msgInspector As Inspector
@GeeLaw
GeeLaw / CrtpBenchmark.cs
Created October 4, 2020 15:35
CRTP benchmark (C#)
View CrtpBenchmark.cs
/**** Benchmarking CRTP without virtual dispatch in C#.
See https://geelaw.blog/entries/csharp-crtp-static-polymorphism-friendship/
Results on my Surface Book 2:
| milliseconds | struct, non-virtual | struct, virtual | virtual |
| :----------: | :-----------------: | :-------------: | :-----: |
| x86 Core 3.1 | 1065 | 1405 | 1431 |
| x64 Core 3.1 | 1015 | 1371 | 1418 |
| x86 Fx 4.7.2 | 1160 | 1501 | 1490 |
@GeeLaw
GeeLaw / Program.cs
Created August 11, 2020 12:10
`IEnumerable<T, TEnumerator>` for more precise type propagation in C♯ generics.
View Program.cs
/* See https://geelaw.blog/entries/csharp-generics-duck-typing/ for the context.
Copyright (c) 2020 by Gee Law
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the “Software”),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom
the Software is furnished to do so, subject to the following conditions:
@GeeLaw
GeeLaw / trackfocus.cc
Created March 31, 2020 00:23
Track the focus of Windows using UI Automation.
View trackfocus.cc
/*
Copyright (c) 2020 by Gee Law
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
@GeeLaw
GeeLaw / gnfa2.cpp
Created August 22, 2019 06:09
Creates a regular expression that accepts strings of length at least 15 that have a digit, a lowercase letter, an uppercase letter and a special character.
View gnfa2.cpp
// gnfa.cpp
// Copyright 2019 by Gee Law.
// Forked from https://gist.github.com/GeeLaw/be3aec94a6ba7c3817ef2e16d261f616
// Licensed under the MIT license.
#include<cstdio>
#include<vector>
#include<map>
template <typename TDerived, typename TBase>
@GeeLaw
GeeLaw / Move-PhotosInteractively.ps1
Created May 21, 2019 08:17
Photo organizer (V2EX 566127)
View Move-PhotosInteractively.ps1
& {
$source = '~\Documents\Playground\MovePhotos'
$destinations = @(
'~\Documents\Playground\MovePhotos\Category1',
'~\Documents\Playground\MovePhotos\Category2',
'~\Documents\Playground\MovePhotos\Category3'
)
$destinationNames = @(
'Category1',
@GeeLaw
GeeLaw / gnfa.cpp
Created December 29, 2018 03:09
Playing with generalized NFA. The program gets a positive number as input, and outputs a regular expression that matches positive decimal integer without leading zeros that is a multiple of the input number.
View gnfa.cpp
// gnfa.cpp
// Copyright 2018 by Gee Law.
// Licensed under the MIT license.
#include<cstdio>
#include<vector>
#include<map>
// #define DEBUG_ONLY(t) do { t; } while (false)
#define DEBUG_ONLY(t) do { } while (false)