Skip to content

Instantly share code, notes, and snippets.

View tamanobi's full-sized avatar

Kohki YAMAGIWA tamanobi

View GitHub Profile
function getHeaders(sheet) {
var last_col = sheet.getLastColumn();
var range = sheet.getRange(1, 1, 1, last_col);
var headers = range.getValues();
return headers[0];
}
function getColumnNumByHeader(sheet, header) {
var n = getHeaders(sheet).indexOf(header);
if (n < 0) {
throw Error("ヘッダーが見つからなかった");
@tamanobi
tamanobi / go.mod
Created July 1, 2020 03:43
goqueryの使い方を教えるためのスニペット
module goquerytrial
go 1.14
require github.com/PuerkitoBio/goquery v1.5.1
@tamanobi
tamanobi / matmu.py
Created April 13, 2020 01:29
行列と行列の積
from typing import List, Union
import unittest
from operator import mul
Matrix = List[List[Union[int, float]]]
def matmul(mat1: Matrix, mat2: Matrix) -> Matrix:
return [[sum(map(mul, row, column)) for column in zip(*mat2)] for row in mat1]
@tamanobi
tamanobi / get_predictor.py
Last active November 20, 2019 14:11
AWS SageMakerをローカルで使うときに便利なスクリプト
from sagemaker.estimator import Estimator
from sagemaker.predictor import RealTimePredictor
def get_predictor(training_job_name: str) -> RealTimePredictor:
"""
ジョブ名から RealTimePredictor を取得して返す
すでに訓練ジョブ名と同名のエンドポイントがある場合には、エンドポイントから RealTimePredictor を返す
Args:
@tamanobi
tamanobi / di.go
Last active November 15, 2019 02:26
依存を注入できるようにしてテストする
package di
import (
"fmt"
"time"
)
func Hogehoge(fn func()) error {
// Do something(Heavy process)
time.Sleep(2 * time.Second)
@tamanobi
tamanobi / deployment.yml
Created October 9, 2019 17:31
Cloud VS Code.
apiVersion: v1
kind: ConfigMap
metadata:
name: vscode-settings-configmap
data:
settings.json: |
{
"terminal.integrated.shell.linux": "/bin/bash"
}
@tamanobi
tamanobi / enlarging-pixiv-discovery.js
Last active September 24, 2019 04:12
pixivのdiscoveryをより快適に楽しむ。このコードを使うときは連絡をください。
let backgroundImageToUrl = bgImage => {
const url = bgImage.replace('url(', '').replace(')','').replace(';','').replace('"','').replace('"','');
return url.replace(/c\/[^/]+\//,'');
}
let setupEnlarging = (btn, panel) => {
document.getElementsByTagName('figure').forEach(figureElement => {
let imageContainer = Array.from(figureElement.getElementsByTagName('div')).filter(e => e.classList.length > 0 && e.style.backgroundImage)[0];
if (imageContainer) {
@tamanobi
tamanobi / train_test_split.py
Created March 7, 2019 16:34
ディレクトリに入ったjpg, xml, txtを一定の割合でtrain、testディレクトリに移動する(inspired by https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html)
# coding:utf-8
from pathlib import Path
import sys
import argparse
from shutil import move
import random
from logging import getLogger, DEBUG, INFO, StreamHandler
logger = getLogger(__name__)
logger.setLevel(level=DEBUG)
var a = Array.from(document.querySelectorAll("[aria-label='画像']"), x => {return x.querySelectorAll('[style*="background-image"]')});
a.forEach(x => {var s = `[style*='${x[0].style.cssText}']`;var y = document.querySelector(s);if(y){y.style.cssText += "background-size: contain;";y.parentNode.style.cssText = "margin-bottom:auto;"}});
// Array.from(document.querySelectorAll('[style="padding-bottom: 56.25%;"]'),x => x.style);
var c = document.querySelectorAll('[style="padding-bottom: 56.25%;"]');
console.log(c.length);
var d = document.getElementsByClassName(c[0].className);
var e = Array.from(d).filter(x => {return x.className === c[0].className && x.style.cssText === "padding-bottom: 56.25%;";});
e.forEach(x => {x.style.cssText = "padding-bottom: 100%;"});
@tamanobi
tamanobi / 2019-02-20.als
Last active February 20, 2019 11:59
alloy handson
abstract sig Object {}
sig File extends Object {
}
sig Directory extends Object {
children: Object
}
// 親オブジェクトは高々一つしかない
fact singleParent {
all x : Object | lone children.x