nix の overlay を使ってみる
はじめに 昨年からパッケージ管理ツールとして Nix を使っています。現在、プロジェクトはすべて Nix を利用しています。 Web 開発では、Node.js の LTS バージョンをよく使います。Nix は NPM パッケージを nodePackages として提供していますが、最新の Node.js を使うようになっていますので、以下のようにすると Node.js を二重に取得してしまいます。 1 2 3 4 packages = [ pkgs.nodejs_22 pkgs.nodePackages."@angular/cli" ] 最近、この問題を解決する良い方法を見つけました。 overlay を使ってみる Nix には overlay という機能があり、ミドルウェア関数のようなものです。これで pkgs.nodejs を pkgs.nodejs_22 に設定できるのです。 以下に例を示します。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 { inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; outputs = { nixpkgs, ... }: let pkgs = import nixpkgs { system = "aarch64-darwin"; overlays = [ # 後で説明します (final: prev: { nodejs = prev.nodejs_22; }) ]; }; in { devShells.aarch64-darwin.default = pkgs.mkShell { packages = [ # overlay によって pkgs.nodejs_22 と同じになった pkgs.nodejs # これも pkgs.nodejs_22 を使用するようになる pkgs.nodePackages."@angular/cli" ]; }; }; } overlay は高階関数です。すなわち、関数を返す関数です。 ...
5chで書き込む際のUA
はじめに 自分の作ったアプリで5ちゃんねるなどに書き込みますが、先週くらいから5ちゃんねるに書き込むと、ユーザーエージェント(以下、UA)に関するエラーが出てしまい、書き込めないようになりました。 コードでは UA を Monazilla/1.00 にしていましたが、少し換えてみると書き込めるようになりました。 拒否されるパターン 公式な仕様書はありませんが、いろいろ試してみたところ、以下のような UA の場合にエラーが出ることが分かりました。 単に Monazilla/1.00 と設定したUA。 日本語を含むUA。例:Monazilla/1.0 (ほげ 1.0)。文字コードの問題かな? 括弧を含まないUA。 有効なUAの例:Monazilla/1.00 (hoge 1.0) まとめ もし「不正な UserAgent を検出しました」といったエラーが出てきて書き込めないなら、おそらく UA を上記の条件に該当しないようにすると良いでしょう。
ブログを始めました
大石泉が言うように、ハローワールド。(そういえば挨拶がハローワールドならおやすみはなんでしょうか) 以上。