daily memorandum 2.3.0

CBUG | FreeBSD | Hiki | Knoppix | Mac | Ruby | W-ZERO3 | Windows | ad | amd64 | ks | linux | momonga | net | print | security | tdiary | unix | www | 会社 | 鯖缶 | 全学ゼミ |


2010-11-04 (Thu)

_ ブログ引越しました

3年近くお休みしてましたが、このたびブログを復活することにしました。新しい Blog は http://lovepeers.org/ です。今後はこちらを更新していくことにします。

こちらの旧ブログは当面このままにしておきます。時間があれば WordPress に変換してこのブログに統合したいのですが、さていつになるのやら。


2008-01-06 (Sun)

_ [会社] いまさらあけおめ

冬休み終わりの日に何言ってんだって感じですが(苦笑)。 その前に「月記」になってるのを何とかしろなんて声もありますが。;)

そうそう。日記 ;) に書き忘れてたけど、 退職 日は今年の1月末になりました。ってことで、あとちょっと今の会社で働かないといけません。 ま、半分近くは有休消化だけどね。;)

_ [FreeBSD] Installation problem of depended ports that are not yet instaled.

portupgrade < 2.3 では、依存する ports にまだインストールされてないものがあった場合、 シレッと無視するという「仕様」になってました *1。 まぁ、portupgrade が無視してても ports system (bsd.ports.mk) の方で よきに計らってくれるし、それで大抵問題ないのでふつーの人は気にしないと思うのだけど、 pkgtools.conf に書いた諸々が無視されてしまうなど、 あんまり気持ちのいいものではないわけです。

portupgrade 2.3 でこれがちゃんと実装されたというのをいつかどこかで読んで、 早速試してみたわけです。たしか FreeBSD の xorg が 6.9 から 7.3 に上がった時だから、 去年の9月か10月頃だったかな。

で、その結果は…全然だめぽ。前と全くおんなじ。orz

これってテストしたのかなーとか思いつつ、2日ほど debug してみたけど、 根が深そうなのでそのまま放置。 で、冬休みになってようやくまとまった時間が取れたので、 正月から再度 debug開始。一時期は「アルゴリズムからして完全に見直さないとダメちゃうか?」 って頭抱えてたのだけど、結論としてはこんな修正で直ったようです。;)

 Index: bin/portupgrade
 ===================================================================
 RCS file: /cvsroot/portupgrade/pkgtools/bin/portupgrade,v
 retrieving revision 1.38
 diff -u -r1.38 portupgrade
 --- bin/portupgrade     9 Aug 2007 15:28:05 -0000       1.38
 +++ bin/portupgrade     6 Jan 2008 15:52:37 -0000
 @@ -695,7 +695,7 @@
             make_env = get_make_env(dep)

             # If has not yet installed
 -           if $pkgdb.deorigin(origin)
 +           if !$pkgdb.deorigin(origin)
               install_tasks << dep
               $task_options[dep] = {
                 :make_args => make_args

つか、そもそもこの if 文って常に false になってないか? ってことで、最終的にはこの if 文削除して send-pr しておきました。( ports/119383 )

テスト

  • portupgrade とその依存パッケージのみをインストール
  • portupgrade -N bash を実行

したログを置いておきます。

*1 「これ、実装してないよ」ってコメントが書いてあった。;)

_ [FreeBSD] これで問題はすべて解決したのか?

portupgrade >= 2.3 では

  1. 未インストールの依存 ports を先にインストール
  2. インストール済の ports のうち、アップグレードすべきものをインストール

という順番で処理されるようになってます。 簡単なケースではこれで問題ないわけですが、

  • 未インストールの ports が、インストール済の ports の新しいバージョンを必要とする

なんてケースでは問題が起こります。例えば、

 LIB_DEPENDS=    slang.2:${PORTSDIR}/japanese/libslang

