*iroi*

mechairoi の Blog

Material Color Utilitiesの9つのDynamic Scheme

github.com Material Color UtilitiesはMaterial 3のカラーシステムに関するアルゴリズムやユーティリティを含むライブラリです。 HCT色空間や 画像から代表色を抽出するquantizeなど様々なコンポーネントを含んでいます。最近リリースされたv0.3.0 *1で非推…

go-readabilityをwasmにしてCloudflare Workersで本文抽出する

先日Cloudflare Workersでウェブページの本文を抽出したくなったことがありました。本文抽出といえば、@mozilla/readabilityが使えそうです。しかし依存に含まれるnwsapiにはFunctionコンストラクタが多用されており*1、Cloudflare Workersでは動作しません…

PlaywrightのレポートをCloudflare PagesにデプロイしてGitHub IdPでアクセス制限する

Playwright のテストレポートをCloudflare Pagesにデプロイする方法を紹介します。Cloudflare PagesにはPreview deploymentsがあるため、Pull Requestごとのレポートをデプロイできます。また、Cloudflare Zero Trustの機能を使えば、アクセス制限も容易です…

iOS Safari でキーボード表示時にフッターを固定するもう1つの方法

zenn.dev エディタを作っていると iOS Safari でキーボードを開いたときの挙動は本当に大変ですよね。 この記事では、キーボードを開いたままスクロールしてもフッターを固定できるようなワークアラウンドを最近見つけたので紹介します。 Safari 16 以降が必…

SQLiteでLinderaを使った日本語全文検索

これは はてなエンジニアアドベントカレンダー2023 3日目の記事です。 はてなエンジニア Advent Calendar 2023 - Hatena Developer Blog はてなエンジニアのカレンダー | Advent Calendar 2023 - Qiita 昨日は id:pokutuna さんの blog.pokutuna.com でした…

ghq/fzf で選んだリポジトリに対応する tmux の session を作ったり探したりするスクリプト

gist41201c4579d17253b7bd26e699c6dccb リポジトリを ghq | fzf で選ぶ リポジトリに対応する session が tmux になければ作る 対応する session が存在する場合はそれを前面に といったことを行うスクリプトです。 session の current directory がリポジト…

Wikipedia の作り方 / How to make Wikipedia

こんにちは。アプリケーションエンジニアの id:mechairoi です。 この記事は はてなエンジニアアドベントカレンダー2014 の10日目です。 昨日は id:hatz48 さんの Mackerel と fluentd でサービスの状態を可視化する - Hatena Developer Blog でした。 今日…

emacs から git-browse-remote で GitHub をいい感じにひらく

