Skip to content

Instantly share code, notes, and snippets.

@masa16
masa16 / gfqsub.md
Last active July 17, 2018 08:43
Gfarm用ジョブキューシステム gfqsub

Gfarm用ジョブキューシステム gfqsub

https://github.com/chokkan/gfqsub

Gfarmファイルシステムに置かれたファイルの局所性を考慮した簡単なジョブキューシステム。岡崎さん作。Pythonで記述。Qiitaの記事で少しだけ触れられている。

使い方

設定ファイル

~/.gfqsub に設定を書く。

@toshia
toshia / teokute_fav_mikutter.md
Created March 7, 2017 11:21
ておくれ、ふぁぼ、mikutter

ておくれ、ふぁぼ、mikutter

移植するにあたって

2016年10月から、「ておくれ、ふぁぼ、mikutter」を公開していたDropboxが、Publicフォルダに設置したHTMLファイルをWebページとして公開する機能を停止した。これによって、本文書はダウンロードすることは出来るが、ブラウザ上で閲覧することは出来なくなっていた。さらに2017年3月、同15日に明示的に公開リンクを取得しなければPublicフォルダに入れているドキュメントも公開されないように変更するというアナウンスがあった。公開設定をしてもブラウザで閲覧できないことも踏まえると、もうDropboxで公開するのは良い手ではない。

思えばこれを書いたのは2012年末。もう4年以上前ということに驚きを隠せない。本文には書いてないが、丁度祖父が危篤で、年の瀬であることも相まってかなり慌ただしい年末だったと記憶している。結局、2012年12月24日の昼下がり、私が京都の四条河原町近辺でせいべと昼食を食べながら、数日前に公開されたこの文書について語り合っている時に訃報が入り、せいべといっしょにすぐ近くのデパートに喪服を買いに行った。そんなときだったからと言うと言い訳になるが、校正が十分に行き届いておらず、そのうち直そうと思いながら今日に至る。

2012年というのは恐ろしく昔のことだ。2017年現在、StSは消え、Twitterは幾度となく倒産・身売りの話を繰り返し、ふぁぼはいいねになり、おるみんによって新たなておくれクラスタが形成された。今日も人はておくれ、ふぁぼり、mikutterを使っている。この文書は今となっては当時を切り取った貴重な記録になっており、再公開にあたって読み直してみると、自分の記憶が思いの外劣化していることに驚いた。この文書が当時想定していたような役割をちゃんと果たしていることが意外でもあるし嬉しくもある。

MIPSのABIは変だという話をこないだのシステムプログラミング会でしたら、ややザワッとしたので、なにがおかしいのかというのをちょっとまとめてみました。まとめてみて思いましたが、やっぱりMIPSのELFファイルはちょっと変です。

謎のmixed endianフィールド

これが僕は一番ひどいと思ったものです。

ファイルにマルチバイトの数値を保存するときはエンディアンというものが問題になります。たとえば0xBEEFという2バイトの数を保存するときは、1バイト目にBE、2バイト目にEFを書くか、逆順で書くかは、ただの決まり事でどっちでもいいわけですが、書く側と読む側で認識があっていないと困ります。世の中的にはリトルエンディアン(下位バイトから書く)のが主流ですがビッグエンディアンなシステムもあります。

それがですね、MIPSのELFヘッダのr_infoという64ビットのフィールドはリトルエンディアンでもビッグエンディアンでもない謎なエンコーディングになっています。具体的には下位32ビットが最初にリトルエンディアンで書かれていて、ビッグエンディアンでエンコードされた上位32ビットがそれに続くという構成になっています。つまりリトルエンディアンだとABCD EFGH、ビッグエンディアンだとHGFE DCBAとなるところが、MIPSのmixed endianだとEFGH DCBAというふうにファイルに書かれていることになります。

#include <unistd.h>
#include <curses.h>
char *sl[] = {
" o o o",
" o ",
" o ____ ",
" -- |OO| ",
" _||__| | ",
" | | ",