Skip to content

Instantly share code, notes, and snippets.

View asmichi's full-sized avatar

asmichi asmichi

View GitHub Profile
@asmichi
asmichi / Program.cs
Last active September 22, 2018 13:19
System.Diagnostics.Process と Asmichi.ProcessPipeline の比較
// Visit https://github.com/asmichi/ProcessPipeline
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Asmichi.Utilities.ProcessManagement;
@asmichi
asmichi / Console.md
Last active November 6, 2018 13:26
ビルド時に既存 csproj にターゲットを注入する

NuGet がそうしているように、こうすると任意の .targets ファイルをインポートさせることができる。 旧形式と SDK style の両対応するには CustomAfterMicrosoftCommonCrossTargetingTargets CustomAfterMicrosoftCommonTargets の両方のプロパティを設定する必要がある。

msbuild c:\home\github\ProcessPipeline\src\ProcessPipeline\ProcessPipeline.csproj ^
  /p:CustomAfterMicrosoftCommonCrossTargetingTargets="C:\home\playground\DumpCompileItems.targets" ^
  /p:CustomAfterMicrosoftCommonTargets="C:\home\playground\DumpCompileItems.targets" ^
  /p:TargetFramework=net461 /t:DumpCompileItems
@asmichi
asmichi / SlowVirtualQueryOnCFGRegion.cpp
Last active November 10, 2018 18:40
Control Flow Guard 有効なプロセスに VirtualQueryEx しに行くと ms 単位で時間がかかる領域がある(Windows 10 1809 では直っているようだ)
#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
#include <Windows.h>
#include <cstdio>
#include <cstdlib>
#include <ratio>
#include <chrono>
namespace
@asmichi
asmichi / ForegroundThreadHell.cs
Created January 7, 2019 12:16
Environment.Exit とエントリポイント関数の return とフォアグラウンドスレッドと。
using System;
using System.Diagnostics;
using System.Threading;
// https://docs.microsoft.com/en-us/dotnet/standard/threading/foreground-and-background-threads
// https://docs.microsoft.com/en-us/dotnet/api/system.environment.exit
namespace ConsoleApp1
{
internal static class Program
@asmichi
asmichi / SeparateLocalFuncScope.cs
Last active January 25, 2019 13:18
Separate declaration scopes for local functions
// Copyright 2019 @asmichi (on github). Licensed under the MIT License.
using System;
using System.Linq;
// Requires C# 8.0
namespace ConsoleApp
{
class Program
{
@asmichi
asmichi / ChildAutoReaper.c
Created February 2, 2019 11:21
What happens when you perform waitpid(-1, ...)?
#define _GNU_SOURCE
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <errno.h>
#include <stdbool.h>
#include <memory.h>
@asmichi
asmichi / Makefile
Last active June 15, 2020 03:32
order-only prerequisites の使用例: 自動生成されるヘッダファイル
# order-only prerequisites の使用例: 自動生成されるヘッダファイル
# https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html#Prerequisite-Types
all: app
PROTO_SRCS = foo.proto bar.proto
CC_SRCS = app.cc foo.pb.cc bar.pb.cc
CC_OBJS = $(CC_SRCS:.cc=.o)
-include $(PROTO_SRCS:.proto=.proto.d)
@asmichi
asmichi / SCM_RIGHTS.cpp
Last active January 30, 2021 13:47
Sending file descriptors through domain sockets
#include <cassert>
#include <cstdio>
#include <cstdio>
#include <cstring>
#include <sys/socket.h>
#include <unistd.h>
constexpr int SocketMaxFdsPerCall = 1;
struct CmsgFds
@asmichi
asmichi / UpdateAllVisualStudioInstances.ps1
Created June 21, 2021 13:07
Update all Visual Studio instances
# すべての Visual Studio インスタンスを更新する。管理者権限で実行する。
#Requires -Version 7.0
$vswhere = "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"
$vs_installer = "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe"
$instances = & $vswhere -prerelease -format json -sort | ConvertFrom-Json
# 古いバージョンから更新する
[array]::Reverse($instances)
@asmichi
asmichi / AbuseImprovedStringInterpolation.cs
Last active August 11, 2021 10:50
Improved Interpolated Strings を濫用して、 string 以外の結果を生成してみる
// Improved Interpolated Strings を濫用して、 string 以外の結果を生成してみる。
using System.Runtime.CompilerServices;
using System.Text;
/*
args[0] = C:\Program Files\dotnet\dotnet.exe
args[1] = build
args[2] = Sugoi App\Sugoi App.sln
args[3] = --nologo