カーソル位置とかリージョンで選んだ範囲をブラウザで開けるやつです。 C-u つけると --rev になるのがおしゃれポイントです。 以上です。 参考 git-browse-remote 0.1.0 を公開しました & Vim からいい感じに GitHub を開く - 詩と創作・思索のひろば (Poet…

Scala use cases at Hatena という発表をしました。#ScalaMatsuri

はてなで最近作っているMackerelMackerel: A Revolutionary New Kind of Application Performance Management Calling for Beta Testers! Mackerel: A Revolutionary New Kind of Application Performance Managementの開発には Scala を使ってます。 発表で…

ghq get しつつ cd する

zsh

雑な zsh function. .zshrc に function gc () { cd $(ghq get $1 | tee -a /dev/stderr | tail -n 1 | awk '{ print $NF }') } 追記: ghq の挙動変わってたので雑な変更 function gc () { cd $(ghq get $1 2>&1 | tee -a /dev/stderr | head -n 1 | awk '{ …

Slick の lifted embedding で FOR UPDATE する

mechairoi/slick-for-update-sample · GitHubSlcik の lifted embedding で 無理やり FOR UPDATE できようにするサンプルslick-for-update-sample/Driver.scala at master · mechairoi/slick-for-update-sample · GitHubみたいに PostgresDriver を継承した …

Docker を使って Haskell を Heroku の cedar stack 用にコンパイルする

Heroku で Haskell を動かす方法は http://daimatz.hateblo.jp/entry/2013/02/09/164531 のように buildpack を使うとデプロイ時に Heroku のホストでビルドできて便利です。しかしビルド時間が15分までで Yesod などを使っていると間に合わず、手元で Ubunt…

kyoto.js #5 で Emacs から WebSocket で Google Chrome を操作する拡張について発表しました。 #kyotojs

先日開催された Kyoto.js #5 で LT をしてきました. crxel Emacs から Google Chrome を操作する crxel というライブラリを作っているので発表しました. 今回の発表ではこのライブラリを使ったデモとして Emacs から Google Chrome のタブを Anything で切り…

Anychrome って Google Chrome 拡張を作っています

id:hitode909 さんに手伝ってもらいました。ありがとうございます。 概要 こちらをインストールすると追加されるかわいいトマトのアイコンを押すと、開いてるタブと履歴からインクリメンタルに選んでアクティブにしたり開いたりできます。 今はタブと履歴か…

gdbでEmacs Lisp のスタックトレースを表示する

Emacs"で"デバッグする方法はいっぱい出てくるのに、Emacs"を"デバッグする方法が http://www.emacswiki.org/emacs/DebugEmacs くらいしかみつけられないです...とりあえずgdb で elispのスタックトレースをみたいので GDBで実行中のスクリプト言語のスタッ…

emacs で git blame して summary も表示する (mo-git-blame.el)

みんな大好きな git blame をいい感じに表示します。author より summary の方が有益なのでそれも表示します。こんな感じになります。 以下導入方法 https://github.com/voins/mo-git-blame/blob/master/mo-git-blame.el から mo-git-blame.el をいれます M-…

gudでソースコードを表示してるwindowを常にセンタリング

カーソルがwindowの下の方にいってしまうと次の行が見にくくて辛いので perldb-ui.elでしか試してないです.

はてなに入社しました

Emacsの isearch の highlight を全ての windowで

Emacsのisearchによるハイライトは貧乏性なのかカレントバッファでしか行われない. それでは不便なので, 表示されてるバッファ全て(現在のframeの全てのwindow)でハイライトするいい加減なスクリプト.

Template-ToolkitのMACROとかBLOCKをctagsで

Exuberant ctagsで使えます. ~/.ctags にいい加減な正規表現を書く. なんかmacだと動かない? なんか他の環境では動かないらしい。 正規表現書き換えたら動いた。ctagsのバージョンとかは $ ctags --version Exuberant Ctags 5.8, Copyright (C) 1996-2009 D…

perlのflymakeの設定

buffer localにしたかったのでPERL5LIBにsetenvせず起動オプションで -Mlib glob. 常にgitを使うのでgitプロジェクトの一番上を起点にしている. ;; -- flymake (add-to-list 'flymake-allowed-file-name-masks '("\\.t$" flymake-perl-init)) ; pm, pl は設…

GTAGSのパスを指定したanything-gtagsのsourceを作る.

(バッファが属する)ProjectのTAGSと(global-modeに応じた)LibraryのTAGSとか同時に使いたいです.anything-gtags.el でプロジェクトのGTAGSは既に使えるので, GTAGSファイルのパスを指定できるsourceを作って, 複数のsourceを扱うのはanythingにおまかせする…

Test::Class でメソッドの単体テストを elisp でさくっと

Test::Class でメソッドの単体テストを vim script でさくっと - #生存戦略 、それは - subtechが便利過ぎる!!!のでemacsでもしたいです. (defun run-perl-method-test () (interactive) (let ((command compile-command)) (save-excursion (when (or (re-se…

gtags(GNU global)をperlとかで使う

etagsは使いにくいしgtagsは対応ファイルフォーマットが少ないしと思って色々調べていたらExuberant ctagsを使ってGTAGSを作れるようなのでやってみた.ちゃんとした機能ではなくgtagsのプラギン例のようです. ctagsが元になってるので global -rはできないで…

vimpulseとanythingを使う設定とか

vimpulseを使っているとanythingとかでminibufferに入ったときにinsert-stateになっててC-nとかC-zが使えなくて悲しいのでなんとかしてみた.vimpulseはvimpulse-define-keyでmodeのkeybindを拡張できるようなのでまずminibufferにminor-modeをつける. よくわ…

anything.elでプロセスに対しても複数行のバグ

d:id:rubikitch:20101122:anythingで取り込んで頂いたパッチにprocessの出力が二回以上にわかれて来たときに二回目の挿入位置が前回の位置を覚えていないようで順番とか色々変になるバグを埋め込んでしまいました. 勘で修正してみましたがinsertとinsert-bef…

File ... is checked in. Check it out?

File ~/config/.emacs.d/elisp/init.el is checked in. Check it out?とか聞いてくる鬱陶しいのはemacsさんだと思っていたら, viperさんだった. emacsさん疑ってごめんなさい. http://www.emacswiki.org/emacs/ViperMode#toc10 に解決方法が載ってた.

anything-git-grepをsubmodule対応など

d:id:mechairoi:20101120:1290245957のanything-git-grepを少し改良.変更点は スペースでAND検索 git submodule foreach 'git grep ...' で submoduleを検索するanything-c-source-git-submodule-grep を追加 (sed, grep に依存, patternに'が含まれてると動…

vimpulse で stateごとにモードラインの色を変える

どこかで見つけてvimに設定していたら、これが無いと妙に落ち着かなくなってしまった. mode-lineの色がinsert-stateだと黄色, vi-stateだと白, emacs-stateは危険な(何が起こるかよくわからない)ので赤とかになる. (current-buffer)が変わった後に呼ばれるho…

anything-git-grep

anything-grep は合わなかったので、anything-git-grep を作ってみました. 入力の度にgit grepする. magit,anything,d:id:mechairoi:20101120:1290245166が必要.(とりこんでいただいたのでanything最新版だと不要) anythingは複数sourceとか, 遅延とかがとて…