Skip to content

Instantly share code, notes, and snippets.

View kana's full-sized avatar

Kana Natsuno kana

View GitHub Profile
@kana
kana / algorithm comparison.md
Last active September 10, 2019 08:02
Hatokura random sampling memo
Algorithm Card set Times Elapsed Note
A-Res FG only 100k 18,741ms Acceptable speed for small card set
A-Chao FG only 100k 8,561ms Broken probability
Uniform FG only 100k 8,145ms Current implementation
A-Chao All 100k 11,215ms Broken probability
Uniform All 100k 11,774ms Current implementation
A-Res / sort All 100k 163,021ms Simple implementation but heavy
A-Res / heap(A) All 100k 31,068ms Push all cards then pop N cards
A-Res / heap(W) All 100k 23,028ms The same as described in Wikipedia
@kana
kana / nes-ize
Created May 23, 2019 13:50
NES-ish image color reduction
#!/bin/bash
if ! [ "$#" = 1 ]
then
echo "Usage: $0 FILE"
exit 1
fi
d="$(identify "$1" | cut -d' ' -f3)"
width="${d/x*/}"
@kana
kana / t-right-to-left-2-up.sh
Last active May 15, 2019 12:36
Rearrange PDF pages
# Original PDF:
# 1. Front cover
# 2. content 1
# 3. content 2
# 4. ...
# 5. content -2
# 6. content -1
# 7. Back cover
#
# Resulting PDF:
aaa
const bodyParser = require('body-parser')
const express = require('express')
const moment = require('moment-timezone')
const slack = require('slack')
const VERIFICATION_TOKEN = process.env.VERIFICATION_TOKEN
const OAUTH_ACCESS_TOKEN = process.env.OAUTH_ACCESS_TOKEN
const app = express()
@kana
kana / nicegif
Created December 19, 2017 09:41
#!/bin/bash
colors=256
fps=30
half=
while true
do
case "$1" in
'-c')
<?php
$a = 1;
debug_zval_dump($a);
//==> long(1) refcount(2)
// Novice: Huh? Why is refcount 2? The value is only pointed by $a, so refcount must be 1!
// Tatsujin: PHP uses copy-on-write. The value is passed by value to debug_zval_dump.
// It doesn't modify the passed value. The value is shared by $a and debug_zval_dump.
// Therefore refcount is 2.
@kana
kana / tomodachi.php
Created August 17, 2017 12:28
Don't confuse PHP & reference with other languages' reference.
<?php
function test_copy_on_write()
{
print "test_copy_on_write\n";
$a = 100;
xdebug_debug_zval('a');
//==> a: (refcount=1, is_ref=0)=100
function! s:_GetCwordStartPos()
let cword = expand('<cword>')
let cword_pattern = '\V' . escape(cword, '\')
let cword_end_pos = searchpos(cword_pattern, 'ceW', line('.'))
let cword_start_pos = searchpos(cword_pattern, 'bcW', line('.'))
return cword_start_pos
endfunction
function! s:GuessClassName()
let cursor_pos = getpos('.')
var mapped = gearSets.map(function (gearSet, i) {
var countMap = JSON.parse(JSON.stringify(required.countMap));
return {
index: i,
value: [
gearSet.shoes === anyGear ? 1 : 2,
gearSet.clothing === anyGear ? 1 : 2,
gearSet.headgear === anyGear ? 1 : 2,
countMap[gearSet.headgear.main]-- > 0 ? 1 : 2,