Skip to content

Instantly share code, notes, and snippets.

@naosim
naosim / analizeJava.js
Created November 21, 2022 21:45
javaのソースコードを解析する
/*
Javaのファイルを漁ってクラス構成を分析する
---
# 実行環境 node.js
古いバージョンでも動くようにする。モダンな書き方はアロー式を使う程度にする
# 使い方
- ROOT_PATHを決める
- node analizeJava.js
@naosim
naosim / techplaylink.js
Created January 15, 2022 08:20
TechPlayから勉強会の情報を抜き取る
@naosim
naosim / JsonTable.js
Created October 31, 2021 06:28
簡易テーブル
class JsonTable {
constructor(data = {}, isSafetyMode = true) {
this.data = data;
this.isSafetyMode = isSafetyMode;
}
insert(id, obj) {
if(this.data[id]) {
throw new Error(`IDがすでに存在する: ${id}`);
}
this.data[id] = this.copyIfNeeded(obj)
@naosim
naosim / LocalFileJsonRepository.js
Last active October 31, 2021 06:31
FileSystemAccessAPIを使ってJSONの読み書きをする
class LocalFileJsonRepository {
constructor(fileHandle = null) {
this.fileHandle = fileHandle;
}
async init() {
if(this.fileHandle) {
return;
}
[this.fileHandle] = await window.showOpenFilePicker();
}
@naosim
naosim / ChatWorkClient.js
Created May 11, 2021 20:17
GAS用チャットワーククライアント
/**
* 内部でUrlFetchAppを使っています
*/
class ChatWorkClient {
constructor(token) {
this.token = token;
this.baseUrl = 'https://api.chatwork.com/v2';
this.header = { 'X-ChatWorkToken' : token };
}
postMessage(roomId, message) {
@naosim
naosim / ApiEndPointAnalyzer.java
Last active February 20, 2021 23:48
Springフレームワークのエンドポイントを取得する 開発ドキュメント作成用ツール
import org.assertj.core.api.exception.RuntimeIOException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
import org.springframework.core.type.filter.RegexPatternTypeFilter;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
@naosim
naosim / deno-reversi-logic.ts
Last active August 4, 2020 23:23
deno-reversi-logic.ts
import * as board2d from 'https://raw.githubusercontent.com/naosim/deno-board2d/v1.2.0/src/mod.ts';
export {
Board,
BoardMutable,
Pos,
Direction,
X,
Y
} from 'https://raw.githubusercontent.com/naosim/deno-board2d/v1.2.0/src/mod.ts';
@naosim
naosim / othello1d_a.html
Last active May 1, 2020 21:20
1次元オセロのお題
<!DOCTYPE html>
<meta charset="utf-8" />
<script>
/**
* 1次元オセロの盤面に白の石を置く
*
* - 盤は配列で表現する
* - 白の石は'白'
* - 黒の石は'黒'
* - 空の場所はnull
@naosim
naosim / index.html
Created February 29, 2020 23:53
20200301 frappe-ganttつかってみた
<!DOCTYPE html>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/frappe-gantt/0.3.0/frappe-gantt.min.css"></link>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.5.1/snap.svg-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/frappe-gantt/0.3.0/frappe-gantt.min.js"></script>
<svg id="gantt"></svg>
<script>
@naosim
naosim / toEntities.js
Created November 25, 2019 12:26
スプレッドシートの2次元配列をエンティティの配列に変換する
/**
* スプレッドシートの2次元配列をエンティティの配列に変換する
* - 2次元配列は0番目はヘッダー(カラム名の配列)行、1番目以降にデータが並んでいること
* - ヘッダー行のカラム名は空でないこと
* - カラム名は値の最初の行だけ採用される 例: "身長\n[cm]" → カラム名は"身長"になる
* @param {[['name', 'age'], ['mike', 30]]} ary2d - スプレッドシートのような2次元配列
* @return 例: [{name:"mike", age:30}, {name:"jiro", age:40}]
*/
function toEntities(ary2d) {
var headers = ary2d[0]