Skip to content

Instantly share code, notes, and snippets.

View ymmt2005's full-sized avatar

Yamamoto, Hirotaka ymmt2005

View GitHub Profile
@ymmt2005
ymmt2005 / howto-tech-docs.md
Last active April 14, 2024 13:23
技術文書の書き方

技術文書の書き方

このメモは、私(@ymmt2005)が長年にわたってソフトウェアプロダクト開発に関わってきて 2022年現在こうしたほうが良いと考えているベストプラクティスです。

科学的な分析等に基づくわけではない経験則であるため、今後も随時見直すことがありますし、 ここに書いてあることが常に正しいわけでもあらゆるソフトウェア開発に適するわけでもありません。

しかしながら、実務経験が豊富で、モダンな技術スタックに明るいエンジニアの経験則は一定の 役に立つのではないかと考えて記します。

@ymmt2005
ymmt2005 / bittorrent.md
Created February 3, 2016 08:00
BitTorrent 調査

BitTorrent 調査まとめ

概要

BitTorrentの仕組みを読むのが早い。

完全な P2P というわけではなく、コンテンツとピアの情報を管理するトラッカーというサーバーがいる。トラッカー不在でも動作するDHTモードという仕組みもある。

@ymmt2005
ymmt2005 / neco_skills.md
Last active September 24, 2023 10:59
Neco プロジェクトのスキルシート

Neco プロジェクトのスキルチェックシート

Neco は大量の物理サーバーを効率的に管理・運用することを目的とした開発プロジェクトです。 Kubernetes を中心に高度な自律運用の実現を目指しています。

本文書はプロジェクトに参加しているメンバーが身に着けている要素技術を並べたものです。

応募時点ですべてを身に着けている必要はまったくありません。 社内にはチュートリアル資料が多数用意されていますので、必要に応じて学べます。

@ymmt2005
ymmt2005 / due2fs.c
Last active June 30, 2021 05:04
Fastest du for Linux. This is in fact faster than du(1) as long as all dentries are cached :-p
/**
* Compilation:
*
* 1. Without e2fslib:
* $ gcc -O2 -o due2fs due2fs.c
*
* 2. With e2fslib
* $ sudo apt-get install e2fslibs-dev
* $ gcc -DUSE_E2FSLIB -O2 -o due2fs due2fs.c -lext2fs
*
@ymmt2005
ymmt2005 / convret-gv.go
Created July 12, 2019 02:42
Kubernetes GV convert
package main
import (
"os"
networkingv1beta1 "k8s.io/api/networking/v1beta1"
"k8s.io/apimachinery/pkg/runtime/serializer/json"
"k8s.io/client-go/kubernetes/scheme"
)
@ymmt2005
ymmt2005 / github.py
Created September 11, 2012 13:05
GitHub v3 API client in Python
#!/usr/bin/env python
'''
GitHub API v3 client.
@see http://developer.github.com/v3/
@see https://support.enterprise.github.com/entries/21391237-using-the-api
'''
from argparse import ArgumentParser, REMAINDER
@ymmt2005
ymmt2005 / ecmp_weird_route.sh
Last active May 16, 2018 01:12
Test Linux weird behavior on ECMP routes
#!/bin/sh -e
NS=testns
BR1=testbr1
VETH1=testveth1
BR2=testbr2
VETH2=testveth2
LINKS="$VETH1 $VETH2 $BR1 $BR2"
@ymmt2005
ymmt2005 / lio.patch
Created January 14, 2013 06:49
A patch for Linux LIO iSCSI target to restrict the maximum number of sessions (not connections).
--- linux-3.2.0/drivers/target/iscsi/iscsi_target_login.c 2012-06-07 05:37:34.000000000 +0000
+++ iscsi_target_login.c 2012-06-07 05:34:22.866487169 +0000
@@ -1107,6 +1107,20 @@
goto new_sess_out;
}
+ /* Cybozu */
+ if (zero_tsih) {
+ int error = 0;
+ spin_lock_bh(&np->np_thread_lock);
@ymmt2005
ymmt2005 / compressions.txt
Last active October 4, 2016 10:51
gzip, zstd, brotli
Ubuntu VM ディスクイメージを gzip, Zstd, Brotli で圧縮
$ time lzop -d < vm-generic.lzo | gzip > vm-generic.gz
real 0m44.422s
user 0m46.736s
sys 0m1.312s
$ time lzop -d < vm-generic.lzo | zstd > vm-generic.zstd
real 0m9.863s
user 0m10.336s
@ymmt2005
ymmt2005 / atomic_rename.py
Last active July 4, 2016 09:00
atomic_rename.py
#!/usr/bin/python3
from argparse import ArgumentParser
import os
from os.path import dirname, realpath
from tempfile import NamedTemporaryFile
def syncdir(d: str):
fd = os.open(d, os.O_RDONLY|os.O_DIRECTORY)
os.fsync(fd)