トップ «前の日(01-22) 最新 次の日(01-24)» 追記

本 日 の h o g e

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

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


01/23/2003 vim

tDiary 91日目

vim

何か1.4_rc2って色々ヘンだなぁ。PROVIDE="virtual/editor"のせい? 俺はnanoもvimもemacsも入れてるわけだけど、今日emerge rsyncしたらvimがアップデートされてたのでemerge -u worldしたのに、vimのコンパイルが始まらなかった。KEYWORDSが~x86なわけでもなし、maskされてるわけでもなし、単にemerge vimとやっても現行バージョンのコンパイルが始まる。ebuildファイルの直指定でemergeしてやっと入った。それともmask以外にemergeを抑制する機構でも導入されたのか?

他にもAUTOCLEAN="yes"なのにclean操作が次のemerge時にしか反映されなかったり。こりゃ一体何なんだ?

emerge -B

やっぱGentooでも、自分用バイナリパッケージは作っとくべきだね。…ってことでよく使いそうなヤツラを軒並バイナリパッケージ化することに決定。うーむ時間かかる。インストールした時に-bオプションつけときゃ良かったよ。


01/23/2004 ねむ

tDiary 456日目

[日記] あー

久しぶりに研究室で寝たな.やっぱ眠りが浅いとみえて,起きたときすっきりしない.

[日記] 最近

全然へぇと思えるようなものでない日記が「へぇ」を獲得してたりして,訪問者の嗜好が読めません.うーむ….

[Gentoo] あら?

emerge --usepkg hogehoge

とかやると,KEYWORDS が ~x86 だろうがなんだろうが PKGDIR に存在する hogehoge パッケージの最新をインストールしてしまう模様.--usepkg の場合って ebuild 見ないのか? だとしたら恐くて BINHOST を迂闊に設定して emerge -gK なんて,stable 環境じゃできんぞ….

…と思って emerge をちらっと読んでみたら binary と ebuild できっぱり分かれてるみたいね.うーん,これは嬉しくないなあ.

つか,emerge の 903 行目,

if portage.pkgcmp(myeb_s, myeb_pkg_s) > 0: # eb is newer than pkg
    myeb_pkg = None
else:
    myeb = None

が悪さしてんじゃん.

  • myeb は Portage ツリーにある,KEYWORDS や MASK を考慮した最新の ebuild
  • つまり myeb より新しいバージョンは unstable or masked
  • myeb_pkg は KEYWORDS や MASK を無視した最新のバイナリパッケージ
  • myeb_pkg が myeb よりも新しかったとしても,myeb_pkg をインストールするのはおかしい

ということから,この部分を

if portage.pkgcmp(myeb_s, myeb_pkg_s) > 0: # eb is newer than pkg
    myeb_pkg = None
else:
    myeb_pkg = myeb
    myeb = None

とすると良いと思うんだがどうか.else 以下に一行加えただけだけど.

まぁバイナリパッケージもちゃんと KEYWORDS を理解してくれるようになる (binarytree.dep_bestmatch() を改造する) のがベストなんだけど.

と思って Bugs 探索をしてみると,似たようなのが bug#26314 にあった.これパッチ作って投稿してみよかな? たった一行だけど.

[小ネタ] 武器はビーム・ライフル

あっはっはっは! すんげー強そうな白雪姫だ!

from 今日のなんでやねん

[Gentoo] うひゃ

確かにその通りでした. しかも --usepkgonly の場合に対処できてませんでした.いつもながらの思慮不足….

…ので,修正してパッチにしてみました. --usepkgonly の場合を考慮するとちょっと日記に書くには量が多かったので….

あ,ちなみに portage-2.0.49-r21 向けのパッチですが,2.0.50_pre16 でも行番号が違うだけでコードは一緒っぽいので適当に差し替えるだけだと思います.

つか,--usepkgonly だと myeb が None になっちゃってるからめんどくさい.やっぱ binarytree.dep_bestmatch() が KEYWORDS や MASK を見てくれると楽っていうかそもそもこんなことしなくて済むんだけど.

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

なかの [それだと、myeb<myeb_pkgのときに、存在しない(可能性のある)バイナリパッケージをインストールしに行ってし..]

なかの [そうですねぇ。バージョン番号だけでは判断できないですからねぇ・・。bestmatchを変えてもいいのですが、それも結..]