と書いてある時に、インストールされてる libslang の shlib version が古い時、などですね。 この場合は、下手すると同一 ports の古いバージョンと新しいバージョンが 混在することになるので(portupgrade が処理出来ないから bsd.port.mk の方が処理するわけだけど、こいつは「アップグレード」処理は出来ない」)、 より困ったことになるかも。:(

ただ、これを実装しようとすると、bsd.port.mk の依存関係まわりの処理を Ruby で丸々再実装しないといけない気がするので、ちょっと気が重い… いろんな場面で「車輪の再発明」が発生するのは、何とかならんかなぁ… とか言い出すと、「make ステ」って話にしかならんので、言わないことにするわけですが。


2007-12-01 (Sat)

_ C で bool型

ISO C++ とか C99 とかの規格が固まって処理系の実装が進んでいる頃(GCC 3.2 の頃)に 開発から足を洗ってしまったせいで、すっかりその辺の事情に疎くなってるらしい… 最近の C って bool型(より正確には _Bool型)とか true/false 使えるのね。

_Bool型と bool/true/false

組み込みの _Bool型が定義され、 stdbool.h では bool/true/false というマクロが(C++との互換性のため?)定義されてます。

ISO/IEC 9899:TC2 によると、

  • マクロ bool は _Bool に展開されるべし。
  • マクロ true は整数定数値 1 に展開されるべし。
  • マクロ false は整数定数値 0 に展開されるべし。

だそうで、実際 FreeBSD 6.2 の /usr/include/stdbool.h では

 #define false 0
 #define true 1
 #define bool    _Bool

なんて定義されてます。

最初にこの実装の方を見てしまったので、 「これって implemetation dependent だったりしないよね?」と ちょっと心配になったのだけど、 規格にちゃんと書いてあるので「true が 1 で false が 0」というのは 安心して使って良さそう。

_Bool 型の変数に 0, 1 以外を代入すると?

When anyscalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is 1.

とあるので、bool (_Bool) 型の変数に 0, 1 以外の値を代入しても 強制的に 0 or 1 にされてしまいます。

 #include <stdio.h>

 int main() {
   _Bool a = 1;
   _Bool b = 2;
   printf("a=%d, b=%d\n", a, b);
   return 0;
 }

 % gcc bool.c
 % ./a.out
 a=1, b=1

つーことで、enum 使って bool の emurate するよりマトモに使えそう。

 #include <stdio.h>

 typedef enum {true = 1, false = 0} bool;

 int main() {
   bool hoge = 2;
   printf("%d\n", hoge);
   return 0;
 }

 % gcc enum.c
 % ./a.out
 2

参考

_ ISO C99 の規格

ISO JTC1/SC22/WG14 のページからダウンロード出来る なんて、実は今日の今日まで知らなかったりして…orz

ISO C++ は相変わらず ANSI から買う 以外ないみたいだけど。しかも、今 ANSI のサイト見たら、$30 に値上げされてるし… (C++ FAQには $18 とあるのに…)。

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

_ kuma [JTC1/SC22/WG14のページからダウンロードできるものは、厳密に言えば「規格書」ではなくて、「規格書と同一内..]

_ koma2 [kumaさん、コメントありがとうございます。今ごろ気付きました(苦笑)。 厳密な意味での「規格書」が欲しければ、ち..]


2007-10-25 (Thu)

_ [unix] Real UNIX MAGAZINE Day来場の案内

っつーメールがようやく来ますた。無事に申込出来てたようです。;)

 このたびは、Real UNIX MAGAZINE Dayへ申し込みいただき、ありがとうございました。
 開催日が近くなってまいりましたので、来場の案内をいたします。
 (以下略)

いろいろウワサのあった2次会ですが、こっちも決まったみたいで、一緒に案内が来ました。 で、こっちはメール出したら1分後に返事が返って来たという…^^; やっぱ自動返信なのかなぁ(の割りには、X-Mailer: Mew version 5.1 とかあって、 変なところに凝ってる気もするけど ;)。 それとも、頻繁にメールチェックしてるのだろうか…

# 最近、素早い反応を求められる時は IM 送られることが多いので、メールチェックの頻度は大幅に下がったなぁ…ロクなメールが来ないから、というのもあるが。


2007-10-16 (Tue)

_ [会社] 実は今年で退職します

TRD君に先を越されちゃったけど ;)、 私も先週退職願を出しました。今年一杯で退職します。

会社でも相変わらずウルサイやつだったので、いなくなればさぞかし 風通しが良くなる ことでしょうね。;) まぁ、トップの口からこういう言葉が出てくる時点で推して知るべしって感じですが、 この一件に限らず、入社当時から「人を大事にしない雰囲気」 というのをずっと感じていて、ついにそれに耐え切れなくなったということです。

今後については、予定は未定です。 まぁいろいろ疲れたので、ちょっと休んでからゆっくり考えようかと。 あ、スカウトとか大歓迎ですよ。(ぉ

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

Before...

_ koma2 [コメント早っ!(笑) まぁ、結構前から「改善」じゃダメで「改革」が必要だと感じていて、 でもそれはムリだと思いつつ..]

_ Hossy [とりあえず、月内にすべて片付けたいと思うので、その後にちょっとゆっくりしましょ。まずは、これらを終えないと...。]

_ koma2 [目の前の仕事は片付けてしまわないとね。私もボチボチ今の仕事の「後片づけ」をしていかないと… 落ち着いたらメールでも..]


recent items