タグ

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

  • macOSのVisionフレームワークでOBSの映像からテキストを抽出するWebSocketプロキシ - 詩と創作・思索のひろば

    激安HDMIキャプチャーボードを買ってから、ときどきゲームプレイの録画・配信をしている。OBS Studioというソフトウェアがデファクトらしく、自分もこれを使っている。 便利なことにOBSにはWebSocketで操作できるインタフェースがあり、JavaScriptPythonからかなり自由に操作することができる。となればソフトウェアエンジニアとしてはプレイログを構造化して残したいわけ。 WebSocket経由でスクリーンショットも随時取得できるので、画像を分析することでたとえばシーン判定はできるが、さらに詳細な情報を取ろうとするとテキスト情報もほしい。クラウドサービスなどに金をかけずに手軽にやるならTessaract一択となるが、素晴らしいソフトウェアではあるものの期待する精度を出すには工夫がいりそう。具体的には、ポケモンの名前は日語だけでなく中国語の場合もある(左下の「古劍豹」)。

    macOSのVisionフレームワークでOBSの映像からテキストを抽出するWebSocketプロキシ - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2024/06/28
  • 固有名詞をつけるとき - 詩と創作・思索のひろば

    ソフトウェアエンジニアリングにおいて大切なのは、人間のことをのぞけば名付けだと思っている。言葉がなければ世界は混沌としたままだけど、そこに名前をもたらすことがものごとを切り分け、ひとつの秩序をもった視点をつくる。この秩序は唯一絶対のものではなくて、なんらかの意志によって導かれたものである。ソフトウェアはあくまでも現実の抽象だから、問題をどういう視点で見るか、という軸があるわけだ。そういう意味では人間のことではある。 適切につけられた名前は、そのことによって他のものとの自然な境界を与えられていて、その他の名付けと一貫性を持っている。そういう名前は既存の名付けの体系になじむので、同じ言葉を使う人々のあいだに受けいられれて、共通のコンテキストに追加される。そして次第に暗黙のものになっていく。 たとえばユーザのフォローがあるSNSのようなウェブサービスをつくるときに、QueueとかBrokerみた

    固有名詞をつけるとき - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2024/04/27
  • 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でマージ済みのブランチを一括削除する - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2023/10/21
  • Vimmer、Visual Studio Codeを使う - 詩と創作・思索のひろば

    まだ汚れを知らない若者だったころに「プログラムはね、これを使って書くんだよ」と言われて以来Vim友達だと思ってずっと(15年くらい)使ってきたが、最近は、とくに新しく何かを書くときにはVSCodeを使うようになってきた。コードを書く間隔が広がってきたせいか、新しい技術や言語に対応することができておらず、なんか最初からいい感じになってるエディタを重宝する。歳を取ってきたからなんだろうな、と素直に思うけれど、自分向けになにかをカスタマイズすることにあまり熱を感じなくなっていて、すでにあるよいと分かっているものに自分を調整していくことを選ぶようになってきた。 とはいえ身体はVimに慣れきってるのでVSCodeを使い始めたときはVSCodeVimを使っている……いた、というのが今回の話。よくできてるとは思うが、とにかくu(アンドゥ)の挙動が家と違うのがどうも身体に合わない。逆にストレスが高まっ

    Vimmer、Visual Studio Codeを使う - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2023/10/06
  • リーダーシップについて - 詩と創作・思索のひろば

    リーダーシップというと、カリスマ的な魅力をそなえた人物が輝かしいビジョンを指し示し、大衆を率いていく……というドラマチックな光景を思い描いてしまうものだが、実地で求められるリーダーシップとはそういうもの(だけ)ではない。というか、そうであってほしい。 ここでは英雄的資質を持って生まれなかった多くの人間が、どうやってリーダーシップを獲得していけるのか、を考えていく。 定義 リーダーシップを定義するために語られていることを、いくつかのから引用してみる。 リーダーシップとは、集団に目標達成を促すよう影響を与える能力である(スティーブン P. ロビンス『組織行動のマネジメント』) リーダーシップとは、理由の如何にかかわりなく、[何かしらの目標をめざして]他人や集団の行動に影響を与える試みそのもののことである。(ハーシィ・ポール他『入門から応用へ 行動科学の展開』) 「絵を描いてめざす方向を示し、

    リーダーシップについて - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2023/06/01
  • 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 を読んだ - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2022/09/12
    から、勉強しないと
  • Googleカレンダーをターミナルからキーボードで操作する - 詩と創作・思索のひろば

    全部キーボードで済ませたいシリーズです。 多忙な現代人の一日はその日の予定チェックから始まるわけです。普段であれば定期的な間隔で組まれたミーティングのリズムに身を委ねればいいわけですが、そこに非定型的なミーティングが紛れ込んでくる。これは採用面接など外部との機会であることが多く、そのぶん重要です。事前に入れてあるものを避けて予定を組もうとすると、参加者の数に応じて困難さが増していくので、ある程度は既存のものに被せて予定に招待してもらうことにしていると、いつの間にかダブルブッキングの嵐になっている。直前になって慌てて一方のミーティングに参加しないことを告げる……みたいなことを繰り返していてはいけませんね。 そういうわけで事前にカレンダーの重複を確認して、必要に応じて辞退したり再調整したりしたい。だけどそれを Google カレンダーのウェブ UI からマウスでポチポチやるのは非常につらい……

    Googleカレンダーをターミナルからキーボードで操作する - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2022/07/10
  • 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 - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2022/06/17
  • 集中するためにやっていること2022 - 詩と創作・思索のひろば

    リモートワークにシフトしてから2年くらい経って、自分の中でもペースができてきたと思う。たまに出社すると時間が全然わからなくなることに気がついた。自宅で仕事しているときはほぼずっと PC の前にいて、右上をみると時間と次の予定がわかるようになっている(Dato ってアプリを使ってます)。物理出社するとオフィスはやっぱ広くて居心地いいのでうろうろして、棚のを読んで……とかしてるうちに予定の時間を逃していたりする。面白いですね。 他人の存在感がぜんぶ画面の向こう側にいるようになったせいなのか、ときどき集中できなくなって仕事ができていない状態になることがある。ミーティング中、資料に目を通していたら別のタブに目移りしている、みたいなこと。もともと気が散りやすいほうで、教科書やノートにもめちゃくちゃ落書きがあったな~。物理で仕事していたころには、そういうときは眼鏡を外していたりした。目が悪くて、画

    集中するためにやっていること2022 - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2022/05/28
  • コマンドラインでメールの内容に基づいた処理をするツールを書いた: letterknife - 詩と創作・思索のひろば

    メールに対する jq みたいなやつ……というと強力すぎるけど、そういう感じにメールを入力に受け取って何かしらの処理をした上で出力してくれるツールです。ここでいうメールとは MIME 形式のメール全体。Gmail なら "Show original" で見られるようなもの。 結局ターミナルでメールを読むことにした に書いたとおり最近はターミナルでメールを読むようになりそこそこ快適なんだけど、メールとの接し方がプログラマブルになったからには楽をしたい。だいたい通知のメールのこの部分をクリックするだけ(そして承認したりコメントしたりする)、みたいなパターンが決まってるものには DWIM(do what I mean)的にキー入力一発で対応したいわけです。それをやるためのツールとして書いた。珍しく名前を気に入ってる。 GitHub - motemen/letterknife 使い方 $ cat <

    コマンドラインでメールの内容に基づいた処理をするツールを書いた: letterknife - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2022/05/20
  • 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を使う - 詩と創作・思索のひろば
  • Alfredの代替としてRaycastを使っている - 詩と創作・思索のひろば

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

    Alfredの代替としてRaycastを使っている - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2022/02/02
  • 中間証明書のないサーバにアクセスする - 詩と創作・思索のひろば

    不特定多数のウェブサイトにアクセスするアプリケーションを書いていると、ときおり SSL 証明書の検証エラーとなる URL に行き当たることがある。が、確認のためブラウザでアクセスしてみると、普通に見れてしまったりもする。そんな事例のひとつ、タイトルの通り中間CA証明書のないサーバについて。 https://incomplete-chain.badssl.com/ というわかりやすい例がある。これを curl してみると: % docker run -it --rm buildpack-deps:buster bash root@22f1788d53c7:/# curl --version curl 7.64.0 (x86_64-pc-linux-gnu) libcurl/7.64.0 OpenSSL/1.1.1d zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.

    中間証明書のないサーバにアクセスする - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2020/04/24
  • curl でデータを逐次アップロードするには -T (--upload-file) を使う - 詩と創作・思索のひろば

    最近知ってへーとなったのでメモ。標準入力から curl を通じてサーバにデータを送信したい場合、 curl --data-binary @- <url> というのがイディオムだと思うけど、この場合は標準入力から全部読みきってからサーバに接続・送信するので、データをストリーミングすることができない。コマンドライン経由のリアルタイムなコミュニケーションに HTTP を気軽に使いたい身としては、これは不便。 不便だなーと思って調べていたら、curl には -T (--upload-file) というオプションがあって、これは PUT でファイルを送信するのだけど、これは Transfer-Encoding: chunked しつつ、データを逐次読み取りながらサーバに送信するものらしい。 たとえば # Linux なら nc -l -p 9999 nc -l 9999 しつつ、別のシェルで cur

    curl でデータを逐次アップロードするには -T (--upload-file) を使う - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2019/11/12
  • カレンダーでタスクを管理することとその実装 - 詩と創作・思索のひろば

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

    カレンダーでタスクを管理することとその実装 - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2019/06/21
    "タスクを作ったときの脳内コンテキストは失われているので、〇〇を決める、じゃなくこの URL を見て〇〇をする、などと予定の詳細に書いておく。考えるより先に行動から始められるので初速を稼げる。初速こそが重要"
  • git fetch の裏側では何が起こっているか - 詩と創作・思索のひろば

    git fetch の裏側でどんな通信が行われてリモートリポジトリの内容が取得できるのか調べたのでまとめる。もともとは git の HTTP や SSH といったプロトコルでどのように実現されているか、というところに興味があった。Git v2.7.1 を基にしている。 事前準備 pack プロトコル pkt-line フォーマット Reference discovery Packfile negotiation Packfile の送受信 packfile への圧縮・packfile からの展開 各種トランスポートの実装 file トランスポート ssh トランスポート git トランスポート http(s) トランスポート まとめ 参考資料 事前準備 手を動かしてプロトコルを理解できるよう、gist の小さなリポジトリ を使う。適当なディレクトリ下に bare リポジトリとして clon

    git fetch の裏側では何が起こっているか - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2016/03/11
  • 『圏論の歩き方』が難しかったので『Basic Category Theory for Computer Scientists』を読んだ - 詩と創作・思索のひろば

    先日ウィッシュリストから『圏論の歩き方』を贈ってもらいました。圏論を使っているさまざまな分野の若手研究者がオムニバス形式でその紹介をするというもので装丁も可愛らしくとっつきやすそうな感じ(という甘い考えはすぐに砕かれますが)。 圏論の歩き方 圏論の歩き方 作者: 圏論の歩き方委員会出版社/メーカー: 日評論社発売日: 2015/09/09メディア: 単行この商品を含むブログ (1件) を見る このは「まえがき」がよくて、 このは[……] 情報処理能力をはるかに超えた量の情報の洪水と, トライ・アンド・エラーの機会 という,[圏論という数学の]コトバを習得するうえで有益だと思われる二つのことに力点を置いた「圏論の入門書」,ということになります。 [……] まず,決して最初から一つ一つ完全に理解していこうとしないでください.[……]むしろ,わからないこと・わかることの間から,ご自分なり

    『圏論の歩き方』が難しかったので『Basic Category Theory for Computer Scientists』を読んだ - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2016/01/27
  • ISUCON4 ダメでした #isucon - 詩と創作・思索のひろば

    こないだの ISUCON で平凡な結果を取ってしまったのでお知らせします。 チーム名は「マカレラーズ」、メンバーは songmu & y_uuki でした。 予選 予選のエントリを書いてなかったので、いっしょに書いておく。具体的なポイントについてはもう覚えてないので、日記です。 予選はオンラインだったのでチーム全員がバラバラの場所で参加であったけど、Sqwiggle と Slack で十分だった。むしろ普段どおりという気もした。あらかじめ作戦を立てていたわけではなかったけど、自然と分担ができていて、アプリの細かい改修にくわえ、デプロイ周りやプロファイングは自分がやった。これがいい感じに回ったので、戦でも自分が進んでやることになった。普通に愚直に実装して予選枠を取ったという印象だけれど、いい順位ではなかったし、おそらく次の ISUCON ではもっと参加チームも増えているだろうので、こんな感

    ISUCON4 ダメでした #isucon - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2014/11/15
  • イシュー管理にお役立ち。GitHubのIssue/PRの状態が一目で分かるバッヂ - 詩と創作・思索のひろば

    こんな感じに使えますっていうウェブアプリ+Chrome 拡張のはなしです。(ちなみに例はこれ) GitHub ではイシューへのリンクが "#829" という風に番号になって表示されますが、イシューをバリバリ使っていてこれらの間の参照が多く発生するような場合に、これって誰がやってるんだっけ、もう終わったんだっけ、と分からなくなることが多々ありますよね。こういう時、文中に画像で埋め込まれているとパッと見て分かりやすい。 デモ http://github-issue-badge.herokuapp.com/ にデプロイしてあります(トップページは GitHub Pages にリダイレクトされますが)。 次の画像: (http://github-issue-badge.herokuapp.com/badge/motemen/test-repository/5)が正しく表示されればオッケー。403

    イシュー管理にお役立ち。GitHubのIssue/PRの状態が一目で分かるバッヂ - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2014/10/29
  • minimatch(node.js で path match するライブラリ)のチートシートを作った - 詩と創作・思索のひろば

    minimatch っていうのは Grunt や gulp.js その他あちこちで(npm もらしい)使われてるグロブマッチライブラリです。最近よく gulp を使ってるんだけど、毎回 gulp.src() の書き方で迷ってしまう。調べた結果 minimatch に行き当たったんだけど各種 glob 実装のドキュメント読んで把握しろ、という感じでよく分からなかったので早見表を作った次第です。 https://github.com/motemen/minimatch-cheat-sheet 確認用にテストを書いていて、そのテストケースからドキュメントを生成してるので間違いはないはずです。説明が間違ってる、この例も乗せた方が見やすいだろ、とかあればプルリクください。 折角なので日語版を書いておきますね。 基 * はパスセパレータを含まない任意の文字列にマッチ ** はパスセパレータを含む任

    minimatch(node.js で path match するライブラリ)のチートシートを作った - 詩と創作・思索のひろば
    ishiduca
    ishiduca 2014/07/16
  • 1