Skip to content

Instantly share code, notes, and snippets.

View shu-yusa's full-sized avatar

Shusaku Yusa shu-yusa

  • Tokyo, Japan
View GitHub Profile
@shu-yusa
shu-yusa / parse_coverage.sh
Last active June 8, 2023 01:32
Covert output from `phpunit --coverage-text` into the table form in Markdown
#!/bin/bash
# This script is used to convert the output from "phpunit --coverage-text"
# into a markdown formatted table. It parses the coverage data,
# then generates a table with class names, statement counts, misses, and coverages.
# The output is designed to be easily readable and suitable for inclusion in
# markdown-based documents or reports.
# Ignore output until reaching coverage report
while IFS= read -r line
@shu-yusa
shu-yusa / coverage_markdown.sh
Last active July 6, 2022 02:16
Convert Python coverage output to GitHub Actions job summary
#!/bin/sh
## https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary
repo_url=https://github.com/your-user-id/your-repository/blob
branch=master
coverage report | sed "1,3 s/-\+/--|--|--|--/g" | \
sed "/-\{3\}/d"| \
sed "0,/TOTAL*/ s/ \+/|/g" | \
sed "0,/TOTAL*/ s/^/|/g" | \
sed "0,/TOTAL*/ s/$/|/g" | \
sed "1i # Test Coverage" | \

fukabori.fm #8

8. AWS Aurora、GCP Spannerへ辿り着くまでのDBの進化

  • 70年代 メモリが高価(1MB 100万円)でハードディスクが比較的安価(100MB 数十万円)の時代
    • バッファに乗り切らないデータをハードディスクに書き戻さないといけない。しかし復旧時にもトランザクションに矛盾を起こしてはいけないという課題があった。
    • 80年代にIBMがARIESを作り、その後の標準的な実装となった.
    • ARIESではログの仕方、バッファプールの仕方、リカバリの仕方は密結合になる。ARIESはSteal/No-forceの組み合わせでログを取る。
  • Steal: トランザクションをコミットする前にディスクにフラッシュすることを許容する。リカバリの際には、未コミットだけどフラッシュされたトランザクションはundoする

texta.fm #3

#3. Low-Code Development

パーフェクト Ruby on Rails第11章サービスオブジェクトを題材に、イミュータブルデータモデリングについてトーク。

  • まず3つの"サービス"について整理
    1. レイヤードアーキテクチャでの独立したレイヤーとしてのサービス。ユースケースに近い。トランザクションスクリプト的。
    2. ドメインサービス。エンティティや値オブジェクトとして表現するのが不自然なドメインオブジェクトの表現。
  1. 分散システムにおける分散ノードの提供する責務。マイクロサービスのサービス。

Software Engineering Radio Episode #417

Alex Petrov on Database Storage Engines

Database Internals: A Deep Dive into How Distributed Data Systems Workの著者がゲスト。書籍の内容をもとに、データベースの内部についてトーク。

  • Q. ストレージエンジンとは?
    • A. データの保存を助けるもの
    • Q. ストレージエンジンは交換可能(プラガブル)?
  • A. そうだとよいと思っている。実例としてはMongoDBで使われているWiredTiger、Cassandraで使われているRocksDBなど。
@shu-yusa
shu-yusa / create_jwt.sh
Last active March 21, 2024 14:57
Generate private and public keys, and create JWT and JWKs
#!/bin/sh
## Requires openssl, nodejs, jq
header='
{
"kid": "12345",
"alg": "RS256"
}'
payload='
{
"iss": "https://example.com",
  • ヒアドキュメントは変数がパースされる. Nowdocはされない. const属性の定数の代入にNowdocを使える.

  • unset()で変数の割当を解除すると、それ以後その変数を参照したとき "未定義の変数"としてエラー(Notice)が発生するのに対し、nullの代入された変数は 変数としては定義しているものとして扱われる.

  • (float)'15.33foo' -> 15.33が返る