perl - みる会図書館


検索対象: BSD magazine No.11 BSDでルータを作ろう! ; システムコールプログラミング入門
12件見つかりました。

1. BSD magazine No.11 BSDでルータを作ろう! ; システムコールプログラミング入門

フロジェクト短信 PerI Mongers 短信 T0kyo PerI Mongers ナウンスを予定しています。 が決まりましたら jus 経由および、 Tokyo perl Mongers でア なりました。時期は初夏の頃になる予定です。開催概要 を日本 UN Ⅸユーザ会 (jus) 注 2 と協力して開催することに 開発が進められている per16 の最新情報に関する勉強会 Pe 6 の最新情報に関する勉強会 う方はぜひメーリングリストに参加してください。 話し合っています。一緒に楽しいイベントにしたい、とい にこだわらない、より楽しいイベントとして企画したいと などを参考にしながら、アイデアを出し合い、あまり言語 いう程度です。 YARPC19101 で回答して頂いたアンケート たことと言えば時期が 2002 年 6 月以降翌年 5 月までの間と になるのか、まだほとんど決まっていません。他に決まっ す。 \ w + は、もちろん anything です。続編がどんなイベント 読み方は「やなカンファレンス」ということになる予定で べントは YA\w + C (Yet Another anything Conference) で、 magazine N 。 .8 、 9 の短信を参照してください ) 。今度のイ う方向で決まりました (YARPC 19101 については BSD 好評をいただいた YARPC 19101 注 1 の続編を計画するとい 昨年 5 月に ( 株 ) アスキー様の会場をお借りして開催し、 YA な Conference ( 仮称 ) で盛り上がりました。 その他メンバーの近況や世間話などまで、さまざまな話題 れました。主な議題はイベントの計画や今後の活動などで、 Mongers の例会は、 1 月下旬に新宿のとあるお店で開催さ 昨年 10 月の開催以来、しばらく間があいた T 。 ky 。 perl す。 と一緒に活動状況などをレポートしていきたいと思いま せていただきました。今回から、 Kansai perl Mongers さん は、面白そうなネタがみつかりませんでしたので、休載さ こんにちは。 Tokyo perl Mongers のりゅうちです。前回 りゅうちてつや ryuchi@tokyo.pm.0「g http:tokyo.pm.org 藤井聖 / / FUJ. ″立朝 / kitsune@kitsune.tO http://kansai.pm.org Pe 5 に関する情報 Per15 は、 Per15.7.3 がこの号が出る頃にはリリースされて いるかもしれません。その後は 5.8RCl を経て 5.8.0 が 5 月下 旬頃にはリリースされる見込みのようです。 per15.6 での utf8 や byte の修正などほか、 Encode 関係でいろいろ contribute が追加されるとのことです。 Tokyo PerI Mongers の Web ヘーシ 1 月下旬より Tokyo perl Mongers の web ページを発信して いるサーバーが移動し、新装開店しました注 3 。新しいサー バー上では RWiKi 注 4 で実装されています。そうです、 Ruby で動いています注 5 。 Wiki とは、簡単に言えば、誰で も変更できるべージの固まりです。「 perl と関係ない質問と 解答」という楽しいページも出来ました。 PerI 256 倍本シリーズ この号が出る頃に待望の perl 256 倍シリーズの第一弾が 発刊されます。タイトルは「 perl を 256 倍使うための本 DBI 編」です。 Kansai perl Mongers の川合さんが書かれて います。 Tokyo perl Mongers のメンバーも続編を執筆中で す ( のはずですよね ? > メンバーのみなさん ) 。 終わりに 今後の例会の予定については、随時希望を募集してい ます ( 幹事さんも… ) 。また「やなカンファレンス」の計画 などはメーリングリストや例会で話し合われています。参 加方法は Tokyo perl Mongers の web ページに書かれていま す。 Kansai PerI Mongers こんにちは。 Kansai perl Mongers ( 以下 Kansai. (m) の藤 井です。今回は、 Tokyo perl Mongers さんの短信に加え て、 Kansai. pm の短信も書かせていただきたいと思います。 注 1 注 2 注 3 注 4 注 5 http://yarpc.tokyo.pm.org/ http://www.jus.or. JP/ http://tokyo.pm.org/ http://www.jin.gr.jp/—nahi/RWiki/ perl の web でも、 Ruby で楽にできるならオレ達はこだわらない。 220 BSD magazine 2002 No. 1 1

2. BSD magazine No.11 BSDでルータを作ろう! ; システムコールプログラミング入門

瞽ー 高予 : あの、 /usr/src/contrib 注 7 じゃありま やつばり p 。 rts の存在が大きいということは きものが決まっていないんだもの。 鈴木 : カーネルしかないから、それ以外は ありますからね。 せんでしたつけ ? 外部のプログラムを持 中川 : こういうものが欲しいなと思って探 みんな / usr / bin に入れると。 ってきてインストールするっていうやっ、あ せば、だいたいありますからね。 法林 : ユーザーが自力で入れるものだけを れだけでも pkg_add 、 pkg_delete できたら便 ふたっき : 逆に多すぎて探すのがたいへん /usr/local とかに入れさせるというポリシーな 利なんですけど。 ので、まあ、そういうもんだと思って使う 梅本 : それをいったら、今の tcsh って ですね。瑕があるときにはいろいろ探すのが 楽しいんですけど。何かさしせまった要求 と。ばくはそういうことにしているんですけ contrib だよ ( 笑 ) 。 があるときに、これどの辺だっけって、ます ど。 FreeBSD はそうじゃないから、それは ( 笑 ) 全員 - そういうポリシーなので、素直にそれに従 カテゴリを探すのがたいへんですよ 高野 : けど、 perl なんかのバージョンを上 げたいのに、システムに組み込まれている注 8 福島 : 基本的には、 ports のインデックスに って使うことにしているんですけどね。 福島 : 逆にユーザーが自分でパッケージに grep かけたりして探すしかないでしよう。 から何もできないとか。 梅本 : 昔は、欲しいやっから p 。 r [ s になって 頼らすに入れるものを、 FreeBSD でどこに 梅本 : でも、それをやると、 perl っていま いくから、探すんだったら p 。 rts を探せって 入れるかっていうと、悩みますよね。 カーネル作るのに使っているし。 感じだったけど、今は違うからね。 梅本 . FreeBSD で、 ports カ S/usr/local 高野 : 難しいのはわかるんですけどね。 梅本 . だから perl に関しては、 BSDPAN 注 9 高野 : p 。ホの下に A Ⅱってできないんですか。 入れているのが、すごくいやなんですよ。 ふたっき : あったら、探すのたいへんよ。 / usr 加 c って、そもそもシステムが提供す が入っているから、あれで上げろと。 中川 : パッケージでさえ、探すのたいへん 今野 : perl については、 contrib ディレクト るものじゃないから。 なのに ( 笑 ) 。 : そうですね。だから NetBSD みたいに リができる則だったので、 /usr/src/gnu の下 / usr / pkg 注 5 みたいな、ああいうディレクトリ に無理やり変えた形でつつこんじゃったの を FreeBSD も用意すればいいんでしようね。 ね。その関係で、上げるのがめんどうくさ 梅本 : なんで NetBSD って / 叩 t にしなかった くなっているんですよ。 んだろう注 6 。わざわざデファクトになってい 鈴木 : 何をどこに入れるというディレクト 高野 : めんどうになったんですか。 リ構造が、 Linux と BSD ですいぶん違うじ るものがあるのに、それを変える理由が私 今野 : 単純に make していないでしよう。あ ゃないですか あいう形にしちゃったから、すごくたいへん。 にはわからない。 法林 : 違いますね。 今野 : NetBSD Wusr/pkg に入れるので、そ 高野 : 5 ー current でも無理なんですかね。そ 鈴木・ Linux 側からディレクトリをとりあえ のためにパッチがすごく増えちゃってたいへ ういう流れをがらっと変えるというのは。 す統一しましようという話がでてますけど、 んらしいですね。 梅本 : いや、というかもう Per15 になってい これは BSD 側で受け入れられるようなもの るじゃない。で、できていないわけたから。 なんですか。 で /usr/pkg とかに入れるのってないですから 全員 : ( 笑 ) 梅本 : 受け入れられないですね。 ね。全部自分たちで作っていかなくちゃい 梅本 : perl は素直になくすというのが正解 法林 : 詳しくは知りませんけど、かなりポ けないわけですよね。それもいやですね。 だと思うんだけど。 リシーが違いますからね。 高野 : perl の場合はモジュールがもろに関 CCS : だったら、 sun にあわせればいい。 梅本 : もともと BSD って、最初からあるも 梅本 . sun というか SystemV R4 の仕様で わってきちゃうから。 / 叩 t というのを提示したはすだから、それに 梅本 . 今 cyrus IMAPd の最新版を ports に のがガチッとあるじゃない。 Linux にはべン ダーカ醍供するかどうかっていう区別しかな 従えばいいと思うんだけど。 しようとしてて、 perl の 5.6 を要求するんで、 い。だから、たとえば Redhat だったら Redhat 5-current だと快適に動くんだけど 4-stable だ カ醍供するものがすべて / us in に入る。 とだめなんだよね。 法林 . Linux は、フリーソフトウェアとかパ 今野 : ports にありますよね、一応、 5.6 。 高野・ contrib にあるものだけでも、 ッケージみたいな形で入るものもすべて 梅本 : 追加でつつこめるようにはなってい ん sr / bin に入れますね。そういうポリシーな pkg-add とか pkg-delete とかで追加したりで るんだけど、結局スタンダードなライプラリ んですね。 きるといいなと思うんですけど。 を最初に見るようになっているので、つつこ 梅本 : だから、そもそもん sr / bin に入れるべ 梅本 . ontrrb というのは ? んだだけでは有効にならない。だからパスを 注 4 FreeBSD ports のインストール PRE 日 X のデフォルトはん s ⅵ oc 記である。 注 5 NetBSD pkgsrc のインストール PRE 日 X のデフォルトは /usr/pkg である。 ん pt はパッケージ毎にディレクトリを分けるホリシー ( / op レバッケージ名 / b ⅲのようになりん pt / bin は存在しない ) なので、 ports/pkgsrc とはポリシーが異な 注 6 り、 $ PREF Ⅸ = / ( ) pt とするわけにはいかないというのが理山の一つたと思われる。 FreeBSD プロジェクトの外でメンテナンスされているソフトウェアが置かれるディレクトリで、 bind 、 cvs 、 gcc 、 perl などが収められている。 注 7 注 8 S 国 a ロ s8 では per15 はパッケージとして管理されており pkgadd / pkgrm で置き換えることが可能となっている。最近の perl モジュールは perl -5.6 を要求するもの が多いので FreeBSD でも簡単に pkg ー add / pkg ー dele にで perl を置き換えることができたらよいのに。と思う今日このごろである。 perl の module を簡単に検索・インストールする枠組である CPAN に、 FreeBSD のパッケージ登録機能を組み込んだもの。ー CURRENT で提供されている。 注 9 2002 No. 1 1 BSD magazine 179 そディレクトリ構 法林 : そうですよね。フリーソフトウェア Pe のバージョノアップ。

3. BSD magazine No.11 BSDでルータを作ろう! ; システムコールプログラミング入門

Mac OS X— FiIe によるフルバックアップ くっか方法があった。 Mac OS 9 を使う方法は、筆者がか lnstaller も用意する可能性がある。この場合は Developer T 。。 I は不要になる ) 。 なり早期に「発見している」し注 5 、 BSD 的なアプローチに 1. 以下のコマンドで CPANshell を起動する。 しても、 FinderInfo やリソースフォークをサポートする hfspax 注 6 や hfstar 注 7 がすでに存在している。また、個々の sud0 perl —MCPAN —e shell ファイルを扱うコマンドも、 DeveloperTool をインストール 2. もしこれが最初に CPANsh 謝を使う機会なら、 CPAN すれば / DeveI 叩 er な。 ols 以下にインストールされる。 she Ⅱがいくつか質問をする。ほとんどはネットワークが しかし、これらのコマンドでは、当然だが差分バックア らみの質問で、英語だがそれほど難しくはないだろう。 ップができない。インストール直後の MacOS9 では、ファ 3. CPANshe Ⅱの初期化が終わったら、あとは イル数はせいぜい 1 万弱で、フルバックアップにしてもそ れほど手間でもないし、なによりすでに差分バックアップ install MacOSX : :Fi1e のためのソフトが充実している。しかし、 MacOS X は、 とタイプするだけだ。モジュールのダウンロードからコ 他に何もインストールしていない状態でもファイル数は数 ンパイル、テスト、そしてインストールにいたるまで、 万あるし、 DeveIoperTool までインストールしてあれば確 CPANshe Ⅱがよきに計らってくれる。 実に 10 万を超える。これをいちいちフルバックアップする のは時間の無駄というものだ。 筆者は、 FreeBSD 用のバックアップを perl script でやって いた。昨今は FreeBSD も flags を多用するようになってきて、 rsync などでもこれらの情報が保持されないのと、なにより rsync ではメモリを食い過ぎて、筆者の環境で安定して動 かなかったので手製の script を使っていたのである。 筆者はその際に、 BSD : : stat というモジュールを開発した注 8 。 perl に組み込みの stat ( ) では、 BSD 4.4 で拡張された stat ( ) の 情報を扱えないからだ。筆者のようなものぐさには、 perl script にややこしい部分を処理させ、 perl に足りない部分は M 。 dule でなんとかするというのが非常に楽なのである。 幸い Mac OS x には、 perl 5.6.0 が標準装備されている。 今回も同じアプローチが取れないかと思って作ったのがこ こでご紹介する MacOSX : : File 注 9 である。 PSYnc MacOSX::FiIe には、 psync というコマンドが付属してい る。これを使えば、 root partition も sud0 psync / /V01ume/backup で簡単に差分バックアップが取れる。詳しくは " man psync' を御覧いただきたい。 Carbon COPY はたいへんだ ! こまでは BSD magazine というよりむしろ Mac power に ふさわしい話だが、いよいよ BSDmagazine らしい話に入っ ていくことにしよう。 MacOSX::FiIe を実装するにあたって、 .. namedfork/ の使 用も考えないでも無かったのだが、結局地道に CarbonAP1 を使って実装することにした。理由は、 MacOS::FiIe に c 叩 y 以外の機能もつけたかったのと、結局 .. namedfork/ で は FinderInfo にまではアクセスできないからだ 顛末は結局文末に掲載した f ⅱ ec 叩 y. c に凝縮されている が、考え方は単純で、以下のような手順を 1 つずっ地道に 踏んでいるだけだ。 1. コピー先のディレクトリの FSRef を入手 ー先のファイル名を適切に変換 2. コピ MacOSX::FiIe とは ? 早い話、 MacOSX::FiIe は、 /Developer/Tools 以下のコマンド 郡と同じ機能を perl から直接扱えるようにするための Mod ⅲ e である。インストールの仕方はいたって簡単で、他の CPAN Modu1e とまったく同じだ。念のために紹介しておくと・・ 0. cc や make などが必要なので、ま $Developer Tools をイン ストールしておこう ( ただし、最近 Binary lnstaller を用 意してくれという声が高まってきているので、 Binany http://www.dan.co.jp/cases/macosx/backup-via-os9.html 英語です。申し訳ない 注 5 注 6 http://homepage.mac.com/howardoakley/ 注 7 http://www.geocities.com/paulotex/tar/ http://search.cpan.org/search?di st=B SD- stat FreeB SD の ports collection に収録 注 8 注 9 http://search.cpan.org/search?dist=MacOSX-File 0 SDånagazine 111 2002 N

4. BSD magazine No.11 BSDでルータを作ろう! ; システムコールプログラミング入門

2 周年記念イベント Kansai. pm は 2000 年 3 月 19 日に設立しました。今年で設 立 2 周年を迎えることになります。そこで、 3 月か 4 月に毎 年恒例の設立記念イベントを計画しています。詳細な場 所や日時は未定ですが、イベントの内容としてライトニン グセミナーと通常のセミナーを開催する予定です。 ライトニングセミナー ライトニングセミナーとは YARPC 19101 で行われた Lightning Talks ( 5 分間すっ次々に話し手カ玳わって違う話 題について話していく ) をアレンジしたものを想定してい ます。具体的には、講師の方にセミナーを 15 分程度の制 限時間以下でやってもらい、その後 10 分程度で皆に批評 してもらおうと思っています。講師としての腕を磨くチャ ンスですので、せひ講師初心者の方に発表していただきた いと思っています。 通常のセミナーの内容 Per16 開発中の Per16 の新機能について興味を持たれている方 が多いと思いますので、 Per16 についてのセミナーを行いた いと思っています。 Per16 に詳しい講師の方を大募集して います。 Pe 再発見 普段 perl を使っていらっしやる方でも、意外と理解して いない機能についてセミナーを行う予定です。 pack 関数と unpack 関数の使い方、データベース以外の tie の使い方、正 規表現についてのセミナー等が候補に挙がっています。 京都で宴会 去る 2002 年 1 月 19 日、京都にて宴会が行われました。皆 さんいろいろなネタを持ち寄ってくださいまして、たいへ ん楽しい時間を過ごせました。宴会後半には、 Lightning Ta1ks のコーナーもありました。 フロジェク短信 最近のネタ 宴会のときにあがったネタや、最近メーリングリストで あがったネタを少々ご紹介したいと思います。これらの話 題に興味を持たれた方はぜひ Kansai. pm メーリングリスト注 6 にご参加ください。 XP (eXtreme Programming) 今話題の XP(Windows xp のことではありません。詳細 については http://www.extremeprogramming.org/を参照して ください ) が宴会時にネタにあがりました。現在、有キに し、 より xp の勉強を行うプロジェクトが発足しています。 xp の話題専用のメーリングリストも作成されました注 7 ので、 興味のある方はどうぞご参加ください。 p 「ⅳ ate なサフルーチンの実装 オプジェクト指向なプログラミングを行う際に、クラス モジュール内に、外部からメソッドとして呼び出すことが できないそのモジュールローカルなサプルーチンを作りた いことがあります。この方法が話題となり、宮川さんの Attribute::Protected モジュール注 8 の紹介や、中島さんの pnvate モジュール注 9 の試作についての報告がありました。 PerI で CGI CGI プログラムの作成は perl の最も一般的な使い方の 1 つ です。最近 web アプリケーションの開発の場面では、 PHP 、 Java Se Ⅳ let なども一般的になってきていますが、 perl だか らこそ、他の言語より簡潔に効率よく行えることもありま す。 DBI モジュールを使ったデータベースへの接続、 HTML::Template モジュールを使ったデザインとロジックの 分離、 Apache::Session モジュールを使ったセッション管理 注 6 注 7 注 8 注 9 http://kansal.pm.org/j 叩 anese/ml.html http://kansai.pm.org/j 叩 anese/yukiwiki/yukiwiki. cgl http://search.cpan.org/search?dist=Attribute-Protected http://hp 1 .jonex. ne.jp/—nakaJima. yasushi/ などが話題にあがっています。 2002 No. 1 1 BSD magazine 221

5. BSD magazine No.11 BSDでルータを作ろう! ; システムコールプログラミング入門

プロジェクト 072 当 プロジェクト短信は、 BSD に関連するさまざまな プロジェクトの現状をお伝えするべージです。 F ′ eeBSD プロジェクト短信 P 第 196 ド′ eeBSD ( 98 ) プロジェクト ・ P. 197 PAO Report P. 198 ド′ eeBSD 日本ドキュメンテーションプロジェクト・ P. 199 p 。杙 jp プロジェクト短信 P. 200 portupgrade 短信 P. 202 日本 FreeBSD Ja a プロジェクト ・ P 第 204 ル ma れプロジェクト P. 206 PEACE 短信 P. 207 NetBSD-current Updates ・ P. 208 320G レポート ・ P. 210 NetBSD Packages 通信 P. 211 P00 ket B S 0 短信 P 第 212 KAME プロジェクト便り ・ P. 213 Ope れ BSD 短信 P. 214 OpenSSH 短信 P 第 215 X ド′ ee86 短信 P. 216 BSD / OS の近況 P. 218 KDE 短信 ・ P. 219 perl M009e ′ s 短信 P. 220 日本 GNOME ユーザ会通信 P. 222 ド′ eeBSD と飲もう会・ BAY - BSD ユーザーズグループ・・ P. 223 BBQ 通信 ・ P. 224 bugs 短信 P. 225 CBUG 短信 ・ P. 226 ChiBUG 短信 P. 227 DEBUG 通信 P ■ 228 EBUG 短信 ・ P. 229 K*BUG 短信 P. 230 NBUG 短信 ・ P. 231 NoBUG 短信 P. 232 OFUG 短信・ P. 233 T*BUG 短信 P. 234 BUGs 短信 P. 235 195 2002 No. 1 1 BSD magazine

6. BSD magazine No.11 BSDでルータを作ろう! ; システムコールプログラミング入門

N W S B S D B S D R E P O R T 後のシステム設定の変更、パッケージシステムなどに広く を定義できなかったりとあまり十分な機能を持っていると 利用できるものである。現在は NetBSD の開発プランチに は言えない。また、スクリプトが 1 っすっ実行されていく ため、起動にも時間がかかるといった問題もある。 Mac 入っているだけでオフィシャルリリースには入っていない OS X/Darwin では、以前本誌でも紹介があったように依存 のだが、そのうち入るようだ。また、 FreeBSD など他の BSD への移植もやろうと思えば簡単にできるそうである 関係も定義できるような仕組みを用意しておりその紹介だ ったのだが、本誌の読者にはそんなこともう知ってるわい、 し、エンジンだけ利用してグラフィカルなインターフェイ スのものを作るのも比較的簡単にできるそうだ。 というような内容であった。 BrettGIass による BSD UNIX におけるログモニターに関 以上が今回の BSDC 。 n の簡単な紹介である。それぞれの する発表では、ログをモニターすることの重要性や、 いカ、 に重要なログを発見するかといった話題が語られた。 発表についての詳しいことは http://www.usenix.org/ Perl や SNOBOL4 という言語を使ってログをモニターし、 events/bsdcon02/ にアクセスしていただきたい。また、しば たと らくすればプロシーディングズが http://www.usenix. えば Apache に対して code Red や Nimda といったワームから org/publications/から購入できるようになると思うので欲し のアクセスがあった場合に ipfw を使ってそこからのアクセ スを禁止したり r 。 ute コマンドを使ってバケットを捨てたり い方は購入していただきたい。 今回の BSDCon は、参加人数も規模もやや大人しい印 する方法が紹介された。 象があったが、小じんまりとして良い雰囲気ではなかった 最後に NetBSD プロジェクトの Tim Rightnour により、 かと思う。次回の BSDC 。 n が果たしてあるのかどうかわか sushi というユーザーインターフェイスビルダーの紹介があ らないが、もしあるならば日本からもぜひ多くの方に参加 った。これは入力フォームやメニューといったものを簡単 していただきたいと思う。 に作ることができるもので、インストーラやインストール WORKINPROGRESS SESSION USENIX MESSAGE BOARD 0 & X 、靆 JOB OPPORTUNITIES 朝第お・鬘を 写真 4 App はいたるところで人を募集していた 121 BSD magazine 2002 No. 1 1

7. BSD magazine No.11 BSDでルータを作ろう! ; システムコールプログラミング入門

Mac OS X— File によるフ ) レヾックアップ マリスト 1 MacOSX::FiIe のつづき #endif / * —INC—PERL_XSUB_H * / static UniCharCount Utf8toUni (U 工 nt8 *src , UniChar *dst) { UniChar U 工 nt 8 UniCharCount for(; *Src ! = ucs2; c 1 , c2 , c3 ; nchar = 0 ; src 十十 , if (*src く 0X80 ) { static OSErr return nchar ・ *dst + + = ucs2 ; ucs2 十十 ; c 1 }else{ ucs2 ((cl 十十・ c 1 else if (*src く ucs2 nchar + + ) { / * 1 byte * / OxE0){ / * 2 bytes * / c2 & 0x1F) くく 6 ) ー ()2 & 0x3F) ; / * 3 bytes * / c2 十十 ; C3 = ((cl & Ox0F) くく 12 ) ー ((c2 & 0x3F) くく 6 月 ()3 & 0x3F) ; newfile (char *path, FSRef *FSrefp , FSCata10gInf0 *Catp) { FSRef parentFS ; UniCharCount namelen ; UniChar B001ean OSErr err ; name [ 256 ] ; isDir = 1 ; if (err = FSPathMakeRef (dirname (path) , &parentFS , &isDir) ) { F ILE_ setcopyerr(err , ーー if ( (namelen = Utf8toUni (c010n2sIash(basename (path) ) , name) ) namelen, name , FSCreateFiIeUnicode (&parentFS , / * Create the file with same finder info return fnfErr ; ー FSPathMakeRef (path , FSrefp , NULL) ; / * Try reestablishing FSRef; file is created already * / paramErr) { if (err FSrefp , NULL) ; kFSCatInf0FinderInf0 , Catp , #define MINCOPYBUFSIZE 4096 _FILE_ return setcopyerr (err , } copybuf UInt8 *b ; UInt64 s ; typedef struct{ static UInt8 MinCopyBuf [MINCOPYBUFSIZE] ; 0 2002 N SD agazme 113 0 0

8. BSD magazine No.11 BSDでルータを作ろう! ; システムコールプログラミング入門

B S D N W S B S D R E P O R T であるため、 SMP のサポートのために開発を行う必要があ 午後の後半は「 BSD status Report 」と題して、 Marshall ったのだが、 Apple は FreeBSD と同じような手法を取るこ Kirk McKusick 先生の司会のもと、 OpenBSD 、 NetBSD 、 とにしたようだ。また、やはり 4.4BSD にはないリアルタイ FreeBSD 、 BSD/OS 、 Mac OS X といった各プロジェクトの ムスケジュールの機能も新たに開発したそうである。これ 現況について報告があった。 McKusick 先生がそれぞれの らは今後もまたまだ改良され、さらにパフォーマンスを良 プロジェクトの T シャツを重ね着しておき、時間になると T くしていくようである。 シャツを脱ぎ捨てていくというパフォーマンスがかなり盛 最後の発表は Mark Murray による乱数生成器についての り上がったのだが、内容についても BSD 共通の API は作れ 話であった。 Mark Murray は、 perl の FreeBSD システムへ ないか、といった質問が飛ぶなど、少ない時間であったが の組み込みや SMPng 、セキュリティ関係など、 FreeBSD プ 活発に議論が交わされた。 ロジェクトの主要メンバーである。さて、乱数というもの は計算機を使う上で欠かせないものである。カーネルの視 この日の夜には BOF が開かれ、筆者はドキュメント関係 点で言えば TCP のシーケンス番号や IPSec の鍵などをでき の BOF と PC card の BOF に参加したのだが、それぞれビー るだけ無作為なものにしたいし、ユーザーの視点でいえば ルを飲んだりしてリラックスしながらもいろいろと意見を ランダムな鍵やランダムなファイル名が欲しかったりゲー 交わしたりコードを見ながらワイワイとやったりしていた。 ムやモンテカルロシミュレーションなどでも乱数が必要で 2 月 14 日 ある。乱数は、できるだけランダムなほうが良いのだが、 Mark Murray は Kelsey 、 Schneier 、 Ferguson によって提案さ この日のキーノートは Apple の BrettHalle による Mac OS れた Yarrow アルゴリズムを利用して乱数生成器を実装し X の紹介である。「 UNIX: Not Just for Geeks Anymore. たのである。もちろん、計算機を利用する限り真にランダ というタイトルの通り、デスクトップコンピュータ用の OS ムな乱数というのは作れす、 PRN (pseudo-random number: として UN Ⅸを使うことについてのさまざまな問題点が紹 擬似乱数 ) を作ることになるのだが、できるだけランダム 介され、 AppIe がそれらをどうやって解決したか、といっ な PRN をできるだけ負荷をかけずに作る、ということが重 たところが詳しく語られた。 Apple の人たちはプレゼンテ 要になる。今回の発表ではそのあたりのことに触れつつ、 ーションの雰囲気が違うな、と感じたが、これはやはり会 どのようなデザインで実装したか、といったことが解説さ 社や製品の性格が反映されているのであろう。大したこと れていた。 のないことを大袈裟に言ったりそれつほく飾り立てたり、 0 0 nBSD 0 s お 0 写真 2 BSD Status Report 118 BSD magazine 2002 No. 1 1

9. BSD magazine No.11 BSDでルータを作ろう! ; システムコールプログラミング入門

1. ' : ' と ' / ' を入れ替え 2. UTF-8 を UCS-2 に変換 マリスト 1 MacOSX::FiIe むため、 struct stat と比較すると巨大である注 12 。 しかし、 FinderInfo や textEncodingHint といったものまで含 次に FSCataIogInfo だが、これが struct stat に相当する。 こでは FSPathMakeRef() という関数がそれをになっている。 接扱わず API 経由で操作することが強く推賞されており、 造体が必要になり、これが FSRef なのである注 11 。 FSRef は直 ム内でのみ Unique なので、全 File system で一意に決まる構 Node ID だけでは、 UFS の i-node と同じく、ファイルシステ path ではなく catalog Node ID を使用する。しかし、 catalog 事注 10 にある通り、 HFS + ではファイルを一意に示すのに 一意に指定するために使われている。前号の天縁さんの記 ま $FSRef だが、この構造体が、 carbon API でファイルを が carbon API を理解する手がかりになる。 ーザーにはまったくなじみのない言葉が登場したが、これ ここで、いきなり FSRef だの FSCatalogInfo だの、 BSD ユ なるまで読んでは書き込む。 4. フォークを順繰りに open して、 open した stream を eof に ピーされている。 ァイルを作成。この時点で必要な FinderInf 。がすでにコ トリの FSRef および 2. で生成したファイル名を使ってフ 3. コピー元の FSCataIogInfo を元に、 1. で入手したディレク * $ld: filecopy. c,v 0.60 2002 / 01 / 27 16 : 43 : 18 dankogai Exp $ setcopyerr(int err , char *filename , int line) static int #ifdef _INC_PERL_XSUB_H #include "common/util . #include く Fi1es . h> また、いきなりファイルをフルバスで生成するのではな く、わざわざコピー先のディレクトリの FSRef を入手して から生成するのは、 API に合わせるためである。ちなみに、 まだ存在しない ( コピー先の ) path に対して FSPath MakeRef ( ) するとエラーになってしまう。 ファイルのコピー程度であれば、 BSD なら 10 行足らすで 書けそうなのに、 carbon API では、 API の名前はやたら長 いし、引数は多いし、より細かいステップのはしばしで工 ラーチェックしてるわでなかなかたいへんである。この辺 に、 BSD と Mac の哲学の相違、すなわちユーザーとプログ ラマのどちらが七転八倒するべきかが顕著に見えている : ) 筆者が Mac OS と B SD をずっと愛用してきた理由は、 GUI に関しては Mac OS が、 CLI に関しては BSD がそれぞれ 一番「しつくり」と来たからだ。 Opposites Attract" という 言葉があるがまさにそれである。 Mac OS と BSD の結婚は、 それぞれが非常に異なっていたからこそ魅力を増している と思うのは筆者だけではないだろう。 iMac まで MacOSX がデフォルト OS になったことを考慮 すると、「最大のプレークスルー」はさておき、「最も普及 した BSD 」になることはほば確実と思われる。 Mac OS x の今後にはますます目が離せないことになりそうだ。 まとめ SV *OSerr; OSerr = perI—get—sv("MacOSX : : Fi1e : : CopyErr" , 1 ) ; if (err){ sv—setpvf (OSerr , }else{ sv—setiv(OSerr, 0 ) ; 'err=%d, file=%s , line=%d" , err , f i 1 ename , line) ; 注 10 注 11 注 12 1 12 「 Mac OS X のファイルシステム」天縁公子、 BSD magazine 2001 NO. 10 P128 BSD magazine 2002 NO. 1 1 http ://developer.apple.com/techpubs/macosx/Carbon/Files/FileManager/File_Manager/DataTypes/FSCataIogInf0.html く、長いファイル名のファイルがうまく扱えなかったりする。 FSSpec という構造体が使われていたが、 HFS + 導入に伴い FSRef に置き換えられるようになった。しかし依然 FSSpec を用いたアプリケーションも多 以前は volume Reference Number (stat($file)->dev に相当 ) 、 parID (stat(dirname($file))->ino に相当 ) 、そして name (basename($file) に相当 ) からなる

10. BSD magazine No.11 BSDでルータを作ろう! ; システムコールプログラミング入門

フロジェクト短信 jpman プロジェクト 日本語マニュアルの公開 FreeBSD 4.5- RELEASE の日本語マニュアル ( セクション 1 、 2 、 5 、 6 、 7 、 8 、 9 ( 一部 ) を 2 月 1 日に公開しました。 package ja-man-doc-4.5. tgz は、下記から取得可能です。 ftp://daemon.jp.FreeBSD.org/pub/FreeBSD-jp/man- jp/packages-4.5. O/ja-man-doc-4.5. tgz OpenSSH 関連のマニュアルについては、 FreeBSD 4.5 ー RELEASE の英文マニュアルは OpenSSH 2.9 となっています が、日本語マニュアルは OpenSSH2.3 のままです汨。 今まで通り、 perl 関連は未訳です。 package ja-p5-man- 5.000. tgz を御使用ください。 翻訳状況 RELENG ー 4 の追従を続けています。セクション毎の翻訳 状況は次の通りです。 セクション 1 、 2 、 5 、 6 、 7 、 8 、 9 RELENG_4 に追従中です。 OpenSSH 関連工ントリは、更新が必要です。 セクション 3 翻訳済マニュアルの更新は、 1 月 30 日時点で 207 個 ( 全 378 個中 ) カ院了しています ( 3 か月前と比較して 70 個増加 ) 。 作業ページは http://veltec.co.jp/jman/にあります。 2002 年 1 月 14 日に、追従対象の原文を、 4.4 ー 20011007 ー STABLE から 4.4-20011224- STABLE へ更新しました。 日本語マニュアル関連 po 「 ts 日本語マニュアル関連 p 。 rts の変更は次の通りです。 ja-groff-l .17.2 3 岡崎哲朗さんカ当 a ー gr 。 ff を更新されました。べースシステ ムの groff が 4.4-RELEASE から 4.5-RELEASE までの間に機 能拡張されたのと同様に、機能拡張されています。具体 堀川和雄 / 。〃。観 horikawa@jp.FreeBSD.0「g 的には次の修正が実施されています。 なりました。 ます。また、長い文書タイトルを上手く扱えるように 「 FreeBSD/i386 system Manager's ManuaI 」と表示され Architecture) 」と表示されていましたが、現在は 「 FreeBSD system Manager's Manual ( i386 ば、以前の i 3 8 6 の M A KE D E v ( 8 ) のヘッダには ・文書ヘッダ書式の、「 OS / arch 」形式への変更。たとえ ・ . St マクロの P1003.1 ー 2001 のサポート。 されていましたが、修正されました ) 。 ・ . 日マクロの修正 ( ". F い & ? " で以前は余計な空白が出力 [man-jp 3953 ] で森さんが提示されています。 い動作の修正は必要です。 jman コマンドに対するパッチは で実行されるので危険ではないとのことですが、正しくな てしまう問題が報告されています注 2 。元のユーザーの権限 オプションを指定することで、任意のコマンドを実行でき また、 jman ( およびべースシステムの man コマンド ) に一 k た。 ja-man-l. 1jー4 で、この問題が解決されました。 環境変数の設定が無視される ) という問題がありまし レクトリが含まれる (LC_ALL 、 LC_CTYPE 、 LANG ・以前のバージョンでは、検索パスに常に ' 'ja " サプディ この問題が解決されました。 示する ) が動作していませんでした。 ja-man-l. 1jー3 で、 前のマニュアルを、最初の 1 個だけでなく、すべて表 ・以前のバージョンでは、一 a オプション ( 指定された名 れました。 森浩二さんカ当 a - man を更新され、次のバグ修正が適用さ ja-man-l . lj 4 、 ssh-keygen(l) 、 sshd ( 8 ) が更新されておらず、 sftp(l) 、 ssh-keyscan ( l) 、 sftp-server 、 ssh-add (I) 、 ssh-agent( I) 、 ssh(l) 注 1 ja-man-doc-4.5. tgz では、 scp (I) ( 8 ) の和訳が含まれていません。 注 2 http ://www.freebsd.org/cgi/query-pr.cgi?pr=nusc/34270 206 BSD magazine 2002 NO. 1 1