トップ «前の日(12-15) 最新 次の日(12-17)» 追記

本 日 の h o g e

hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。

更新情報の取得には rdflirs を使ってもらえると嬉しいです.


12/16/2002 おやき

tDiary 53日目

おやき

今日朝起きて、異様に腹が減ってたので冷凍庫の中に入っていた「おやき」を4つ程解凍して食べたら、イッパツで満腹になってしまった。おやき恐るべし。まさか仙豆でも入ってたのか?

どうでも良いけど、よくおやきとおかきを間違えるんだがどうしたもんか。

新幹線

何か東北新幹線、自由席のあるやまびこが激減して、全席指定のはやてとかいうクソがまかり通り始めた。ふざけやがってJRめ。どんどん不便になってくじゃねえか。全席指定になんかすんじゃねえバカ。

残悔積歩拳

なんか少し鬱かも。何事にもやる気…ていうか殺る気? がない。イヤ殺る気があったら困るが。ちなみにタイトルには意味はございませんのであしからず。良いタイトルが思い付かなかっただけざます。

そういや

こないだ久しぶりにdistrowatch行ったんだけど、いつの間にかGentooってMandrake、RedHatに次いで3位なんてところにいたんだね。まさかDebianを抜くとは…。すごいなぁ。

うーん、実は俺って先見の明あるかも? なんてね。むしろそりゃyoshかな。

懐かしのシリーズ

「芥川」

伊勢物語の一節。高校の教科書かな? 有名な文学だから特に懐かしいわけでもないんだけどね。男の人が女の人に夜這いをかけて、どっかに拐ってしまう話。当時はコレが普通だってんだから面白い。女の人を拐ったは良いけど、鬼にその女の人を食われてしまう。その時の女の人の叫び声「あなや」はとりあえずマヌケだと思います。

今日のBGM

Royal Hunt - Crown in the Mirror より "Wasted Time"

本日のツッコミ(全1件) [ツッコミを入れる]

yosh [Gentooを使う漢がそれほど多いとは。 今までのディストリビューションと違ういうのが大きいのかな? まあ、私はヘタ..]


12/16/2003

tDiary 418日目

[Gentoo] はやっ

emacs-w3m のアレがいきなり RESOLVED FIXED になった.usata さん仕事早っ!

メモ:

既にある ebuild の「こうした方がいいんじゃないの」は Severity:enhancement,Component:Applications

新規 ebuild の登録は Severity:enhancement,Component:Ebuilds

[日記] おぉ

ninix-aya の ChangeLog に名前を入れていただきました.Gentoo でもそうだけど,何だかんだいってやっぱり嬉しいなあ.些細なことでも貢献できてるって気がする.

[日記] あぁ

凄まじくネガティブな思考をしていたところに後輩が乱入してきて一気に持ち直す.ありがとう.

[Linux][メモ] 仮想記憶(VM)ファイルシステムとバインド・マウントの使い方

Gentoo ではデフォルトでマウントされる /dev/shm を PORTAGE_TMPDIR に据えると静音/高速化を計れるらしい.でかいアプリのコンパイル時やメモリが不足してると逆効果だそうだが./tmp をバインドしたり symlink するのも良いらしい.

…しかし PORTAGE_TMPDIR が消えちゃって大丈夫なのか? /var/db/pkg と /var/cache/edb が消えなきゃ大丈夫なのかな.

そういや usata さんが Portage ツリーをメモリ上で持ってると言ってたのはこれのことかな.

ぐわ

調子に乗って /dev/shm に ccache と TMPDIR を乗せたら容量不足で wine のコンパイルこけた….ccache のリミットを 128M まで減らして再コンパイルするもこける.ccache を別の場所に移動するもこける.

おのれ wine のコンパイルには 500M 程度の空きじゃ足りんというのか….

結局

最低でも 750M くらい空きがないとダメくさいですな.

教訓:オンメモリででかいアプリのコンパイルなんかするな

[Gentoo] お

/etc/make.globals 覗いてたら,CFLAGS のデフォルトって今 -O2 なんだねぇ.昔は -O3 だったような気がしたんだけど.

後輩が言ってた -O3 の最適化がへちょいってのと関係があるのかな (確か Debian のバイナリとの比較がどうのこうのって言ってた気がするが).

[] もえたん読んだ

まぁ何というか…大丈夫なのかコレ? と心配してしまうネタがてんこ盛りですな.

ちなみに emerge -p の pretend の意味をコレで知ったという恥ずかしい過去を持ってしまいました.もうダメだ.こんな本で「おぉ,そうだったのか!」なんて思ってしまうなんて一生の不覚….

本日のツッコミ(全7件) [ツッコミを入れる]

usata [いえ、Portage ツリーを持っているのは Solaris のメモリ上に単に 展開しているだけです。仮に rsyn..]

atzm [やっぱり中継サーバでパフォーマンス向上をはかるならデータ置き場としてメモリを選ぶのが最適なんでしょうかねぇ. ]

usata [-O3 ですね。今月の UNIX USER のでびあん通信に mhatta くんが書いて ますよ。元ネタは gent..]

atzm [今月の UNIX USER はまだ読んでないですが,後輩いわくデフォルトが -O3 だからどうのこうのと言ってた気が..]

usata [mhatta くんの文章はデフォルトが -O3 であると書いていました。(違うけど) 学校は quota が100M..]