atzm [うーん,bestmatch の方も今回僕が使った方法 (portage.portdb.xmatch("bestmat..]


01/23/2005 あー

tDiary 822日目

[戯言][音楽] ああー

最近 マイヤヒー の曲が頭から離れん…….飲ま飲まイェイ!

[小ネタ] 知っておきたかったこと

うひアンテナから.

涙が出そうなくらい共感.ていうかまじで泣きそう.

[Gentoo] うおっ

portage のリビジョンが変わって,screen のタイトルが変更されるようになった らしい (左下の Unmerging... ってやつ).

分かりやすくて良い反面,長くてうざい気もする.

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

なかの [FEATURESにnotitlesを追加すると出なくなると思います。それがデフォルトでいいと思うんですけどねぇ。 ]

atzm [おぉなるほど.ありがとうございます. 端末のタイトルバーを変更するのはデフォルト on でいいと思うんですけど,sc..]

萩原 [『知っておきたかったこと』、なかなか面白かったです。ちょっと対象年齢違うけど、『13歳のハローワーク』読むよりこっち..]

atzm [「13歳のハローワーク」は読んだことないですねぇ.時間のあるときに読んでみます. 「知っておきたかったこと」は,高校..]


01/23/2006 うひ

tDiary 1187日目

[日記] 動画祭り

やっべー,機動戦士 3D ガンダムが面白すぎる.

あと銃士戦隊フランスファイブ.これクオリティめっちゃ高いし.すげえ.

しかし○○ファイブと聞くとどうしても釈尊ファイブを思い出してしまう.

[日記] 飯日記

  • 15時頃:学食にて定食風味
  • 19時頃:学食にて定食

[小ネタ][戯言] ところで

3 年くらい前にバカ流行りした 東京都立江東商業高校のサイト だが,現在はごく普通の学校のサイトとして生まれ変わっている.更新履歴も 2004/06/24 からになっているため,それ以前にこのサイトで何があったのかを推し量る術もない.

……はずなのに,そこは電子空間が恐ろしいと言われるところ,いったんパブリックにしてしまったものを完全に消すことはほぼ不可能だったりする.分かりやすいところでは,インターネットアーカイブにしっかり痕跡が残っている という罠.

これを見ていると実に楽しい.簡単に履歴を見ると,大体以下のようになっている.

  1. ページ下部の「TOPICS」によると,サイトを開設したのは 2002 年 12 月らしい.
  2. しかしインターネットアーカイブがこのサイトのアーカイブを始めたのは 2003 年 2 月から.この時点でカウンタは 1,100.つまり 2 ヶ月の間に 1100 ヒット.サイトが完成したということで学校関係者が沢山来るだろうから,これは妥当な数字と言える.
  3. その後 2003 年 4 月までカウンタは 1,100 のまま.どうもインターネットアーカイブはカウンタの数値を正しくアップデートしていないらしい.
  4. 1 ヶ月後の 2003 年 5 月,カウンタが一気に 259,911 と爆発.カウンタの数値はたった 1 ヶ月で 25 万件余り増加.ここで何があったかは推して知るべし.
  5. その後 2003 年 8 月までの 3 ヶ月間もこの体裁のまま運営していたらしい.
  6. 翌 9 月,コンテンツ追加更新に伴い,デザインを改定.なぜあの絵を取り下げたのかは不明.なお,デザインの変更については更新履歴への記述は見当たらない.
  7. その後インデックスエラーを頻発するが,11 月にはカウンタが 273,253 になっていることが分かる.5 月の爆発から半年で 2 万件.学校のサイトとしては多いものの,5 月のような爆発的な増加はしていない.
  8. その後 2003 年中はこのデザインのままだが,2004 年 1 月には現在のデザインに似たデザインとなる.この段階で,過去の更新履歴が抹消される.この時点でカウンタは 279,557 であり,2003 年 11 月からの 2 ヶ月間で 6 千件程度.
  9. 原因は不明だが,2004 年 3 月の段階でカウンタが 46,570 となっており,25 万件程度がさっ引かれていることになる.1 月の段階で 2 ヶ月間で 6 千件程度のアクセス数だったことを考慮すると,カウンタの内部情報が壊れて 1 からカウントし直したという理由は考えづらい.
  10. その後は何事もなく,2004 年 11 月に現在のデザインとなる.ここで,アクセスカウンタそのものがなくなる.

いやーこういう履歴見てると,何かわくわくしません?

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

kou [ガンキャノン半笑いだしw ]

atzm [真顔のガンタンクもシュールすぎw ]


01/23/2007 ふむ

tDiary 1552日目

[日記] 飯日記

  • 08時頃:サンドイッチ
  • 15時頃:牛丼,サラダ
  • 24時頃:コンビニ弁当略してビニ弁

たぶん.


01/23/2008 ああ

tDiary 1917日目

[戯言] はあ

自分のダメさ加減に呆れることしきり. 色んな意味で.

学習能力ないなあ...

[日記] stream と gc

先輩につっこまれてはっと思ったので書き残しておく. 言われてみれば当然のことなんだけど,普段からこういうことを意識してないのはまずい気がするので,戒めも兼ねて.

Java で stream を open した後はきっちり finally 内等で close することが重要だが,そのこころは,Java の gc はオブジェクトがスコープを抜けても即時に破棄するわけではないので,close されるタイミングが分からなくなって,もしもファイルをロックしたままだったりするとロックが解放されるタイミングも謎になり,はまる原因になるから.

んで気になってちょっと調べてみた. 間違ってたら指摘して頂けるとこれ幸い.

Java (Sun JDK)
世代別 gc (アルゴリズムは mark-weep 方式など色々) を採用しており,gc はいつ動くか分からない.
Python
gc は参照カウント方式を採っており,参照がなくなれば即時でオブジェクトは破棄される.
Perl
gc は参照カウント方式を採っており,参照がなくなれば即時でオブジェクトは破棄される.
Ruby
gc は mark-sweep 方式を採っており,gc はいつ動くか分からない. が,open に関してのみ言えば,open にブロックを渡すとブロック終了時に自動的に close はされるのだとか.
PHP 4 以降
gc は参照カウント方式を採っており,参照がなくなればオブジェクトは破棄される (が,即時でかどうかはちょっとよく分からなかった...).

つかまあ自動で close されるとしても close はちゃんと明示的に呼んだ方が良いでしょうな. ちなみに Python2.5 なら with file(...) as fp が cool.contextlib.closing も場合に応じて利用するとハッピー.


01/23/2011 むう

tDiary 3013日目

[日記] むう

ペペロンチーノを作ろうとしてニンニクとベーコンと唐辛子をオリーブオイルで炒めた後,コンソメが切れていたことに気付く.

2 秒くらいどーしよと考えた後, 何となくだしの素とガラスープ粉を入れてみて味見. ピリ辛でニンニク風味の和風...

これにバジルとブラックペッパーはねーだろと, 更に増えるワカメと刻み海苔を突っ込んでパスタと和える.

...まぁ,うまくはないけどそれなりに食えるものではあったということをここに記す.


01/23/2019 うむ

tDiary 5935日目

[Linux][小ネタ] Linux で Private VLAN (pvlan) もどき

本物の pvlan を実装するのはちょっと面倒な気がしたので,簡単にできそうな擬似的な "もどき" を作ってみる.ひとまず Cisco で言うところの switchport mode private-vlan trunk promiscuous な uplink を想定.

実現には,ブリッジにおいて uplink 想定のポートとの通信以外を遮断して,uplink との通信時にはネットワーク毎に primary vlan 相当のタグを付加してやれば良いはずなので,vlan_filtering と ebtables を用いて実装してみる.テストのためのお膳立てが多いので長くなってしまっているが,メインは "# create nsx" というコメントから.

ip netns add nsx  # pseudo pvlan box
ip netns add ns1  # uplink (trunk)
ip netns add ns2  # downlink (10)
ip netns add ns3  # downlink (10)
ip netns add ns4  # downlink (20)
ip netns add ns5  # downlink (20)

# create ns1
ip link add veth0 type veth peer name veth1
ip link set veth0 netns ns1
ip link set veth1 netns nsx
ip -n ns1 link add veth0.10 link veth0 type vlan id 10
ip -n ns1 link add veth0.20 link veth0 type vlan id 20
ip -n ns1 addr add 10.0.10.1/24 dev veth0.10
ip -n ns1 addr add 10.0.20.1/24 dev veth0.20
for dev in lo veth0 veth0.10 veth0.20; do
       ip -n ns1 link set "${dev}" up
done

# create ns2
ip link add veth0 type veth peer name veth2
ip link set veth0 netns ns2
ip link set veth2 netns nsx
ip -n ns2 addr add 10.0.10.2/24 dev veth0
for dev in lo veth0; do
       ip -n ns2 link set "${dev}" up
done

# create ns3
ip link add veth0 type veth peer name veth3
ip link set veth0 netns ns3
ip link set veth3 netns nsx
ip -n ns3 addr add 10.0.10.3/24 dev veth0
for dev in lo veth0; do
       ip -n ns3 link set "${dev}" up
done

# create ns4
ip link add veth0 type veth peer name veth4
ip link set veth0 netns ns4
ip link set veth4 netns nsx
ip -n ns4 addr add 10.0.20.4/24 dev veth0
for dev in lo veth0; do
       ip -n ns4 link set "${dev}" up
done

# create ns5
ip link add veth0 type veth peer name veth5
ip link set veth0 netns ns5
ip link set veth5 netns nsx
ip -n ns5 addr add 10.0.20.5/24 dev veth0
for dev in lo veth0; do
       ip -n ns5 link set "${dev}" up
done

# create nsx
ip -n nsx link add brx  type bridge vlan_filtering 1
ip -n nsx link add br10 type bridge
ip -n nsx link add br20 type bridge
ip -n nsx link add p10a type veth peer name p10b
ip -n nsx link add p20a type veth peer name p20b
for dev in lo brx br10 br20 p10a p10b p20a p20b veth1 veth2 veth3 veth4 veth5; do
       ip -n nsx link set "${dev}" up
done

ip -n nsx link set veth1 master brx
ip -n nsx link set p10a  master brx
ip -n nsx link set p20a  master brx

ip -n nsx link set p10b  master br10
ip -n nsx link set veth2 master br10
ip -n nsx link set veth3 master br10

ip -n nsx link set p20b  master br20
ip -n nsx link set veth4 master br20
ip -n nsx link set veth5 master br20

# allow vid 10,20 as tagged on veth1 (uplink)
bridge -n nsx vlan add dev veth1 vid 10
bridge -n nsx vlan add dev veth1 vid 20
bridge -n nsx vlan del dev veth1 vid 1

# allow vid 10 as untagged on p10a (veth2,3)
bridge -n nsx vlan add dev p10a vid 10 pvid untagged
bridge -n nsx vlan del dev p10a vid 1

# allow vid 20 as untagged on p20a (veth4,5)
bridge -n nsx vlan add dev p20a vid 20 pvid untagged
bridge -n nsx vlan del dev p20a vid 1

# deny downlink-to-downlink communication on br10
ip netns exec nsx ebtables -A FORWARD --logical-in  br10 -i p10b -j ACCEPT
ip netns exec nsx ebtables -A FORWARD --logical-out br10 -o p10b -j ACCEPT
ip netns exec nsx ebtables -A FORWARD --logical-in  br10 -j DROP
ip netns exec nsx ebtables -A FORWARD --logical-out br10 -j DROP

# deny downlink-to-downlink communication on br20
ip netns exec nsx ebtables -A FORWARD --logical-in  br20 -i p20b -j ACCEPT
ip netns exec nsx ebtables -A FORWARD --logical-out br20 -o p20b -j ACCEPT
ip netns exec nsx ebtables -A FORWARD --logical-in  br20 -j DROP
ip netns exec nsx ebtables -A FORWARD --logical-out br20 -j DROP

そんなに大したことをやっているわけではなく,ブリッジを 2段に分けて,上位ブリッジでは下位ブリッジとやりとりするフレームにタグ付けを行い,下位ブリッジではポート間通信制御を行っているだけ.

当然 "もどき" であって本物の pvlan ではないので,例えば trunk port を用意して延伸するとかはできない.何せこの実装には secondary vlan が存在しないので当たり前である.

かしこ

追記

ちなみにわざわざブリッジを分けずとも,downlink port 毎に pvid を指定していけばブリッジ 1つで済ませることもできる.のだが,そうすると downlink port が増えるごとに,ブリッジへの参加だけでなく pvid の設定もやる必要が出てきて面倒なので,ここでは分離する方式を採っている.例えば libvirt/kvm で VM を生やして,I/F を上記 br10, 20 に参加させるといったことを考えると分かりやすい.