タグ

ブックマーク / motemen.hatenablog.com (57)

  • WezTermに移行した - 詩と創作・思索のひろば

    PCを新調したのを期に、ターミナルの環境をiTerm2+tmuxをWezTermに移行した。とくに不満はなかったのだけど、iTerm2の設定をぽちぽちする*1ことを考えるとこれ数年おきにやるのか……と思ってしまったので心機一転、設定をLuaで管理できるというWezTermを使ってみることにした。 偶然以下の記事を見ていたのが大きい。設定も基これをぱくった。 Okay, I really like WezTerm | Alex Plescan いいところ Luaで設定できる。別にLuaが書きたいわけではなくてVCSで管理できるのがよい。 WezTerm単体で、キーボードのみで文字列選択・コピーができる(Copy Mode)。これまではこの用途にtmuxを使っていたのでシンプルになってうれしい。 さらに、コピーしたいところまでカーソルを動かさなくていい Quick Select というモード

    WezTermに移行した - 詩と創作・思索のひろば
    nagayama
    nagayama 2024/09/24
  • ターミナルの作業中ディレクトリにOSの「ファイルを開く」からもアクセスしたい - 詩と創作・思索のひろば

    作業中のリポジトリのファイルをブラウザやデスクトップアプリ経由でアップロードしたり触ったりするとき、OSのファイルを開くダイアログからだとそこにたどりつくのが手間。macOSならopen -R でファイルを選択しつつFinderを起動できるので、これをするときもあるのだけど、ダイアログを先に開いてしまっていたり、そもそもファイルのドラッグ&ドロップに対応していない場合はどうしようもなかったりする(ダイアログにドロップするって技はある)。 ようは「今ターミナルで開いてるディレクトリにOSの『ファイルを開く』ダイアログからもアクセスしたい」という話。fuseを使うかFileProvider Extensionを使うといいのかな……とか考えてたけど、とりあえずプロトタイプとしてシェルスクリプトを書いたところ、これでいいやとなった。 最近ターミナルにWezTermを使いはじめたので、wezterm

    ターミナルの作業中ディレクトリにOSの「ファイルを開く」からもアクセスしたい - 詩と創作・思索のひろば
    nagayama
    nagayama 2024/08/29
  • 『関数型ドメインモデリング』はF#の本なのか? - 詩と創作・思索のひろば

    関数型ドメインモデリング ドメイン駆動設計とF#でソフトウェアの複雑さに立ち向かおう 日語版出版に際し、訳者の猪股さんにご恵贈いただきました。ありがとうございます! すでに原著の『Domain Modeling Made Functional』を読んでいて、そのときの感想は以前に書いたとおり。そこからの差分としては、はてな社内でこのの輪読をはじめたこと。輪読がはじまったその週に日語版の出版が告知され嘆息する一同でしたが、日最速で輪読を開始できたのは間違いないと思う。 このの特徴をひとつ挙げろと言われれば、実装に使われている言語がF#であること、というのが大方の回答になるとおもうが、一方でこのをやるのにF#を実践する必要はない、と考えている。そういうわけで今回輪読における実装言語にはGoTypeScriptを指名しており、その後Scala勢力も増えたのだけど、進度的には実際にコ

    『関数型ドメインモデリング』はF#の本なのか? - 詩と創作・思索のひろば
    nagayama
    nagayama 2024/07/08
  • シンプルに運用できるかっこいいスコアカード! - 詩と創作・思索のひろば

    人間は数字が増えていくことに純粋な喜びを感じるところがあるようですが、この性質を利用して子供にやる気を出させることはできないかと、バーチャルなスコアカード(ポイントカード)を作ってみた。イメージはDuolingo的なゲーミフィケーション。 実際に動いている例がこちら。 https://simple-score-card.pages.dev/card/1fDirH0H8LFJs9IneHnU0oDUbsnCcH-dkeY1_N5z18FQ かっこいいね ミッションをこなすことでモテメンポイントが増えていくわけですね。やっていこう! しくみについて。動いているも何もこれはただのペライチのHTMLで、実はなんのインタラクションもない。普通に作ると裏に管理画面でもあればよさそうだけどそこをグッとこらえて、Googleスプレッドシートを元データということにしている。 URLでピンとくると思うけど、前

    シンプルに運用できるかっこいいスコアカード! - 詩と創作・思索のひろば
    nagayama
    nagayama 2024/02/22
  • Gitでマージ済みのブランチを一括削除する - 詩と創作・思索のひろば

    こうしてます。 git for-each-ref --merged HEAD --no-contains HEAD 'refs/heads/**' --format '%(refname)' \ | while read s; do echo "$s $(git rev-parse "$s")"; git update-ref -d "$s"; done git branch を使ったやり方が一般的なようだが(Google調べ)、配管(Plumbing)コマンドを使って厳密にやるならこうでしょう。 git for-each-ref はリポジトリのrefを一覧するコマンド。refs/heads/** はいわゆるローカルブランチにマッチするパターン。--merged HEAD で現在のブランチであるHEADにマージ済みのブランチを、--no-contains HEAD でそのうちHEADを除い

    Gitでマージ済みのブランチを一括削除する - 詩と創作・思索のひろば
    nagayama
    nagayama 2023/10/20
  • 2022年、毎週ブログを書いた - 詩と創作・思索のひろば

    ハッピーホリデー! これははてなエンジニアアドベントカレンダー2022の 25 日目の記事です。昨日は id:yutailang0119 の WEB+DB PRESS Vol.132 特集2 「iOS 16最前線」に寄稿しました #wdpress でした。海賊スタイル、いい命名ですね。 さて掲題の通り、2022 年は毎週ブログを書くぞ、と年初にゆるく決意していたのだけど、これがだいたい達成できたようなのでふり返ってみる。だいたい、というのは当にだいたいで、風邪をひいていた週、登壇した週、あと肉体的にめちゃくちゃ疲れていた週は普通に休んでしまっている。それ以外にサボりはなかったので自分の中では毎週です。 なんで毎週書くことにしたのかはもう覚えていないけれど、会社ではエンジニアのみんなに「オープンネスを大切にしよう。知識や経験を周囲に共有していこう」という話をしている割に、自分が実践できてい

    2022年、毎週ブログを書いた - 詩と創作・思索のひろば
    nagayama
    nagayama 2022/12/25
  • 今年の進捗プログレスバーSVG - 詩と創作・思索のひろば

    個人的に一年の様子を Scrapbox に書いているのだけど、今年もけっこう終わりに近づいたなってことを視覚的に知りたいので SVG でプログレスバーを提供することにした( /daiiz/今日 のような感じ )。以下のような感じで今年の進捗が見えてくる。@year_progress リスペクトです。 Year Progress SVG 絵心はたいへん低いほうなのでどうやって作るか困っていたが、JS+SVGで液晶画面風の表示をつくる | tech - 氾濫原 を見て Inkscape を使ってみた。これでシャッと描いたあと ブラウザ上でSVGをJSXに変換するWebアプリを作った - wadackel.me で JSX に変換し、preact で XML 化している。この程度の SVG 生成に preact は too much だという向きもあろうけど雑に作り上げるならこのくらいでいい。

    nagayama
    nagayama 2022/11/06
  • Makefileの代わりにnpm scripts+zxを使う - 詩と創作・思索のひろば

    そこそこの規模があるプロジェクトで実行すべきタスクを定義するとき、初手として Makefile を使いがち。 Pros make は事実上どんな環境にもあることを期待してよい シェルで実行されるコマンドをそのまま書ける タスクの依存関係が明示できる Cons make では positional arguments が使えない 少し複雑なことをしようとすると Makefile 専用の文法を覚える必要がある 現代では、ファイルベースのタスクの依存関係は make が発明されたころほどは必要ではない Docker とか Go とか Webpack がよしなにしてくれることが多い 例: docker compose のラッパー ちょっとしたコマンドのラッパーを書きたいことがある。Makefile を書きはじめたらすべてのエントリポイントを make にしたい。ということで、以下のような Make

    Makefileの代わりにnpm scripts+zxを使う - 詩と創作・思索のひろば
    nagayama
    nagayama 2022/10/04
  • Domain Modeling Made Functional を読んだ - 詩と創作・思索のひろば

    最近フロントエンドに限らず TypeScript を書くことが多くなって、これでそれなりの規模のサーバサイドアプリケーションを書くときどうなるんだろう、と気になって読んでみた。いわゆる普通のオブジェクト指向ではなく関数指向な書き方でいきたいとき、どうするのが好ましいのか、というような観点。 名前的にそのものずばり、というがあったので購入した。日のウェブを検索してみてもいくらか言及があるので価値はありそうだという判断で、大人なので円安でも強行する。 Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# (English Edition) 作者:Wlaschin, ScottPragmatic BookshelfAmazon 自分は PDF で読みたかったので

    Domain Modeling Made Functional を読んだ - 詩と創作・思索のひろば
    nagayama
    nagayama 2022/09/12
  • ページ内のテキストを読めなくするChrome拡張を作った - 詩と創作・思索のひろば

    世はまさにハイパーメディア時代。何をするにも視覚的なキャッチがないとやっていけない時代です。ブラウザのスクリーンショットを撮ることも多いでしょう。しかしプライベートな内容もそこに映り込んでしまうこともありがち。かといって画像をいちいち加工するのも面倒……というわけで、DOM操作によってテキストを隠す拡張を作りました。 GitHub - motemen/webextension-obfuscate-texts 2022-07-20 追記: Chrome Web Store に出ました Obfuscate texts - Chrome ウェブストア Manifest V3 で作ったせいでほかのブラウザは未対応。 スクリーンキャスト Chrome extension: Obfuscate texts - YouTube ページ内の要素を選択し、「Obfuscate」することで▗​▝​▌​▏​▇​

    ページ内のテキストを読めなくするChrome拡張を作った - 詩と創作・思索のひろば
    nagayama
    nagayama 2022/07/17
  • 3Dアバターに話を聞いてもらう - 詩と創作・思索のひろば

    近年、世間ではリモートでスピーチをする機会が増加している。人前で喋ったことがあると経験があるのではないかと思うけど、テレビ会議ごしに話をすると目線が合わない、そもそも顔が見えないなどで反応がものすごく薄い。だんだんと慣れてきた感もあるけどやっぱり喋りづらい。技術による人間の疎外、これは仕方がないことですよ。 そうであれば解決するのも技術だ、というわけで作ってみたのがこちら(マイクの権限が必要です)。ブラウザの中から誰かがこちらを見てくれていて、話にうなずいてくれる。ただそれだけ。だけど、多数に向けたスピーチの際にうなずいてくれる人間の貴重さを知っている人には、このありがたさに共感してくれるのではないだろうか。 Vnodroid pixiv/three-vrm を使って3Dアバターヒューマノイドをブラウザ上に表示し、あたかもそこで自分の話を聞いているかのように存在させている。呼吸とまばたきを

    3Dアバターに話を聞いてもらう - 詩と創作・思索のひろば
    nagayama
    nagayama 2022/06/27
  • Bubble Tea でリッチなターミナルアプリケーションを作る #Go - 詩と創作・思索のひろば

    近年、普段の作業をマウスでやりたくない気持ちが高まっている(デスク周りが散らかってきたせいだという説が有力です)。メールは結局ターミナルでメールを読むことにしたため問題なく過ごせているが、その他のタスクをキーボードだけでやるには、ターミナル動くアプリケーションを作れる必要がある。それもリッチなやつだ。見た目は派手な方がいい。 この記事は Kyoto.go remote #32 LT会 で発表した 入門 Bubble Tea の増補版です。 Bubble Tea とは GitHub - charmbracelet/bubbletea: A powerful little TUI framework 🏗 Bubble Tea とは、Go でリッチなターミナルアプリケーション(TUI)を作るためのフレームワーク。Charm というプロジェクトの一部のようで、ホームページを見てもらったら分かると

    Bubble Tea でリッチなターミナルアプリケーションを作る #Go - 詩と創作・思索のひろば
    nagayama
    nagayama 2022/06/17
  • 早朝の薄氷をウェブで割る - 詩と創作・思索のひろば

    薄氷をぴしぴし踏んで老詩人 ―― 中村苑子 すでに立春も過ぎましたが、まだまだ寒い日も多く春が待ち遠しい日々です。朝がた家の外に出ると、道ばたの水たまりに薄く氷が張っており、前の晩の寒さが思いやられつつ、ひび割れた様子を見ては、すでに登校している生徒たちがここを通ったことにも気づきます。 そんな気持ちを体験できるページを作りました。その名もウェブ薄氷(うすらい)。 ウェブ薄氷 早朝に氷が張り、最初の一人だけがこれを割れます。残念ながら昼になると溶けてしまいますが。 実装はドメインからも分かるとおり Cloudflare Workers。氷を割った時刻を KV に保存している。 最初はただひとつの状態だけを持つ実装にしていたけど、やっていたら request.cf という特別なオブジェクトから クライアントのアクセス元の情報も 国・地域・都市のレベルでそれぞれ取れるようだったので、その粒度で

    早朝の薄氷をウェブで割る - 詩と創作・思索のひろば
    nagayama
    nagayama 2022/02/16
  • Alfredの代替としてRaycastを使っている - 詩と創作・思索のひろば

    新春ツール入れ替えシリーズです。macOS における Spotlight 的なランチャーツールとして Alfred を長いこと使ってきたが、最近 Raycast を使ってみてこれがよかったので、以来ずっと使い続けている。 Raycast - Supercharged productivity 開発者のための便利ツールという売り文句のようで、そういう点がまさに気に入った。 カレンダーの次の予定が表示される まずこれがいい。これだけで十分使える。ランチャーを起動したときにカレンダーの次の予定を表示してくれる。Enter でそのまま Meet や Zoom を開いてくれるのでキーボードから手を離す必要がない。 もともとカレンダーの確認には Dato を使っていたし今も使ってるが、これでミーティングへのアクセスがかなりよくなった。 コミュニティベースの Store で機能を追加できる https:

    Alfredの代替としてRaycastを使っている - 詩と創作・思索のひろば
    nagayama
    nagayama 2022/02/01
  • Google Meet のミュートをツールバーから切り替える拡張を作った - 詩と創作・思索のひろば

    Google Meet Mute Toggler - Chrome ウェブストア こんなやつです。 Google Meet で仕事をすることが多くなった昨今、咳払いや生活音といったよんどころない事情によりマイクをミュートにしたいこともあるわけですが、ミュートボタンは普段隠れていて急に出てこないし、切断ボタンの隣りにあってちょっと怖い。正確なエイムが求められるのは小さなストレスになってるわけですね。この切り替えボタンをツールバーの常に同じ位置に置くことで、それを軽減させようとするものです。 Chrome 拡張のストアって決まった大きさの画像をアップロードしないといけないので面倒だったんだけど、画面の録画を YouTube に上げたらいいってことがわかりました。 Google Meet Mute Toggler Demo - YouTube ソースコードはこれ。 GitHub - moteme

    Google Meet のミュートをツールバーから切り替える拡張を作った - 詩と創作・思索のひろば
    nagayama
    nagayama 2020/11/17
  • ターミナルでSlackを読む - 詩と創作・思索のひろば

    Slackはそのクライアントがそれなりに、かなりよくできていて、これでほとんど困ることはないんだけど、そうは言ってももうちょっとプログラマブルに取り扱いたいこともある。 そういう場合にもよいAPIが用意されていて、Real Time Messaging API ってのがある。こいつはWebSocketでSlackの発言をはじめ、あらゆるイベントのJSONを送りつけてくれるやつ。ひとまずこれを標準出力に流すことができれば、あとは好きに料理できるはずだ。 というわけで作ったのがこちら。書いたことなかったのでRustです。ちょうどいいネタだった。 GitHub - motemen/slack-stream-json slack-stream-json というバイナリが、SLACK_TOKEN 環境変数を設定した上で起動してやると、RTM APIによって得られたイベントのJSONをそのまま標準出力

    ターミナルでSlackを読む - 詩と創作・思索のひろば
    nagayama
    nagayama 2019/11/22
    なるほどおもしろい
  • カレンダーでタスクを管理することとその実装 - 詩と創作・思索のひろば

    昔からタスクを次々こなしていくことはすごく苦手で、Todoist とか Remember The Milk とか Google タスクとか Hiveminder とか! を使ってみることはあってもタスクがどんどん溜まっていく一方で、一向に捌ける様子はなく、そういう状態を続けていると TODO リストは腐っていてしまって、開くことすら億劫になってしまう。そうやっていくつものタスク管理ツールを荒廃したまま捨てていった結果、久しぶりに Remember The Milk を開いてみると学生のときのタスクがまだ残っていてウッとなったりするのもよくあることです。 そういうタスク管理ツールの何がよくないのかというと、ツールはタスクの期限を管理してくれるものは多いけれど、どのタスクをいつやるべきかということに関しては管理できないというか指示してくれない、というのが自分の性格においては問題なのらしい。自分

    カレンダーでタスクを管理することとその実装 - 詩と創作・思索のひろば
    nagayama
    nagayama 2019/07/02
    よさそう
  • 社内ブログで連載していた小説『ひとでクロニクル』を公開します #HTDCHRNCL - 詩と創作・思索のひろば

    1 「はあ、はあ……これは奴らの陰謀だっ」 ひとでは走っていた。会社に遅刻しそうだったからだ。急いで電車に駆け込んでハアハアと息をついた。 「マサ、元気にしてるかな?」 ひとではマサのことを思い出した。 「さあ今日も仕事だっ☆」 マサは仕事していた。 「やあおはよう、寝坊かい」 イケメンがひとでに挨拶した。イケメンは、東京からやってきた。イケメンは、上場企業出身で、来週もRuby合宿に参加する奴だ。 はこべ「ひとでさん……ぽっ♥」 はこべさんが壁から見ていた。 ☆100でつづきます 2 オレははこべ。都内の私立高校に通う高校2年生だ。 tdk(続く) 3 「あーあ、数学の授業かったるいな〜」 なぜならオレは▒▒▒▒[プライバシー保護のため墨塗り]だからだ。俺の名ははこべ。その日も下らん授業を受けてアクビをしていた。 TDK 4 ▒▒▒▒?そう、俺は▒▒▒▒だ。オレはこの国の国家元首なのだ。

    社内ブログで連載していた小説『ひとでクロニクル』を公開します #HTDCHRNCL - 詩と創作・思索のひろば
    nagayama
    nagayama 2019/04/18
    令和時代の新星現る
  • めかぬか - 詩と創作・思索のひろば

    ピタゴラスイッチの人気コーナー「めかぬか」をHTMLで作ってみた。 mekanuka 書き順つき SVG として KanjiVG というプロジェクトがあった。これのおかげで実現できてる。 SVGのパスをアニメーションで描く方法はなんか有名なのがあるらしい: How SVG Line Animation Works | CSS-Tricks。 CSSJavaScript で生成するのは JSS でやった。@keyframe も動的に生成できて便利。

    めかぬか - 詩と創作・思索のひろば
    nagayama
    nagayama 2019/02/28
    “書き順つき SVG として KanjiVG というプロジェクトがあった”
  • GitHub の通知メールで、クローズやマージされたものにラベルをつける - 詩と創作・思索のひろば

    Google Apps Script でメールの自動アーカイブの続編です。 https://github.com/motemen/gas-gmail-scripts/blob/master/dist/label-github-issue-status.js GitHub のリポジトリにやってくるイシューや Pull Request って、対応する心的コストがばかにならないので放置しがちなんだけど、すでにクローズとかマージされたものに関しては気楽に流し読みしていいはず。そういうシグナルで自分を解き放っていきます。 Gmail 体のフィルタルールでもできそうなものだけど、"Closed" を含む〜みたいなルールだとわりと誤爆するので、GAS で書く。 こんな感じにラベルがつけられて、便利ですね。 メールの文を見て処理を行うだけなら簡単なんだけど、"Closed #42." みたいなのを勝

    GitHub の通知メールで、クローズやマージされたものにラベルをつける - 詩と創作・思索のひろば
    nagayama
    nagayama 2018/12/26
    なるほど便利