Skip to content

Instantly share code, notes, and snippets.

@tmrtmhr
tmrtmhr / unmarshal-to-interface.go
Last active April 16, 2017 05:51
interface{} に json.Unmarshal したデータとリテラルとして用意したデータとで数値の型が異なるため比較が失敗する例
package main
import (
"encoding/json"
"fmt"
"reflect"
)
func main() {
var got []interface{}
@tmrtmhr
tmrtmhr / drag-and-drop-using-rxjs.js
Last active April 4, 2017 08:16
ウィンドウ外での mouseup を捕捉して D&D を終了する例(Rxjs5)
function setupDragAndDrop() {
var containerElem = $(window);
var targetElem = $('#dnd-target');
var mouseDownStream = Rx.Observable.fromEvent(targetElem, 'mousedown');
var mouseUpStream = Rx.Observable.fromEvent(targetElem, 'mouseup');
var targetStartPos = targetElem.position();
// 終了条件を表すストリーム
var terminateDndStream = Rx.Observable.merge(
@tmrtmhr
tmrtmhr / type-alias.go
Created April 3, 2017 08:27
型に別名をつけることで取り違えを防ぐ
package main
type Lat float64
type Lon float64
func f(lat Lat, lon Lon) {
}
func main() {
var lat Lat = 1.0
@tmrtmhr
tmrtmhr / sum-type.go
Created March 29, 2017 13:30
Go言語で直和型みたいなことを表現する例
package main
import (
"fmt"
)
type Tree interface {
Count() int
}
@tmrtmhr
tmrtmhr / aws_lambda_extract_gziped_binary.js
Last active April 11, 2017 12:22
DynamoDBに入れた gzip バイナリを展開する例(Node.js 6.10)
'use strict';
var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB.DocumentClient();
var zlib = require('zlib');
exports.handler = (event, context, callback) => {
var params = {
TableName: 'dynamodb_table_name',
Key: {
@tmrtmhr
tmrtmhr / typeOfLiteral.go
Last active March 15, 2017 06:06
GO言語(golang)における各リテラルの型を表示する
package main
import (
"fmt"
)
func main() {
fmt.Printf("%T\n", 123) // 整数リテラル
fmt.Printf("%T\n", 123.0) // 浮動小数リテラル
fmt.Printf("%T\n", "文字列") // 文字列リテラル
fmt.Printf("%T\n", 'ä') // ルーンリテラル
@tmrtmhr
tmrtmhr / filljson.js
Last active March 9, 2017 10:06
標準入力から読み込んだJSONの、第二引数で指定したキーパスに、第三引数ファイルの内容を第一引数のデータ型とみなしてはめこむ
#!/usr/bin/env node
/*
* Usage: ./filljson.js valueType <template.json "path.to.target" <(some command)
* valueType: [string] string int float
*/
var fs = require('fs');
var valueType = process.argv[2]
var paths = process.argv[3].split('.');
@tmrtmhr
tmrtmhr / md-icon.html
Created March 7, 2017 05:46
Hugo でマテリアルアイコンを使うための ShortCode (Usage: {{< md-icon arrow_forward >}} )
<i class="material-icons" style="vertical-align: bottom;">
{{ .Get 0 }}
</i>
@tmrtmhr
tmrtmhr / js-metrics.sh
Last active November 13, 2015 01:28
Emacs から外部プログラムを呼び出し、結果をエコーエリアに表示する(例:JavaScript のソフトウェアメトリクス)
#!/bin/sh
TMPFILE=/tmp/js-metrics.js
REPORT_DIR=/tmp
cat - > ${TMPFILE}
plato -d ${REPORT_DIR} ${TMPFILE} > /dev/null
grep 'class="stat"' ${REPORT_DIR}/index.html | tail -n 1 | sed -e "s/<p class=\"stat\">//g" | sed -e "s/<\/p>//g" | sed -e "s/ //g" | tr -d '\n'