Skip to content

Instantly share code, notes, and snippets.

@naosim
naosim / analizeJava.js
Created March 7, 2023 13:41
Javaのファイルを漁ってクラス構成を分析する
/*
Javaのファイルを漁ってクラス構成を分析する
---
# 実行環境 node.js
古いバージョンでも動くようにする。モダンな書き方はアロー式を使う程度にする
# 出力形式
[
{
filePath: string,
@naosim
naosim / convertToMarkdown.mjs
Created March 3, 2023 05:37
ConvertToMarkdown
function tableToMarkdown(table) {
var lines = [
['カラム名', '型', 'PK', 'UNIQUE', 'NOT NULL', '備考'],
];
lines.push(new Array(lines[0].length).fill('---'));
// if(table.tableNameComment.length > 0) {
// lines = [table.tableNameComment, ...lines];
// }
table.columns
.map(v => [v.columnName, v.type, v.isPk ? '◯' : '', v.isUnique ? '◯' : '', v.isNotNull ? '◯' : '', v.comment])
@naosim
naosim / gasToMisskey.js
Created March 1, 2023 09:20
GoogleAppsScriptでMisskeyに投稿する
/**
* @param {string} text
* @param { {server: string, token: string} } options options.serverはたとえば"misskey.io"
*/
function postToMisskey(text, options) {
return UrlFetchApp.fetch(
`https://${options.server}/api/notes/create`,
{
'method': 'POST',
'headers' : {'Content-Type': 'application/json'},
<!DOCTYPE html>
<meta charset="utf-8" />
<!-- tinytestをGitHub Pagesにホスト -->
<script src="https://naosim.github.io/jstinytest/tinytest.js"></script>
<h1>test</h1>
<script>
// product code
function add(a, b) {
@naosim
naosim / insertTodaysTitle.js
Created February 11, 2023 15:06
markdownに今日の日付のタイトル(H1)をいれる
/**
*
* @param {string} markdownText
* @param {Date} now
*/
function insertTodaysTitle(markdownText, now) {
markdownText = markdownText.trim();
const firstLine = markdownText.split("\n")[0].trim();
const zerofill2 = (num) => ("0" + num).slice(-2);
@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) {