Skip to content

Instantly share code, notes, and snippets.

View hatappo's full-sized avatar
🦙

fumihiko hata hatappo

🦙
  • Tokyo Japan
  • 15:06 (UTC +09:00)
View GitHub Profile
@hatappo
hatappo / prompts.md
Last active October 27, 2025 07:31
English Lesson Prmpts

【1】Daily Lesson Builder(デイリーレッスンビルダー)

英語の家庭教師として行動してください。
語彙・文法・練習問題を含む20分間の毎日の英語レッスンを作成してください。

【2】Conversation Partner(会話パートナー)

Please arrange an English conversation practice session.
@hatappo
hatappo / claude2gemini-custom-slash-commands.sh
Last active August 6, 2025 03:24
Convert files of custom slash commands in Claude Code to those in Gemini CLI
claude_dir=~/.claude
gemini_dir=~/.gemini
mkdir -p $gemini_dir/commands
for c in $(ls $claude_dir/commands); do
cat $claude_dir/commands/$c \
| awk '/^---$/ && !f++ {next} 1' \
| awk '/^---$/ {print "prompt = \"\"\""; next} 1' \
| sed 's/!\`\([^`]*\)\`/!{\1}/g' \
@hatappo
hatappo / update_all_global_volta_packages.sh
Last active July 30, 2025 22:41
volta install でグローバルにインストールされているパッケージのバージョンをまとめてアップデートする
volta list | cat | grep "^package " | awk '{print $2}' | while read package_with_version; do
# Delete the @ version part (delete after the last @)
package=$(echo "$package_with_version" | sed 's/@[^@]*$//')
echo " \e[34mupdate package:\e[0m $package_with_version"
volta install "$package@latest"
done
@hatappo
hatappo / inoreader-copy-and-archive.bookmarklet.js
Last active July 23, 2025 23:38
Inoreader https://www.inoreader.com/starred で、表示されている一連の記事を「クリップボードにコピーしアーカイブする(orその日の日付でタグ付けする)」 Javascript
javascript: var t = [...document.querySelectorAll('a.article_title_link')].map((a) => {return a.href}); (async () => { try { await navigator.clipboard.writeText(t.join("\n")); alert(`コピーしました ${t.length}`)} catch (e) {alert(`コピーに失敗しました: ${e}`);}})(); document.querySelector('div.bulk-article-select-mode-header-btn a').click(); [...document.querySelectorAll('input[type=checkbox][name=article_bulk_select]')].forEach((i) => {i.click()});
@hatappo
hatappo / index.html
Last active January 18, 2024 18:50
Iconic mimimal code examples
<html>
<!-- -->
@hatappo
hatappo / how-it-works.ja.md
Created December 19, 2023 05:05
TestCafe のアーキテクチャ

どのように動作しているのか

TestCafe が登場する前は、実際のブラウザで動作するエンドツーエンドの Web テスト ツールは、これらのブラウザを外部から駆動してユーザー アクションをエミュレートすることに依存していました。ただし、このアプローチには重大な欠点がありました。

  • サードパーティ ツールへの依存。そのため、すべてのテスト環境で追加のドライバー、SDK、ライブラリをインストール、構成、保守する必要がありました。
  • ブラウザのサポートが制限されています。使用可能なブラウザとプラットフォームの範囲は、ドライバでサポートされているものに制限されていました。
  • ボイラープレート コード。 これらのテスト ツールは、テスト実行全体を通じて同じブラウザ インスタンスで機能したため、テストされた Web アプリの状態 (Cookie、ストレージなど) はテストから終了まで持続しました。テスト。その結果、エンドツーエンド テストには、テスト間の干渉を避けるために状態をクリアする大量の定型コードが含まれます。
  • 自動化が低い。 従来のツールは、テストされたページと直接対話できませんでした。ユーザーのテスト コードがアプリ コードに介入しないという事実は利点でしたが、テスト ツール自体はページ内で動作することで恩恵を受ける可能性があります。これにより、ツールで多くの日常的なタスクを自動化できるようになります。

テストカフェは違う

@hatappo
hatappo / example-playwright-scenario.js
Created December 1, 2023 15:47
ごく簡易な Playwright のテストシナリオのコード例
import { test, expect } from "@playwright/test";
test("検索ワード無しで検索した場合に急上昇ワードが表示される", async ({ page }) => {
// 1. Yahoo!Japan のサイトを開く。
await page.goto("https://www.yahoo.co.jp/");
// 2. 「検索」というラベルが付いた要素を探し出してきて、クリックする。
await page.getByRole("link", { name: "検索" }).click();
@hatappo
hatappo / index.js
Last active June 6, 2023 05:08
Kintone のアプリのデータを Zendesk のリクエスト・フォームに転送する Kintone カスタム JS のサンプル
(function () {
'use strict';
kintone.events.on(["app.record.detail.show"], event => {
const span = document.createElement('span');
const title = kintone.app.record.getFieldElement('title');
const body = kintone.app.record.getFieldElement('body');
const a = document.createElement('a');
const urlBase = 'https://*****/hc/ja/requests/new?ticket_form_id=*****';
@hatappo
hatappo / web.clj
Created May 17, 2023 18:52 — forked from prestancedesign/web.clj
Ring session authentication with Reitit
(ns authexample.web
(:gen-class)
(:require [buddy.auth :refer [authenticated? throw-unauthorized]]
[buddy.auth.backends.session :refer [session-backend]]
[buddy.auth.middleware :refer [wrap-authentication wrap-authorization]]
[clojure.java.io :as io]
[compojure.response :refer [render]]
[reitit.ring :as ring]
[ring.adapter.jetty :as jetty]
[ring.middleware.params :refer [wrap-params]]
@hatappo
hatappo / EICAR-test-virus-sample-file.txt
Created April 30, 2023 04:57
Positive test for ClamAV virus scanner.
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*