atzm [あれ? stage3-pentium4-20030910 の中の make.conf は CFLAGS="-O3 -..]

usata [あー、なるほど。言われてみて確認したらまさにその通りでした。 確かに mhatta くんは正しいですね。濡衣を着せて..]


12/16/2004 うひ

tDiary 784日目

[戯言] うむ

勘違いしてはいけない.俺は楽をするために頑張っているのだ.

[日記] うーん

軽くデスマの予感.


12/16/2005 むう

tDiary 1149日目

[日記] 飯日記

  • 05時頃:カップ麺
  • 12時頃:学食にて定食
  • 22時頃:パン 2 個,カップ麺

12/16/2006 ふむ

tDiary 1514日目

[日記] 飯日記

  • 14時頃:パスタ
  • 20時頃:チャーハン

12/16/2008 むー

tDiary 2245日目

[戯言] くそう

いつぞや も書いた気がするけど,CPAN モジュールのバグを踏んだり「ねーよwwww」な仕様やコード見たりすると萎える.

まあ,最近では Python の標準モジュールにも思ったけど. socket#makefile で返ってくる奴はタイムアウトを無効化されてるとか,SocketServer のサーバソケットを非同期的な感じにしようとするときもいことするはめになったりとか.

時と場合によるけども,ネットワーク (に限らず I/O 全般) プログラミングで永遠にブロックしっぱなしは危険信号出まくりだと思うのだが. ブロッキング I/O は書く側は楽だけど使う側には罠の多い茨の道なだけに,それを末端に押しつけるのはどうかと思うぞ.

最低限スマートな逃げ道の用意はしておいて欲しい.

Twisted という選択肢もあるけれど,外部モジュールで Python の魅力が半減するという罠.


12/16/2009 むー

tDiary 2610日目

[日記] むー

やはり眠れない.

ので,むくりと起き上がり 仲間になりたそうにこちらを見ている もにょもにょと適当なコードを書いていたらこんな時間に.

うーむ困った.


12/16/2018 ふむ

tDiary 5897日目

[Py][小ネタ] NAPT 前のアドレスを知る

例えば下記のようなネットワークがあるとする.Client が Web Server にアクセスした際,NAPT Router によって NAPT される前の Client の情報を Web Server が知りたいとする.

+--------+          +-------------+        +------------+
| Client |----------| NAPT Router |--------| Web Server |
+--------+          +-------------+        +------------+
172.16.0.193   172.16.0.1   10.207.9.88    10.207.9.87

NAPT Router が Linux 箱なら,conntrack エントリがカーネルの中に保持されているので,下記のようなサービスを NAPT Router の上で動かしておくことができるだろう.

import flask
from pyroute2.netlink.exceptions import NetlinkError
from pyroute2.netlink.nfnetlink.nfctsocket import NFCTSocket, NFCTAttrTuple

app = flask.Flask(__name__)
cts = NFCTSocket()


@app.route('/conntrack', methods=['GET'])
def conntrack_get():
    saddr = flask.request.args.get('saddr')
    daddr = flask.request.args.get('daddr')
    proto = int(flask.request.args.get('proto'))
    sport = int(flask.request.args.get('sport'))
    dport = int(flask.request.args.get('dport'))

    tpl = NFCTAttrTuple(saddr=saddr, daddr=daddr,
                        proto=proto, sport=sport, dport=dport)
    try:
        entry = cts.entry('get', tuple_reply=tpl)
    except NetlinkError:
        return flask.Response(status=404)

    tuple_orig = entry[0].get_attr('CTA_TUPLE_ORIG')
    tuple_ip = tuple_orig.get_attr('CTA_TUPLE_IP')
    tuple_proto = tuple_orig.get_attr('CTA_TUPLE_PROTO')

    return flask.jsonify(saddr=tuple_ip.get_attr('CTA_IP_V4_SRC'),
                         daddr=tuple_ip.get_attr('CTA_IP_V4_DST'),
                         proto=tuple_proto.get_attr('CTA_PROTO_NUM'),
                         sport=tuple_proto.get_attr('CTA_PROTO_SRC_PORT'),
                         dport=tuple_proto.get_attr('CTA_PROTO_DST_PORT'))


if __name__ == '__main__':
    app.run('10.207.9.88')

その上で Web Server が下記のように,このサービスを叩く.

import flask
import requests

app = flask.Flask(__name__)


@app.route('/', methods=['GET'])
def root():
    saddr = flask.request.environ['SERVER_NAME']
    daddr = flask.request.environ['REMOTE_ADDR']
    sport = flask.request.environ['SERVER_PORT']
    dport = flask.request.environ['REMOTE_PORT']
    response = requests.get('http://10.207.9.88:5000/conntrack?'
                            'saddr=%(saddr)s&daddr=%(daddr)s&proto=6&'
                            'sport=%(sport)s&dport=%(dport)s' % locals())
    if not response.ok:
        return flask.Response(status=404)

    entry = response.json()
    return flask.jsonify(saddr=entry['saddr'],
                         daddr=entry['daddr'],
                         proto=entry['proto'],
                         sport=entry['sport'],
                         dport=entry['dport'])


if __name__ == '__main__':
    app.run('10.207.9.87')

Client から Web Server にアクセスしてみると,

$ curl -s http://10.207.9.87:5000/ | jq .
{
  "daddr": "10.207.9.87",
  "dport": 5000,
  "proto": 6,
  "saddr": "172.16.0.193",
  "sport": 55208
}

Web Server から,NAPT 前のオリジナルの Client のデータが返ってきていることが確認できる.

だからどうしたぼくドラえもん.