Skip to content

Instantly share code, notes, and snippets.

Yuta Okamoto okapies

Block or report user

Report or block okapies

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@okapies
okapies / CachedContext.js
Last active May 29, 2020
A custom React Context persisting its state to localStorage
View CachedContext.js
// The original idea comes from a post by Alex Krush.
// https://medium.com/@akrush95/global-cached-state-in-react-using-hooks-context-and-local-storage-166eacf8ab46
import React, { useCallback, useEffect, useReducer, useRef } from 'react';
export const createCachedContext = ({ storageKey, defaultValue }) => {
const initializer = (initialState) => {
const localState = localStorage.getItem(storageKey);
if (localState) {
try {
@okapies
okapies / INSTALL.md
Last active Apr 6, 2020
How to install akvcam on Ubuntu 18.04
View INSTALL.md

Install DKMS

$ apt install dkms

Prepare for signing kernel modules

TODO

Install

Download the source code.

@okapies
okapies / csg_to_dxf.py
Last active Aug 30, 2019
A converter script from OpenSCAD's .csg or .scad to .dxf using FreeCAD
View csg_to_dxf.py
# -*- coding: utf-8 -*-
import FreeCAD
import importCSG
import importDXF
def csg_to_dxf(src, dst):
doc = importCSG.open(src)
importDXF.export([doc.TopologicalSortedObjects[0]], dst) # assumes it has single root object
FreeCAD.closeDocument(doc.Name)
@okapies
okapies / train_mnist_logreport.py
Created Jun 12, 2019
A customized train_mnist example to measure the performance of extension
View train_mnist_logreport.py
#!/usr/bin/env python
import argparse
import chainer
import chainer.functions as F
import chainer.links as L
from chainer import training
from chainer.training import extensions
import numpy as np
@okapies
okapies / np_array_order.py
Last active Mar 20, 2019
How `numpy.array(order='F')` works
View np_array_order.py
>>> np.array([[[0, 4], [2, 6]], [[1, 5], [3, 7]]], dtype='b')
array([[[0, 4],
[2, 6]],
[[1, 5],
[3, 7]]], dtype=int8)
>>> ctypes.string_at(np.array([[[0, 4], [2, 6]], [[1, 5], [3, 7]]], dtype='b').ctypes.data, 8) # .data.tobytes() doesn't work properly
b'\x00\x04\x02\x06\x01\x05\x03\x07'
>>> np.array([[[0, 4], [2, 6]], [[1, 5], [3, 7]]], dtype='b').__array_interface__
{'data': (23426096, False), 'strides': None, 'descr': [('', '|i1')], 'typestr': '|i1', 'shape': (2, 2, 2), 'version': 3}
>>> np.array([[[0, 4], [2, 6]], [[1, 5], [3, 7]]], dtype='b').flags
@okapies
okapies / xp_nested_array-usage.md
Last active Jun 12, 2019
A performance evaluation of creating a (numpy|cupy) array from nested arrays
View xp_nested_array-usage.md
$ python xp_nested_array.py --src-xp numpy --dst-xp numpy --shape "(3, 224, 224)" --batch-size 10
Shape: (3, 224, 224)
Batch size: 10
Running numpy.array(<List[numpy.ndarray]>) in 10000 times...
3.857709832955152
@okapies
okapies / keymap.c
Last active Feb 16, 2020
ErgoDash keymap implementing “correct” dual role RAISE/LOWER keys without `LT` advanced keycode
View keymap.c
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
#define _QWERTY 0
#define _LOWER 1
#define _RAISE 2
#define _ADJUST 16
enum custom_keycodes {
@okapies
okapies / perf_chx_take.py
Last active Feb 12, 2019
Benchmark script for `ndarray.take` in ChainerX
View perf_chx_take.py
import argparse
import timeit
parser = argparse.ArgumentParser()
parser.add_argument('--number', type=int, default=20)
parser.add_argument('--device', type=str, default="native:0")
parser.add_argument('--batch-size', type=int, default=1)
parser.add_argument('--indices', choices=['list', 'numpy', 'chainerx'])
parser.add_argument('--data', default='mnist', help='Path to the directory that contains MNIST dataset')
args = parser.parse_args()
@okapies
okapies / perf_variable.py
Last active Jan 21, 2019
Benchmark script for `Variable` in Chainer
View perf_variable.py
import argparse
import timeit
parser = argparse.ArgumentParser()
parser.add_argument('--number', type=int, default=10000000)
parser.add_argument('--device', type=str, default="native:0")
parser.add_argument('--variables', type=int, default=1)
parser.add_argument('--require-grad', action="store_true", default=False)
parser.add_argument('--batch-size', type=int, default=1)
parser.add_argument('--unsafe', action="store_true", default=False)
@okapies
okapies / perf_extract_apply_in_data.py
Last active Jan 17, 2019
Benchmarking for `_extract_apply_in_data` in Chainer's `function_node`
View perf_extract_apply_in_data.py
import argparse
import timeit
parser = argparse.ArgumentParser()
parser.add_argument('--number', type=int, default=10000000)
parser.add_argument('--device', type=str, default="native:0")
parser.add_argument('--nargs', type=int, default=2)
parser.add_argument('--wrap-variable', action='store_true', default=False)
parser.add_argument('--batch-size', type=int, default=1)
args = parser.parse_args()
You can’t perform that action at this time.