Skip to content

Instantly share code, notes, and snippets.

View tai2's full-sized avatar
🐢

Taiju Muto tai2

🐢
View GitHub Profile
@tai2
tai2 / upload.js
Created August 19, 2024 14:18
Upload file to giga便
const uuid = require("uuid");
const crypto = require("crypto");
const fs = require("fs");
const buffer = require('buffer');
const upload = async () => {
const id = crypto.randomBytes(16).toString("hex");
console.log('id', id)
const blob = new Blob(['hello there']);
import subprocess
from concurrent.futures import ThreadPoolExecutor, as_completed
def invoke_command():
subprocess.run(["sleep", "5"])
print("done")
def main():
@tai2
tai2 / a.ts
Created January 3, 2024 07:02
import {
DOMParser,
Element,
} from "https://deno.land/x/deno_dom/deno-dom-wasm.ts";
const doc = new DOMParser().parseFromString(
`
<h1>Hello World!</h1>
<p>Hello from <a href="https://deno.land/">Deno!</a></p>
`,
@tai2
tai2 / a.md
Last active October 20, 2023 05:45
-
Unified Tap
@tai2
tai2 / spacing_test.md
Created August 1, 2023 08:48
Spacing Test

800円以上で送料50円引き

@tai2
tai2 / how-to-review-purll-requests.md
Created September 8, 2022 07:09
プルリクエストレビューチェックリスト
  • 全体的な意図。なにをどうやって実現するのか(What, How)。
  • 変更の文脈、位置付け。なぜこの変更が必要なのか(Why)。
  • 複数の独立した問題が含まれているか
    • 含まれている場合、分割できないか検討する
  • 設計の誤りは影響が後を引く可能性があるので、なるべくちゃんと見ておきたい。とくに永続化されるデータ構造のミスは、リリースしてしまうと修正な面倒なので、注意する必要がある。例えば:
    • SQLアンチパターンに該当するようなテーブル設計になっている(実データが発生するとめんどう)
    • 本来別のAPIを新設すべきところを、既存APIへの追加パラメータで無理矢理処理している(修正される挙動への依存が増えるとめんどう)
    • 手続の種類が増えても修正不要なように書ける(一度書けば済む)のに、手続の数だけコード追加が必要な設計になっている(無駄な手数が増える)
  • 追加・変更される挙動について、テストケースが追加・変更されているか、テストケースの見出しレベルで簡単に見る
  • 特殊な理由のある変更など、コードだけから理解できなさそうな変更は、コメントに経緯が書かれているかを見る
@tai2
tai2 / appium_log.txt
Created August 11, 2022 04:27
Get Logs for appium-xcuitest-driver returns an empty array
yarn run v1.22.18
$ /Users/tai2/Sync/Code/myapp/node_modules/.bin/appium
[Appium] Welcome to Appium v1.22.3
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
[HTTP] --> POST /wd/hub/session
[HTTP] {"capabilities":{"alwaysMatch":{"platformName":"ios","platformVersion":"14.4","deviceName":"iPhone 12 Pro","app":"http://localhost:8081/app.zip","newCommandTimeout":1200,"language":"en","orientation":"PORTRAIT","noReset":true,"processArguments":{},"clearSystemFiles":false,"skipLogCapture":false},"firstMatch":[{}]},"desiredCapabilities":{"platformName":"ios","platformVersion":"14.4","deviceName":"iPhone 12 Pro","app":"http://localhost:8081/app.zip","newCommandTimeout":1200,"language":"en","orientation":"PORTRAIT","noReset":true,"processArguments":{},"clearSystemFiles":false,"skipLogCapture":false}}
[debug] [W3C] Calling AppiumDriver.createSession() with args: [{"platformName":"ios","platformVersion":"14.4","deviceName":"iPhone 12 Pro","app":"http://localhost:8081/app.zip","newCommandTimeout":1200,"
@tai2
tai2 / engineers_in_voyage.md
Last active August 11, 2022 03:45
「事業をエンジニアリングする技術者たち」読んだ。

「事業をエンジニアリングする技術者たち」読んだ。

https://www.lambdanote.com/collections/engineers-in-voyage/products/engineers-in-voyage

いやー、くっそおもしろかった。VOYAGE GROUPは広告やゲーム攻略サイトなどいろいろなプロダクトを持っている。それらを作ってきたエンジニアたちへのインタビュー集。

中でも圧倒的に面白かったのが、第3章のECナビの話。ECナビは、1999年からある20年もののシステム。2015年の時点で誰も全容を把握している人がいなかった1200テーブルを超える巨大レガシーシステムを、5年の歳月をかけて、いかにして把握可能な状態まで持っていったか。はっきりいって、めちゃくちゃかっこいい。痺れる。「お花畑」とか「葬り無双」とかの独特のネーミングセンスも笑える。

他の章ももちろんどれも面白い話ではあった。けど、神ゲー攻略とかデータサイエンスの話は、超絶優秀なエース級の人アサインしたら、その人がうまくハマってくれて、ほぼ1人でなんとかしてくれたっていう話で、へーすごい人なのねという感想は持つけど、言ってみれば、そこらへんにありそうな話でもある。けど、ECナビの話は、一から作り直すこともできないほどの巨大なシステムを、長期間かけて計画的にこつこつ改善していったということの、並大抵でなさに感動する。やり遂げたエンジニアたちに畏敬の念を抱く。あなた達はすごい。

import socket
import time
import threading
RECEIVE = False
#RECEIVE = True
NUM_THREADS = 300
finish_flags = [False for i in range(NUM_THREADS)]
@tai2
tai2 / utilities.bash
Last active April 2, 2022 03:08
Shell utilities
function zcd() {
cd $(z | tail -r | fzf --layout=reverse --cycle | awk "{print \$2}")
}
function ge() {
FILE=`git grep "$@" | fzf --layout=reverse --cycle | cut -d : -f 1`
nvr --remote $FILE
}
function gt() {