Skip to content

Instantly share code, notes, and snippets.

View ttsuki's full-sized avatar
🫖
418 I'm a teapot

ttsuki ttsuki

🫖
418 I'm a teapot
View GitHub Profile
@ttsuki
ttsuki / array_gcdlcm.php
Created November 14, 2023 14:29
array_gcd, array_lcm (PHP)
<?php
function array_gcd(array $arr): int
{
return array_reduce($arr, function (int $a, int $b): int {
while ($b) {
$r = $a % $b;
$a = $b;
$b = $r;
}
@ttsuki
ttsuki / weighted_random_choice.cpp
Last active November 13, 2023 19:15
Walker's Alias Method (C++)
// Walker's Alias Method (C++)
#include <utility>
#include <initializer_list>
#include <vector>
#include <random>
#include <stdexcept>
template <class Label, class Probability = size_t>
class weighted_random_choice // implements Walker's Alias Method
@ttsuki
ttsuki / coro_task.h
Last active August 20, 2023 21:47
a study of C++ coroutine task system
// coro_task: A study of C++20 co-routine task system
#pragma once
#include <array>
#include <coroutine>
#include <utility>
#include <future>
#include <optional>
#include <stack>
@ttsuki
ttsuki / JavaScript 非同期処理.md
Created May 9, 2023 15:21
今まで、fetchとかthenとか、他のコードみて雰囲気で使ってたけど、つまるところ、何がどうなってるのか、ざっくりわかっておきたくなったので、今更ながらちょっと勉強した、その備忘メモ。

今まで、fetchとかthenとか、他のコードみて雰囲気で使ってたけど、つまるところ、何がどうなってるのか、ざっくりわかっておきたくなったので、今更ながらちょっと勉強した、その備忘メモ。

JavaScript 非同期処理

JavaScriptはシングルスレッドだけど非同期実行の仕組みがある。 古くは setTimeout だけど、今はPromiseThenableなる概念があって、 fetch() とかがこれで実装されている。

PromiseThenable

MDNでは、ある非同期処理Promiseは「待機 (pending) 」「履行 (fulfilled)」「拒否(rejected)」のいずれかの状態を持つと説明される。

@ttsuki
ttsuki / .vimrc
Last active August 16, 2023 00:47
syntax on
set nocompatible
set number
set wildmenu
set wildmode=full
set mouse=a
set laststatus=2
set incsearch
set hlsearch
set showcmd
@ttsuki
ttsuki / CC0.ja.md
Last active July 6, 2022 15:13
CC0.md

CC0 1.0 全世界

クリエイティブ・コモンズは法律事務所ではなく、法律業務を提供するものではあり
ません。 この文書の配布は、法律家と依頼者の関係性を形成するものではありませ
ん。クリエイティブ・コモンズは、この情報を現状有姿の状態で提供します。 クリ
エイティブ・コモンズは、この文書の利用、もしくはこの文書の下に提供される情報
又は作品に関し、いかなる保証も行わず、この文書もしくはこの文書の下に提供され
る情報又は作品の利用の結果生じた損害に関するいかなる責任も負いません。

目的の説明

@ttsuki
ttsuki / WrapMemFuncAsRawFunctionPointer.hpp
Last active January 26, 2021 20:04
WrapMemFuncAsRawFunctionPointer
#include <utility>
namespace detail
{
enum struct CallConv
{
Cdecl,
StdCall,
};
@ttsuki
ttsuki / memo.txt
Created May 20, 2020 07:08
WinMerge の オプション 私家版
3-pane merge (左が手元、中がマージ先、右が相手: 中は共通祖先からWinMergeでオートマージしたもの)
winmerge.exe -e -r -u -x -dl "LOCAL" "$LOCAL" -wl -dm "MERGED" "$BASE" -am -dr "REMOTE" "$REMOTE" -wr -o "$MERGED"
2-pane diff (左が相手、右が手元: 大抵は手元のほうが新しいのでこの並び)
winmerge.exe -e -r -u -x -wl -dl "$REMOTE" "$REMOTE" -dr "$LOCAL" "$LOCAL"
$LOCAL 手元
$REMOTE 相手
$BASE 共通祖先
$MERGE マージ先ファイル
template<typename T, std::enable_if_t<std::is_array_v<T>, std::nullptr_t> = nullptr>
struct arrayInfo
{
using element_t = typename std::remove_reference<decltype(*std::begin(std::declval<T&>()))>::type;
static constexpr size_t length = sizeof(T) / sizeof(element_t);
using asStdArray = std::array<element_t, length>;
};
template<class T>
using stdArrayOf = typename arrayInfo<T>::asStdArray;
@ttsuki
ttsuki / .tmux.conf
Last active August 12, 2022 02:22
ttsuki's .tmux.conf
#
# ttsuki's .tmux.conf
#
# Change prefix key to <C-a> from default <C-b>
unbind C-b # Unbind default prefix key <C-b>
set -g prefix C-a # Assign <C-a> as prefix key
set -g base-index 1 # 1-origin window index
setw -g pane-base-index 1 # 1-origin pane index