diary

「Javaで書いてあるからどのOSでも動く」の話

僕はWrite once, debug anywhere に賛同しているので,「Java で書いてあるからどの OS でも動く」と聞くたびにモヤモヤする. Java で書かれたソフトウェアが「どこでも動く」というのは,「開発者がわざわざどこでも動くようにしなくても動く」 という意味というより,「開発者が手間をかければどこでも同じバイナリで動かせるようになる」という 意味だと思う. 実際 Java で「Windows では動くけど他の OS だと動かない」ソフトを書くのは簡単で, InputStream strm = new FileInputStream("C:\\Users\\username\\foo.txt"); (しばらく書いていないのでこれでファイル開けるんだったか忘れた)って感じで書けばいい. Java の外の世界に非互換の原因を作るのは簡単で,Java で書いたならどのOSでも動く ということにはならない

ThinkPad X1 Carbon

買ったの書いてなかった. Lenovo の ThinkPad X1 Carbon (7th Gen) を買った.価格は税込みで 21 万くらいだった. 14インチで1キロ強というのはやっぱり軽くていいなと思う. まあまだ外に持ち出したことないけど. 主な構成 CPU: Intel Core i7 10510U メモリ: 16 GB ストレージ: 512 GB NVMe ディスプレイ: 1920x1080 キーボードは英語(どうでもいいけど何故か金取られるので書かずにはいられない) 正直言ってあまりストレージやメモリを使うことをやってないのでメモリ 16 GB とストレージ 512 GB はオーバースペックな気がするが,まあそこ気づいていないことになっている. で,買った段階では OS が入っていないので(Windows?知らない子ですね)ArchLinux を入れた. 僕は面倒な環境構築はすっ飛

for と while

どうでもいいけど for 文と while 文だったら for 文を優先して使うことが多い気がする。 繰り返し系は最初に for 文の方で書いてみて,変数の初期化の部分と更新の部分が空欄になったら while に変えるみたいな。どうでもいいけど。 while 文は途中で continue とかすると変数の更新を忘れがちなので, 文法に組み込まれている for 文の方が都合が良いという理由はありそうな気がするけど 自分でもよくわからない。

ls --hyperlink の Feature Request を見つけた

https://lists.gnu.org/archive/html/coreutils/2017-05/msg00000.html こんな変なものも割と簡単に受け入れられるんだな,と思った。 で,ここにパッチとかも入ってるメール。 https://lists.gnu.org/archive/html/coreutils/2017-08/msg00038.html

チャンクアップデートの最初幅を使ってパフォーマンスチューニングした

Minecraft で読み込まれるチャンクの半径は 3–16 の間で選べるのだそうだ。 ということは,5 チャンク飛ばして更新されているか確認していけば 3 チャンクだったとしても どこかのチャンクにはぶつかるということだ。 というわけで,1 チャンク見て,間の 5 チャンクは更新されているかの確認もせずに 飛ばして,更新されていたら間のチャンクがアップデートされているか確認する ということにすると,何も更新がない場合の生成がかなり速くなった。 やっぱりやることを減らすと簡単にかなり速くなる。

xterm でクリックできるっていうのでいうと

xterm だと何らかのコントロールシーケンスでマウスのクリックを 取れるとかいうのがあったな。そんなコントロールシーケンス使ったことないので 説明はできないが。 working example でいうと,w3m とか。w3m 素敵だよね。 こんにちの Web には対応不可能感が漂いすぎてるけど。 あと Emacs だと M-x xterm-mouse-mode でマウスで カーソルを動かしたりできるようになる。

Linux From Scratch

有名すぎて今更感あるけど(でも実際にやった人はあまりいないと思われ)やってみたい。 grub のコマンドを編集すると bash を init ってことにして 立ち上げたりできるので(シングルユーザーモードで起動するみたいな話), 特定の処理専用の Linux を作れるよな,と思ったところから, Linux From Scratch したいみたいな発想になってしまった。 http://lfsbookja.osdn.jp/7.10/ 翻訳のバージョンはちょっと古そうだが,英語を読むという辛さがないし, 参考にしながら腕試しがてらやってみるのもいいかな,という気持ちになった (持てる知識だけで新しい構成にしつつ起動するところまでいけるのかは微妙)。 そもそもこれは systemd じゃなさそうだし,systemd にするにはいろいろ変える必要がありそう。 まあ僕は

いくつかこまごましたツールを作った

今日は小さいツールを2つほど作って,ちょうど700行コードを書いた。 まあ空行とかコメント(ほとんどない気がする)も含まれるのであまり意味のある数字ではないけど。 1つはパイプラインの中で標準入力をテキストエディタで編集して標準出力に流すというもので, なんかこんなのすでにシステムにインストールされたりしてそう……。 作っている時はパイプラインの中で使うという発想があまりなかったし, あまり機会がある気がしないが,ヒアドキュメントとかヒアストリングとかを意識して hereed というゴミみたいな名前にした。 もう1つは Wake-on-LAN のユーティリティで,0個以上の予め登録したホストを 同時に Wake-on-LAN できるというものだ。 送るホストを選ぶところ

Kick-Flight

操作が難しすぎる。チュートリアルでもイマイチピンとこなかった。でもデザインはけっこう好きな部類。 あと,なんとなく名前がゴルスタに似ている。 https://apps.apple.com/jp/app/%E3%82%AD%E3%83%83%E3%82%AF%E3%83%95%E3%83%A9%E3%82%A4%E3%83%88/id1445521758

Open VPN を使ってみたり

実家に帰ってきたら,いろいろポートが塞がってたりディストピア感がすごかったので, Open VPN を使って人権を獲得した。 RaspberryPi に APT で入るやつは公式の install guide に沿ってインストールできないように見えたので 辛そうだなと思っていたら,便利そうなスクリプトが転がってたのでそれを使った。 https://github.com/angristan/openvpn-install どういう設定で入ってるのかは知らん(アカン)が,まあローカルにあるサーバーだし問題ないやろ。 でも聞かれることに答えるだけでいい感じにしてくれて,あとは吐き出される設定ファイルを クライアント側に食わせるだけでよかったので本当に楽。 ちなみにクライアントは公式っぽいクライアント を使った。OS は Windows。BETA って書いてあるな。まあどうでも