• 作成:

UNIX(記憶管理), 間違ったリポジトリ名を変更しました, WebMoneyのAPIがCGI必須になっててつらい, アルゴリズムとデータ構造2(ソート(1))

UNIX(記憶管理)

記憶管理 - UnixClassWiki

MMUの話.

今はCPUに内蔵されていることが多い.

家庭向けのMMUのページサイズは8KBぐらいだけど, HPU向けには増やしてあったりする.

本来の意味でのスワッピングとは, プロセスの使っているメモリをまるごと外部記憶領域に移動することを指す. Linuxはページングのことをスワッピングと言っている.

「スワップの意味が変化したと考えられませんか?」 「スワップは技術用語なので, 変化してはいけない, 俗語としてスワップを使うことは別に良いですけど」

プログラムには局所参照性があり, 同じ場所あたりにアクセスを繰り返す性質を持つ場合が多い. だからページングが成り立つ.

LinuxのページアウトのポリシーにはLeast Recently Usedが使われている.

かねてから気になっていた間違ったリポジトリ名を変更しました

私は今関わっているシステムのリポジトリ名をつけ間違えました.

railsで開発されていた前のシステムをほぼ放棄する形でスタートしたため,

application-yesodのようにリポジトリ名にyesodという名前を含むという狂った名前になっていました.

前のリポジトリとの名前の衝突を避けるとしても, application-nextとかにするべきでした. フレームワークの名前を含むことは狂っています. 将来的にもしservantを使いたくなったらどうするのかとか, Yesodと他のフレームワークを組み合わせようとするとなぜYesodだけ名前に入っているのかとか, そういうことを考えていません.

いや, 当初は古いapplicationのリポジトリ名がそのままプレーンで, Yesodで作っていたのはあくまでプロトタイピングのつもりだったんですよね.

しかし, リポジトリ名を含めると, 既に本番にデプロイしている環境のディレクトリやサービス名を変更したりしないといけないため, 中々リポジトリ名変更には踏み切れませんでした.

しかし, 今回WebMoneyを導入する作業をするときに, 直接バイナリを呼び出せるようにする必要が出てきました. 完全にYesodを使わないプログラムを置くのに, それでもディレクトリ名にyesodが付いているのは流石に変だろうということで, ついにリポジトリ名を変更することに踏み切りました.

GitHubのリポジトリ名を変更したら, Travis CIもそれを追随してくれるんですね, 良かった.

この名前のつけ間違えは私の強迫性障害の強迫思考の多くを占めていたため, これを変更することで少し病状がマシになることを願っています.

しかし, どうせ変更するなら本番にデプロイする前にさっさと変更してしまえば良かった. URLが変わることを嫌って変更していませんでしたが, 私が強迫思考で時間を無駄にしてきたことを考えると, 些細なことですね.

application-yesodというリポジトリ名を見るたびに暗澹たる思いとなって. このソフトウェアに一生関わるとしたら, 私は一生間違ってつけられたリポジトリ名と関らないといけないのか… なんて気持ちになって, それが理由でこの仕事辞めたいとか思い始めていたので, 変える機会があってよかったです.

リポジトリ名が気に入らないから退職するって相当異常者っぽい思考ですが, 強迫性障害があるから仕方がない.

WebMoneyのAPIがCGI必須になっててつらい

少し触れましたが, WebMoney対応の作業をしています. これがものすごいアレで, アレです.

契約をしたのが自分じゃないので, 細かく仕様を喋って良いのかわからないので, ちゃんと詳しくどのへんがダメなのか言えなくて申し訳ないのですが, とにかくダメです.

このままではWebMoneyは消滅するのでは?と思うぐらいです.

この仕様に対応したソフトウェアを書くのは非常に苦痛で, 逆にStripeはなんて使いやすいんだと思い始めました.

今時バイナリ配布された実行ファイルをCGIとして設置しないといけなくて(これぐらいは書いていいよね), せっかくYesodでアプリケーションが一枚岩で統一されているのにわけのわからないことになって大変困る. そもそもApacheを使っていないからそのままの環境だとCGIが動かせない. Yesodをリバーシプロキシのように使ってまるでCGIのサーバのようにプログラムを実行することは出来るんでしょうか? 原理上可能ではあるとは思いますが.

FastCGIなら使ったことがありますが, CGIを使ったソフトウェアを自分で書いたことがないので, CGIの動作原理が今ひとつわかっていません. 誰かに教えてもらいたい…

アルゴリズムとデータ構造2(ソート(1))

ヒープソート.

ヒープは構造としては二分木だが, 配列でも表現できる.

C言語のqsortの使い方がvoidポインターまみれで独特という話. まあC++でstd::sortを使えば良いですね.

そう言えば同じくジェネリクスを備えていないGo言語のソートはどうなってるんだっけと思って調べ直したら当初は面倒くさかったけど今はそれなりに楽になっているみたいですね. Big Sky :: golang の sort インタフェース難しい問題が解決した Lessなどがスライスと添字を渡す形式になっているのはなんでなんでしょう? 改善後のSliceでもそうなっていますね. 普通, 比較インターフェイスはスライスを渡さずに, 要素をそのまま渡すものでは? HaskellのsortByみたいな感じで. C言語のqsortですらvoidポインタですがそうなっています. Go言語特有の事情があるのでしょうか.

演習課題に出てきたquick_sqrtの実行順がわからなかったので足りないところを実装して出力してしまうというずるをしてしまいました. ちゃんと内部ソートになっているクイックソートはややこしいですね.