Skip to content

Instantly share code, notes, and snippets.

View sayurin's full-sized avatar

Kurata Sayuri sayurin

  • Japan
  • 20:50 (UTC +09:00)
View GitHub Profile
#include <type_traits>
template<typename Interface>
struct vtable{
typedef typename std::remove_pointer_t<decltype(Interface::lpVtbl)> type;
};
template<typename Interface>
using vtable_t = typename Vtable<Interface>::type;
open System.Text.RegularExpressions
let parse1 line =
// TODO: 先頭から解析できる範囲だけであり終端チェックはされていない
let matches = Regex.Matches(line, @"(?:^|\G,)(?<key>[^=,]+)=(?<val>[^=,]+)")
Array.init matches.Count (fun i -> matches.[i].Groups.["key"].Value, matches.[i].Groups.["val"].Value)
let parse2 line =
// TODO: 要素数0が認められない
let m = Regex.Match(line, "^(?<key1>[^=,]+)=(?<val1>[^=,]+)(?:,(?<key>[^=,]+)=(?<val>[^=,]+))*$")
@sayurin
sayurin / GridViewSort.cs
Created September 10, 2014 14:11
Automatically sort library for WPF ListView (GridView).
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Media;
namespace Sayuri.Windows {
public static class GridViewSort {
class SortIcon : Adorner {
@sayurin
sayurin / isoimage.cs
Last active September 21, 2022 07:56
ISO image creator
using System;
using System.Runtime.InteropServices;
using IMAPI2FS; // COM reference: Microsoft IMAPI2 File System Image Creator
using IStream = System.Runtime.InteropServices.ComTypes.IStream;
class IsoImage {
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode, PreserveSig = true)]
static extern void SHCreateStreamOnFile(string pszFile, uint grfMode, out IStream ppstm);
static void Main(string[] args) {
@sayurin
sayurin / TextBox2.cs
Created March 4, 2014 05:12
WinFormsのTextBoxでfocusを失う時にIMEへの入力文字を確定させる
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace Sayuri.Windows.Forms {
class TextBox2 : TextBox {
[DllImport("Imm32.dll")]
static extern IntPtr ImmGetContext(IntPtr hWnd);
[DllImport("Imm32.dll")]
static extern bool ImmGetOpenStatus(IntPtr hIMC);
#nowarn "9"
open System.Runtime.InteropServices
[<Struct; StructLayout(LayoutKind.Explicit)>]
type s =
[<DefaultValue; FieldOffset 0>]
val mutable y : uint32
[<DefaultValue; FieldOffset 0>]
val mutable x1 : byte
@sayurin
sayurin / merge.fsx
Created February 17, 2014 23:35
韓国ROの分割されたログイン背景を結合する
#r "System.Drawing.dll"
open System.Drawing
System.IO.Directory.EnumerateFiles "."
|> Seq.choose (fun path ->
let m = System.Text.RegularExpressions.Regex.Match(path, @"([^\\]+)(\d)-(\d)\.")
if not m.Success then None else
Some(m.Groups.[1].Value, int m.Groups.[3].Value, int m.Groups.[2].Value, new Bitmap(path)))
|> Seq.groupBy (fun (k, _, _, _) -> k)
|> Seq.iter (fun (k, seq) ->
let x, y = Seq.fold (fun (x0, y0) (_, x1, y1, _) -> (max x0 x1, max y0 y1)) (0, 0) seq
#r "System.Drawing.dll"
#r "System.Windows.Forms.dll"
open System.Drawing
open System.Windows.Forms
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault false
let form = new Form(ClientSize = Size(284, 261), Text = "ダイアログジェネレーター")
let caption = new TextBox(Location = Point(13, 13), Size = Size(259, 19), Anchor = (AnchorStyles.Top ||| AnchorStyles.Left ||| AnchorStyles.Right))
let text = new TextBox(Location = Point(13, 39), Size = Size(259, 133), Anchor = (AnchorStyles.Top ||| AnchorStyles.Left ||| AnchorStyles.Right), Multiline = true)
let combo = new ComboBox(Location = Point(13, 181), Size = Size(121, 20), DropDownStyle = ComboBoxStyle.DropDownList, FormattingEnabled = true)
namespace Sayuri
open System
open System.Net
open System.Security.Cryptography
open System.Text
type ParameterType =
| ProtocolString of string
| QueryString of string
| BodyString of string
#ifdef _MSC_VER
#define IO_H "io.h"
#define _CRT_NONSTDC_NO_WARNINGS
#define __attribute__(X)
#else
#define IO_H "unistd.h"
#define __pragma(X)
#define __declspec(X)
#define __fastcall
#endif