ナンモワカランアザラシ

技術的なアレコレを自分の言葉で書いて保管・公開しておくための静かなインターネット

モニターの解像度に合わせてCanvas要素のサイズを変える

モニターによって、1単位長さに表示できるピクセル数は異なる。 Canvas要素のstyle上の大きさと描画の大きさを気にしてあげないと、モニターによってはぼやけてしまう。 それを回避するための基本的な考え方を記載する。 window.devicePixelRatio https://d…

UltiSnipsでnvimにスニペットを導入した(vue.snippetsの例示付き)

https://github.com/SirVer/ultisnips vueファイルを作るときに<template>とかの記述は決まり切っているのでsnippetsで解決した。 作ったファイルにvuesetupと挿入してtabキーを押すと、事前に記述しておいたコードになる。 プラグイン管理にはvim-plugを利用している</template>…

『Clean Architecture 達人に学ぶソフトウェアの構造と設計』を読んだ

https://www.amazon.co.jp/Clean-Architecture-%E9%81%94%E4%BA%BA%E3%81%AB%E5%AD%A6%E3%81%B6%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E6%A7%8B%E9%80%A0%E3%81%A8%E8%A8%AD%E8%A8%88-Robert-C-Martin/dp/4048930656 読んだので…

tmuxのデフォルトシェルにfishを指定したいのだけど環境によってfishのpathが異なるから困る

いわゆるdotfilesの話だ。 .tmux.confを複数環境で共有したいのだが、使いたいシェルのpathが異なる場合がある。 fishのpathが/usr/bin/fishだったり/opt/homebrew/bin/fishだったりする。前者はubuntu on wsl2で、後者はmacだ。 .tmux.confだとwhich fishの…

日記: 現代における開発の様子 with AI

AIによって我々の生活は楽になるのか。ならない気がする。 エディタ上 Copilotによって単調な作業は半自動化された。 「こんな感じ!」と念じるとそれらしいものが出てくる。提案を承認するつもりでtabキーを押す。```が最後の行に書き込まれる。手動で消す…

ヒアドキュメントって何

なんか<

nodejsのcanvas

https://github.com/Automattic/node-canvas https://github.com/kesompochy/shu-chu-sen.js を作るのに使った。 ブラウザの2D CanvasAPIとほぼ同じように使える。 createCanvasでcanvasを作成して、getContextでctxを取得する。取得したctxで線を引いたり四…

Dockerを動かすためのコンポーネントって何があるの

runcのアレがあったのでバージョンを上げようとしていたら、この辺が全く分からないことに気づいた。 ~ $ docker version Client: Docker Engine - Community Version: 25.0.2 API version: 1.44 Go version: go1.21.6 Git commit: 29cf629 Built: Thu Feb 1…

サブネットマスクって何

毎回わからなくなってるので理解を書き起こす。 せっかくなので、サブネットについて書かれているRFC950を眺めた。読んだとは言ってない。 https://www.rfcreader.com/#rfc7322 IPv4のアドレスは32ビットで表現される。232 ≒ 43億通りのアドレスが表現できる…

terraformなんもわからん

plan, applyはなんとなく想像がつく。providerに応じてAPIを叩いているのだろう。 stateファイルもなんとなく想像がつく。applyしたときのリソースの状態を記述するのだろう。 initって何やってるの?たまに-migrate-stateとか-reconfigureとか何やってるか…

pythonで構成図を書く`diagram`

github.com pythonで宣言的に構成図が書ける。 アイコンも有名どころは揃っている。AWSとかGoogle Cloudとか。 https://diagrams.mingrammer.com/docs/nodes/gcp from diagrams.onprem.client import Client こんな感じでimportできる。 with Diagramでダイ…

aptってなに

neovim周りを触っていて、どうやらapt-get installでいれたものが最新バージョンでなかったらしい。 ソースからビルドしようとしたらcmakeがなかったので入れた。そしたらどうやらapt-get installで入れたものが最新バージョンでなかったらしい。 なので htt…

vim-plugでNeovimのパッケージ管理

私物のPCでのエディタをNeovimにしはじめた。 tsを書くにあたってLS(Language Server)による型チェックをしてほしかったのでパッケージを入れることにした。すでにcopilotは入れていたのだが、直に.config/nvim/packにcloneしていた。 LSPであれこれするの…

リモートと同期したローカルのgithubリポジトリを一発で作るコマンドを作った

fishスクリプトで書いた。 github.com function ghq-create --argument repo_name gh repo create $repo_name --public ghq get "git@github.com:"(git config user.name)"/"$repo_name".git" cd (ghq root)"/github.com/"(git config user.name)"/"$repo_na…

Windows Terminalで「破壊するa」と打つと固まる

もともとコミットメッセージに「リモートと同期するgithubリポジトリを作りたい」と書きたかった。gを打鍵した段階でターミナルが落ちた。 ターミナルをWindows TerminalからHyperに変えたらこの現象は起きなくなったのでおそらくWindows Terminalに原因があ…

WebGPUに入門した

developer.mozilla.org このページに倣って、vertical shader + fragment shaderによる三角形描画(よくあるハローワールド)と、compute shaderによるGPU計算のスクリプトを書いた。 github.com やったことはcopilotつきの写経だったので、何が行われている…

`#!`が何をしているかstraceで探りたかった

#!は"シェバング"と読むらしい。 スクリプトの最初に示すことで、実行するインタプリタを指定できる。 例えば次の場合を考える。 #!/usr/bin/fish echo "hello" これをfishから実行する。 ./test.sh このとき、次の流れが行われる。 スクリプトファイルtest.…

dotfilesリポジトリを作った

github.com zshからfishに乗り換えることにした。ついでにdotfilesをgitで管理しはじめた。とりあえず最低限の作業ができるように、abbrとghq + pecoのキーバインドをした。 いろいろな端末でソフトウェアの設定が乱立しているので、どこで何を使っているか…