Skip to content

Instantly share code, notes, and snippets.

@wtnabe
wtnabe / marp_counter.rb
Created December 20, 2025 00:40
Marpで作ったスライドの発表時間を粗々と計算する
require "cgi"
class MarpSlideCounter
TOKENS_PER_SEC = 5.0 # chars
INTERVAL = 4.0 # sec
class Slide < Data.define(:type, :content); end
class Stat < Data.define(:content_slides, :avg_length, :avg_cost, :total_cost); end
SLIDE_TYPE = [:content, :ghost]
@wtnabe
wtnabe / README.md
Last active December 16, 2025 05:17
YARD + sord で RBS を生成する

YARD + sord で RBS を生成する

具体的な方法

  • 添付の sh script か Rake task で
    • sh script は moon 経由で叩いている想定

sordの注意点

  • ヘルプには表示されないが --rbs オプションを与えると RBS を出力する(--rbi は RBI)
@wtnabe
wtnabe / valid_value_concept.rb
Last active July 4, 2025 15:30
A concept code of reusable schema and Value Object with Dry::Schema and Data ( Ruby 3.2+ )
require "dry/schema"
module GuideRail
#
# @param [String|Symbol] klass
#
def class_name(klass)
@_class = klass
end
@wtnabe
wtnabe / plantuml-wrapper.sh
Last active June 1, 2025 04:36
plantumlコマンドを-pipeで使う際の謎のエラーを可視化するwrapper script
#! /bin/bash
set -o pipefail
OUTPUT=$(plantuml "$@" 2>&1)
printf "%s" "$OUTPUT"
if printf "%s" "$OUTPUT" | grep -q 'java\.lang\.'; then
cat <<EOD >&2
@wtnabe
wtnabe / .envrc
Created May 31, 2025 06:14
export PlantUML jarfile path from plantuml sh script
export PLANTUML_JAR_PATH=`cat $(which plantuml) | awk '{ for (i = 1; i < NF; i++) { if ($i ~ /\.jar/) { printf("%s", $i) } } }'`
@wtnabe
wtnabe / confirm.erb
Last active December 14, 2025 05:22
dry-operation + dry-monads + ActiveModelほかいくつかの処理を交えていい具合にViewに返す試み
<% unless errors.empty? %>
エラーあります
<ul>
<% errors.each do |error| %>
<% # ActiveModel::ErrorsとDry::Schema::Message的なエラーをいい具合に扱う %>
<li><%= error.try(:attribute) || error.try(:path) %> : <%= error.try(:type) || error.try(:text) %></li>
<% end %>
</ul>
<% end %>
<% unless data.empty? %>
- name: prepare Node.js 16 for Heroku CLI v9
uses: actions/setup-node@v4
with:
node-version: 16
- name: prepare Heroku CLI v9
run: |
npm i -g heroku@"~>9"
heroku -v
@wtnabe
wtnabe / error-capturing-outside-in-callback.html
Last active January 4, 2025 13:58
JavaScriptでcallback functionの中で発生したエラーを外から捕捉する
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Promiseの中のエラーを拾う</title>
</head>
<body>
<button id="error-propagated-by-event">DOM Eventで伝播</button>
<button id="error-propagated-by-callback">Errorハンドラで伝播</button>
@wtnabe
wtnabe / gist:897f9c4a7340a5bbf012a6ca9a4bf3cc
Last active November 10, 2024 00:20
目の滑りにくいarrow function
#! /usr/bin/awk -f
#
# Usage:
# biome lint --colors off 2>&1 | awk
#
#
# filename
#