macOS 14.5 と Ubuntu 24.04 で確かめた。他の Un*xes で動くかは未検証。 幅 $ tput cols 高さ $ tput lines
このブログのテーマを自作してみました。 このテーマはお堅い(?)ソフトウェア技術書から発想しました。「プログラミング言語C」とかちょっと前のオライリーの本とかをイメージしています。背景色に書籍の紙をイメージしたクリーム色、フォントは明朝体、…
ある URL からのレスポンスのステータスコードだけ知りたいときがある。404 かどうかだけわかればよいときだったり。 そういうときは curl の --write-out / -w オプションが使える。このオプションには %{http_status} などの変数を含んだテンプレートを渡…
Rust は人気なプログラミング言語である。 しかしながら今は Rust は Plan 9 での実行をサポートしていない。 doc.rust-lang.org したがって Plan 9 で Rust で書かれたプログラムを実行するには、コンパイラを移植するといった大変な作業が必要かと思ってい…
Go 1.22 から実験的機能として Range Over Func が実装された。 このブログでは Range Over Func とは何か、どういうものなのか、といった説明はしないので、知らない人は次のページを見てほしい。 go.dev 標準パッケージの database/sql で RDB を Query す…
スライスのソートを維持したまま要素を追加する関数 appendSorted の実装 func appendSorted[S ~[]E, E cmp.Ordered](s S, e E) S { i, _ := slices.BinarySearch(s, e) return slices.Insert(s, i, e) } 挙動 s = []int{} s = appendSorted(s, 4) // [4] s …
この記事ははてなエンジニア Advent Calendar 2023の 12月36日 2024年1月5日の記事です。 developer.hatenastaff.com Mackerel をファイルシステムにしてみましょう。 Mackerel でファイルシステムを監視するのではありません。 Mackerel をファイルシステム…
ややこしかったので こうする $ perl -Mutf8 -CSDA [のこりのオプション...] 使用例 $ echo 'にゃんぱす' | perl -Mutf8 -CSDA -nlE 'say length($_);' 5 かんたんな説明 -Mutf8 でプログラムが UTF-8 で記述されていると指定 -C オプションの次の引数で要素…
Mackerel Advent Calendar 2023 12月17日の記事です。 qiita.com Mackerel は OpenTelemetry のメトリックに対応するよう開発中です。この記事では OpenTelemetry のヒストグラムメトリックの詳細と Mackerel での扱い、 SDK を用いてヒストグラムを計装する…
Mackerel Advent Calendar 2023 の2日目の id:rmatsuoka です。 qiita.com 私は今年に新卒としてはてなに入社し、 Mackerel のアプリケーションエンジニアとして開発に携わっています。さて Mackerel では OpenTelemetry のメトリックに対応することが発表さ…
いつからかは分からないが、最近の macOS の /usr/bin/diff は色をつけるオプションが生えた。 記憶が曖昧だが過去のバージョンではこのオプションはなかった気がする。 使い方は簡単。 --color オプションをつけること。 下は macOS (Ventura 13.5.2) の di…
GNU/Linux で df の挙動を見てみよう。引数に(デバイスファイルではなく、普通の)ファイル名を渡すと、それが保存してあるファイルシステムを探してきて、デバイスファイルやマウントポイントなどそのファイルシステムの情報を表示する。 $ df Makefile File…
.netabare { font-size: 1.3rem; border: 3px solid; padding: 0.3rem 0.8rem; border-radius: 12px; margin: 1rem; } .large-font { font-size: 3rem; } ネタバレ 犯人は BASH_ENV 私がシェルスクリプトを書いていたとき、 bash が勝手に環境変数を変えてく…
入力モードを切り替えるキーバインドは何を設定していますか? 私はこれまで ctrl + \ で入力ソースを切り替えていたが、ターミナルで STOP シグナルを送るキーバインドとかぶっていることに気づいた。 普段 STOP シグナルを送ることはあまりないが、このよ…
要約 いま動いているインタラクティブシェルを知る方法に環境変数$SHELLを読むのが広く知られているが、これはこの環境変数の誤った使い方である。 $SHELLはユーザーのお気に入りのシェルを指定するものである($EDITORに近い)。 シェルは起動時に$SHELLの値…
Goには比較可能ではない型がある スライス 関数値 上記のものを含んだ構造体など package main import ( "fmt" ) func main() { a := []int{1, 2, 3} b := []int{1, 2, 3} fmt.Println(a == b) } $ go run x.go # command-line-arguments ./x.go:11:14: inva…
株式会社はてなに入社しました 株式会社はてなに入社しました - hitode909の日記 本当です。23年度の新卒エンジニアとして入社します。 Plan 9にハマったら株式会社はてなに入社した話 Plan 9を調べていくうちに blog.lufia.org というブログを見つけて、そ…
まとめ //go:generate sh -c "m4 -DVAL=\"hello world\" hello.go.m4 > hello.go" 注意点 //go:generateディレクティブ以降に指定されたコマンドはシェルで実行されるわけではない。 だからシェルが提供する機能であるクオート、標準出入力は使えない。 ただ…
pkg.go.dev fs.FSを実装するには次のインターフェースを満たす具象型を実装しなければならない。 fs.FS fs.File and / or fs.ReadDirFile fs.DirEntry fs.FileInfo 多いね。それぞれのメソッドとインターフェースの関係は次の図で表すことができる。 例えば…
github.com Usage postsrv [-flag] cmd [arg ...] postsrvはとてもシンプルなHTTPサーバー。 カレントディレクトリをサーブするファイルサーバーとほとんど同じだが、/uploadはPOSTリクエストをハンドルする。 POSTリクエストのBodyが標準入力を通してcmdへ…
Unixにはシステムコールやライブラリ(C言語)、コマンド(シェルスクリプト)などのインターフェースを定義したPOSIXという規格がある。移植性の高いソフトウェアの開発を容易にすることを目的としており、GNU/LinuxやmacOS, BSDなどはPOSIXにだいたい準拠…
github.com u9fsはPlan 9に付属している(のに)Unix向けのソフトウェアである。これはUnixのファイルシステムをPlan 9の通信プロトコル9Pでサーブし、Plan 9でマウントすることを目的としている。私は初め使い方が全く分からなかったので、私と同じ人のため…
これは技術ブログでない。ただの日記だ。 皆様はPythonでUnixのコマンドcatを実装できますでしょうか?それっぽいのではなく、ちゃんと標準の/bin/catと同じ動作するものを作ろうとすると意外と引っかかる部分が多いと思います。 まず最も単純な実装(cat1.py…
タイトル通り。 github.com [init]-+-[systemd-journald] |-[systemd-udevd] |-[systemd-oomd] |-[systemd-resolved] |-[systemd-timesyncd] |-[acpid] |-[avahi-daemon]---[avahi-daemon] |-[@dbus-daemon] |-[irqbalance] |-[python3] |-[polkitd] |-[powe…
sedの置換表現s/foo/bar/のセパレータは/でなくても良い。\と\n以外の1byteキャラクターなら何でも良い。だからsequenceも使える。 $ echo _qu_ | sed sequence _nc_ 他に使える英単語は?次のシェルスクリプトを使って探そう。 #!/bin/sh words=/usr/share/…
zshはmacOSのデフォルトログインシェルである。多機能で便利なシェルであるが、ダム端末で使われることを想定していないようだ。この記事ではダム端末とはshellやコマンドの出力をそのまま表示する端末のこととしよう。Acme, 9term, Emacs shellなどはダム端…
Brian W. KernighanとRob Pikeの「Unixプログラミング環境」にはpickと呼ばれるコマンドが紹介されている。 これは対話的にプログラムを処理するためにシェルスクリプトで書かれたツールである。pick args...とすると、引数を一度に1つずつ表示しユーザーの…
新しいものが見つかるたびにこまめに更新する予定 TermuxはAndroid上でLinuxのシェルが動かせるアプリケーションである。現在はF-Droidまたは直接apkをダウンロードすることによりインストールができる。このページではルート化していないAndroidについて述…
僕はUnix (Plan 9, Linux, *BSD, macOS, ...)で遊んでいます。その記録を残すためにこのブログを始めました。遊んでいるだけなので、ITエンジニアには役に立たないであろう情報が多いと思います。 Unixに関係する自己紹介 UbuntuとmacOSがメインのオペレーテ…