Widget - みる会図書館


検索対象: UNIX MAGAZINE 1991年6月号
15件見つかりました。

1. UNIX MAGAZINE 1991年6月号

OSF, / Motif のすべて一⑨ A1amWindow FontsWindow VersionWindov = NULL; ー = am _sw = FALSE ; hou.r = minute = second = 0 ; 159 C10ck Widget の作成 160 161 static Widget CreateC10ck(w, 162 , arglist, argc) name 163 Widget 164 String name ; 165 ArgList arglist; 166 Cardina1 argc ; 167 return ( XtCreateWidget (name , c10ckWidgetCIass , 168 169 町 arglist, argc) ) ; 170 リスト 2 1 66 コールノくック・ルーチン》 2 67 ファイル名 : callbacks. c 3 68 4 Copyright 1991 Sony Corporation, T0kyo, Japan. 69 5 A11 R1ghts Reserved 70 アラームのセット 6 71 7 #include く Xm/Xm. h> 72 void alarm set_proc ( widget , tag , callback_data ) 8 73 Widget widget : 74 char ・ *tag, ウインドウの初期化 10 75 XmAnyCa11backStruct *callback_data ; 11 76 12 void create—cb (w , id , reason) 77 13 Widget w; 14 int *id; 79 15 unsigned long *reason; デジタルクロックのフォント変更ウインドウの表示 80 16 81 17 82 void font—proc( widget, tag, ぐ al lback_data ) 18 83 Widget vidget; 19 84 char *tag; アナログ / デジタル 切替え 20 85 XmAnyCa11backStruct *callback_data ; 86 21 22 VOid change—ad—da( Widget, tag , callback-data ) 87 23 Widget widget; 24 char 89 *tag ; 25 XmAnyCa11backStruct *callback-data ; デジタルクロックのフォント変更処理 90 26 91 27 92 void font-selected ( vidget , tag , callback_data ) 28 93 Widget widget; 29 94 char *tag ; ウインドウの表示 30 アラームセノト 95 XmAnyCa11backStruct *callback_data ; 31 32 void CO れ t て 01 ー proc ( widget, tag, callback—data ) 97 33 Widget widget; 98 34 char 99 *tag : 35 XmAnyCa11backStruct *callback—data : パージョン・ウインドウの表示 100 36 101 37 102 void version-proc( widget, tag, callback_data ) 38 103 Widget widget; 39 104 char *tag ; アラーム 0 N / 0 F F 40 105 XmAnyCa11backStruct *callback_data ; 41 106 42 void toggle—proc(), tag, to le ) 107 43 Widget w; 108 44 int *tag , 109 45 * tO 1e ; 110 キャンセル・ ボタン 46 111 47 void cancel—proc(w, 112 tag , reason) 48 113 Widget 町 49 int 114 *tag ; 午前 / 午後切替え 50 115 uns 土 red. 10 取 g *reason; 51 116 52 void activate—proc(), id, reason) 117 53 Widget ; 118 54 int *id; 119 55 u.nsigned 10 Ⅱ g *reason; 終了処理 120 56 121 57 122 void qmt-proc(), tag, reason) 58 123 Widget ; 59 124 int *tag ; 時・分・秒 取得 60 125 unsigned long *reason; 61 126 62 void scale-proc (w , if (tag ! = NULL) id , scale) 127 63 Widget w; printf ( 'tC10ck ー %s\n" 128 , tag) ; 64 int *id; exit( の ; 129 130 65 XmSca1eCa11backStruct *scale ; 92 UNIX MAGAZINE 1991.6

2. UNIX MAGAZINE 1991年6月号

トへの接続■ イ ンタ ネ ッ ◇ forward ドメインファイルの例 $ORIGIN widget.com widget.com/ hostmaster.widget.com/ ( 1 START OF SOA PARAMffERS ー don't delete this line make—rev uses it serial 1 . 1 refresh 10800 3600 retry 3600000 eXPIre 21600 ) mmmu.m END OF SOA PARAMEIERS ー don't delete this line make—rev uses it antares.widget.com/ widget.com antares.widget.com/ *.widget.com 139. 18.1.2 antares a antares.widget.com/ irshell 139.18.129.46 a procyon 139.18.129.43 polaris a cname ◇ makerev てイ乍成した逆ドメインファイルの例 $ORIGIN 18.139. IN-ADDR. ARPA. IN SOA widget.com/ hostmaster.widget.com/ ( START OF SOA PARAMffERS ー don't delete this line make_rev uses it serial 1 . 1 10800 refresh 3600 retry 3600000 explre 21600 ) mllilm 川一 END OF SOA PAR.AMEÆRS ー don't delete this line make_reV uses it 2.1 IN 円 'R antares.widget.com/ 46.129 IN P ユ procyon ・ widget.com/ 43.129 IN polaris.widget.com/ ◇ static によって作成したスタティックなホストテープルの例 127.0.0.1 139.18. 1 . 2 139.18.129.43 139.18.129.46 loopback localhost loghost antares.widget.com irsshell.widget.com antares irshe11 P01 矼土 s. vidget . com polaris procyon.widget.com procyon 日本からの lnte 「 net への参加について な ( SRI ー NIC から割り当てられた ) ネットワーク・アドレス 「インターネットへの接続」は、米国国内での lnternet への を使わなけれはならない。 参加について述べたものである。日本国内にも lnternet へ しかし、日本国内ではネットワーク・アドレス割当てを受 の接続性を提供するネットワークが存在するが、その参加方 ける方法が本文中で紹介されているものとは異なる。これ 法は米国とは完全に異なっている。そこで、混乱を防ぐため は、 SRI ー NIC が日本国内のネットワークのためにネットワ に日本からの lnternet への参加について簡甲 . に紹介する。 ーク・アドレスのゾーン割当てをおこない、これを国内で再 ネットワーク・アドレスの取得 割当てするという方法をとっているからである。国内での再 割当ての管理にあたっているのが「インターネットアドレス 国内の lnternet は、海外と接続している。そのため、日本 調整委員会」である。 国内のネットワークでも、 lnternet と接続するところは正式 85 UNIX MAGAZINE 1991.6

3. UNIX MAGAZINE 1991年6月号

イ ン タ ネ ッ ト /in a/ { # hostname is a b1 田】 k if ( $ 1 ー else { address = host = $ 1 address = $ 3 "IN" & $ 2 "A" Ⅱ $ 1 # split the host address apart and reverse it split(address, byte, ". " ) for (i=l ; i く =nrevbytes ; i + + ) { rev = rev byte [j ] if (j く 4 ) for (j=4; j>nrevbytes ; (-) { if (i > nrevbytes) { # IS zone break if (byte Ci] ! = revbytes [nrevbytes-i + 1] ) # print the 円飛 record printf("%s IN " , rev) if (host ! = printf("%s. % sO " , hOSt , else printf ( "%sO " , domain) リスト C domain) 以下に示すのは、 BIND を利用したネームサーバーのプートファイル刎列である。 すべてのマシンにおいて、ファイル / etc / reso ⅳ . conf に次の言己があることをⅱ是としている。 domaan wldget. com nameserver 127.0.0. 1 ◇プライマリ・サーバーのプートファイル type directory domaln pmmary prma-ry pnma-ry pmma-ry cache ◇セカンダリ・サーバーのプートファイル ; type domain widget.com widget.com 18.139. in-addr. arpa 0.0.127. i Ⅱー addr. arpa. localhost domain secondary server conf igurat ion directory domain secondary secondary prxmary prxmary forvarders cache widget.com widget.com 139.18. in—addr. arpa 0.0.127. in ー ad . a 工 a localhost 139.18.1.2 source fi1e or host /etc/named widget f . 139.18 f . 127.0.0 localhost cache source fi1e or host /etc/named 139.18.1.2 widget 139.18.1.2 f. 139.18 f .127.0.0 loca 1 host cache UNIX MAGAZINE 1991.6 への接続■ 83

4. UNIX MAGAZINE 1991年6月号

インタ ネッ トへの接続・ MaiI Exchanger とメールの配達 メールが lnternet を通して正しく送られることも重要 である。 DNS ではメールが正しく配送されるよう、 Mail Exchanger(MX) レコードをとっている。 MX レコード は、 lnternet 経由のメールの送信元にあなたのドメイン内 のホスト名を提供する。以下の MX レコードは、ホスト procyon.widget.com がノヾックアップ用、ホスト antar- es.widget.com がプライマリのメール交換マシンである と設定した例である。 widget . com lN MX 1 antares . widget. CO . *.widget.com IN MX 1 antares .widget.com/ widget . com IN MX 2 procyon ・ widget.com/ *. widgent. com IN MX2 procyon.widget.com/ usr@mkt.widget.com にメールを送るホストは、ます antares.widget.com にそれを送付する。 antares は、最 終的に社内でメールがどのように酉されるかを知ってい なけれはならない。これは、工イリアスを使っておこわれ る。 lnternet に送られるメールには、すべて完全に認識でき るアドレスがつけられていなけれはならない。 Joe や joe @ antares では受け付けられない。 joe@antares.wid- get ・ com なら大丈夫である。 Sun にバンドルされている sendmail. cf ファイルはこの機能を備えている。 Sun ワークステーションをルータとして使うことは可 能だが、ソフトウェアがその目的のために最適化されてい るわけではない。ルータ・ハードウェアのメーカーは多数 あるが、 cisco や WeIIfleet 、 Proteon などが有名である。 地域ネットワークによっては特定のメーカーのルータしか 使わないところもあるので、そのあたりがどうなっている のかをチェックする必要がある。 IGRP と経路指定 地域ネットワークはすべて IGRP(Interior Gateway RoutingProtocol) を走らせているが、ネットワークによ UNIX MAGAZINE 1991.6 りこのプロトコルがまちまちであることが考えられる。最 77 めのいくっかの簡単な方策を示しておく。また、いくっか 分野の専門家ではない。しかし、災害の発生を防止するた 事はセキュリティをテーマにしたものではなく、私もこの かのネットワークも攻撃を受ける可能性が生しる。この記 する準備を怠れば、そこが lnternet への侵入路となり、ほ 言い換えれば、社内のネットワークでセキュリティに関 トワークをさらすことにもなりかねない。 ときには悪意をもった ) ハッカーからの攻撃に自社のネッ net へのアクセスによって、 ( 好奇心からのケースが多いが 位が与えられていない。つまり当然の注意を怠れば、 lnter- ースとしている。そのため、セキュリティには高い優先順 net は開放型コンピューティング、資源共有型モデルをベ れるうえで、ある程度の責任を自動的に負わされる。 lnter- lnternet に加わると、その組織はネットワークが運用さ lnternet のエチケットとセキュリティ まったく使わないこともある。 りに lnternet への標準経路を設定するだけで routed を ティックなトボロジーをもつネットワークであれば、かわ 能である。 1 つの物理的ネットワークもしくは単純でスタ ットワーク・インターフェイスが 1 つだけの Sun の標準機 新された経路情報だけが、、聞き分け〃られる。これは、ネ によって、全体に新しい経路指定情報を知らせなくとも更 ある。ー q オプションをつけてデーモンを走らせよう。これ は、社内のすべての Sun 上で routed を稼動させるべきで ダイナミックな経路指定のメリットを十分に活かすに トされている。 ロトコル ( RIP ) を使用しており、 routed によってサポー Network System) 経路指定プロトコルから派生したプ えている必要もある。 Sun の場合、これは XNS(Xerox とのあいだで経路指定情報を翻訳する能力をルータが備 る IGRP と社内 LAN で使っている経路指定プロトコル なければならない。さらに、地域ネットワークで使ってい する地域ネットワーク上で動く IGRP をサポートしてい コルの出現が待たれる。あなたが利用するルータは、接続 おり、 lnternet の標準として単一の柔軟な経路指定プロト いないからである。この分野の研究は精力的に進められて 適、もしくは標準となる経路指定のプロトコルが存在して

5. UNIX MAGAZINE 1991年6月号

278 279 280 281 282 287 291 292 293 295 297 300 301 302 303 305 307 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 331 332 3 335 337 338 339 341 342 343 5 347 349 350 351 352 355 356 357 359 361 362 OSF, / Motif のすべて一⑨ ヘルプメニュ XmN1abe1String = def—help—label ; arguments menus—args ; arguments { Object He1p : XmCascadeButton gadget { ノヾージョンボタン XmCascadeButton help_button ; XmSeparator XmPushButton controls { XmPu11downMenu { controls { version—button; arguments menus-args; arguments { 0bject version—button : XmPushButton gadget { 365 366 367 369 370 371 372 373 374 375 376 377 378 379 1 382 7 8 389 390 391 392 393 394 395 396 397 398 399 401 402 403 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 431 442 4 445 446 アナログ / デジタル切替えボタン object analog—button : XmPushButton gadget { arguments { XmN1abe1Type XmN1abe1Pimap callbacks { = XmPIXMAP ; = da-change-icon; XmNactivateCa11back = procedure change—ad—da() ; A1am button ObJect alam—button : XmPushButton { arguments { XmN1abe1Type XmNbackground XmN1abe1Pimap callbacks { = XmPIXMAP ・ yellov ; = xbitmapfi1e('C10ck. X新つ ; XmN1abe1String XmNacceIerator def—version—label ; def—version—accelerator; XmNacce1eratorText = def_version_accelerator—text; callbacks { XmNactivateCa11back = procedure version—proc ヘルプボタン object help-button : XmCascadeButton gadget arguments { arguments menus XmN1abe1String controls { XmPu11dovnMenu object he1p—pu11down2 controls { XmPushButton { -args ; = def—he1p—1atE1 ; XmPu11downMenu { he1p-pu11down2; arguments { arguments menus—args ; XmN1abe1String = def—help- ワークエリア message; object basic—fom controls { XmRo 、℃ 011 畑Ⅱ XmSeparator XmFrame XmFom widget { main—button—box; main_separator; clock—box ; XmNactivateCa11back = procedure control—proc() ; セノくレータ object main—separator : XmSeparator gadget { XmN1eftOffset XmN1eftWidget XmN1eftAttachment = XmAITAffI_WImET; XmNbottomAttachment = XmAITACH. _FORM; XmNtopAttachment XmNorientation arguments { = 10 ; XmRowC01umn main_button_tx)x ; = XmATTACH_FORM; クロック (Athena Widgets) 0bject clock—box: XmFrame { ( 0 れ trols { XmNmarginHeight XmNmarginWidth XmNbottomOffset XmNbottomAttachment = XmATTACH_FORM; XmNrightOffset XmNrightAttachment XmN1eftOffset XmN1eftWidget XmN1eftAttachment XmNtopOffset XmNtopAttachment arguments { = 10 ; —widget ; = 10 ; = 10 ; = XmAITACH_FORM; = 10 ; = main—separator; = XmMTACH_WmET; = XmMTACH_FORM; user_defined clock XmNbackground = color('lightblue') ; XmNforeground = blue; XrnNborderWidth = arguments { clock—vidget : user—defined procedure CreateC10ck { ボタンポックス object main—button—box : XmRowC01umn { arguments { XmN1eftAttachment = XmAITACH-FORM, XmNwidth XmNheight clk-upiate clk-hands clk-highlight clk-chime clk—font callbacks { blue; = 工 11e ; XmNtopAttachment XmN1eftOffset XmNtopOffset controls { XmPushButton XmPushButton = XmATTAffI_. FORM; analog-button ; alar button; = 10 ; = 10 ; MrmNcreateCa11back = procedure create-cb (k—clock—id) ; end module; UNIX MAGAZINE 1991.6 95

6. UNIX MAGAZINE 1991年6月号

XI 旧 4 テクニカル・ドユメント オンライン版・リリース開始 ! 監修遠藤知宏 「 X Window System Version11 Release 4 」に添 付される英文ドキュメント群を技術的な裏付けを 持った読み易い日本語に翻訳しました。 OSF/Motif のすべて ー⑨ 0 u { "toggle-proc" { "activate_proc" { "scale—proc" 65 66 int names_list—num static 67 / sizeof(MN4RegisterArg)) ; (sizeof names—list 69 70 B001e 田一 0 Ⅱ ; 71 B001ean am_sw ; hour; 72 int minute ; 73 int second ・ 74 int 75 toplevel : 76 Widget MainWindow ; 77 Widget AI Wi Ⅱ do 町 78 Widget FontsWindow; 79 Widget VersionWindov; 80 Widget C10ck—Widget ; 81 Widget 82 83 84 メインルーチン main(argc, argv) 89 int argc; 90 char **argv , 91 矼 g [ 1 ] ; 92 language; 93 * 1 g ; 94 は NG [ 20 ] ; XtWontext app-context; 96 98 1. lnitialize 100 / * locale の設定 * / 101 lang = set10ca1e()C CIYPE' " " ) ; 102 103 language = (char * ) getenv ("LANG") ; 104 if ( ( 1 e = NULL) Ⅱ (strlen(language) 105 strcpy(LANG, "LANG=") ; 106 strcat(LANG, lang) ; 107 putenv(LANG) ; 108 109 putenv(' ・ UIDPATH=. /な/%び爲 . / % っ ; 110 111 / * ト IR 討の初期化 * / 112 MmInitia1ize ( ) ; 113 テクニカセッション 114 / * ューザー指定 Widget class の登録 * / 115 if *. ,"Clock'%"CreateC10ck" 116 CreateC10ck, &clockwidgetclassrec) ! = 117 TCP/IP, UUCP, LAN から lnternetworking まで printf("\nERROR\n") ; 118 119 最新のネットワーク事情と運用ノウハウを、豊富な / * T001kit の初期化 * / 120 toplevel = XtAppImtia1ize(&app—context' APP—CLASS' 121 事例を交えて詳細に解説します。 NULL, 0 , &argc, argv, 肌Ⅱ工 , NULL 0 ) ; 122 AppInitia1ize ( ) ; 123 124 / * UID Hierarchy のオープン * / 125 MmOpenHierarchy(uid—fi1e—num,uid-fi1e,O,&hierarchy—id) ; 126 127 / * コールバック関数の登録 * / 128 MmRegisterNames(names—1ist, names—list—num) ; 129 130 XtSetArg (arg[O] , XtNallowShellResize, ・ IRUE) 131 XtSetVa1ues(top1evel, arg, 1 ) ; 132 133 134 2. Creation 135 136 / * Widget のフェッチ * / 137 MmFetchWidget(hierarchy-id, , toplevel' 138 &MainWindow , &vidget—class) ; 139 XtManageChi1d (Ma1nWindow) ; 140 141 142 3. Rea1ization 143 144 ″リアライズ * / 145 XtRea1izeWidget (toplevel) ; 146 XtAppMaxnLoop(app-context) ; 147 1 149 static void AppInitialize() 150 151 63 64 68 Vol.O 移植カイト / リリース・ノート 標準プロトコル Vol.1 Vol.2 コマント・リファレンス・マニュアル Vol.3 X ⅱ b - C 言語 X インタフェース Vol.4 X ツールキット・イントリンシックス - C 言語インタフェ ース VOl.5 アテナ・ウィシット・セット - C 言語インタフェース VOl.6 ライフラリ・リファレンス・マニュアル 別冊 PEX プロトコル - 公開レヒュー用試案 ・ XI 1 日 4 日本語オンラインマニュアル 当ドキュメントを catman 形式で出力する日本語オンラインマニュアルです 技術資を丿ーズ 第 1 集入力メソットの仕様ーー公開レヒュー用試案 原題 : X Window System lnput MethOd Specification X のアプリケーションの国際化、日本語化をお考えの皆様に必須の資料です。 原題 : Xlib Changes fO 「 lnternationalization リリース 5 で x ⅱ b に対して行なわれる数多くの追加や変更について解説しています 第 2 集国際化のための刈 ib の変更点 - ーー公開レヒュー用試案 第 3 回 7 / 1 6 、 1 7 ニ日間 第 4 回 9 / 10 、ⅱニ日間 97.000 円 / ー名 ( ニ日間 ) ( 昼食、喫茶、テキスト代金込み ) *X Window system は米マサチューセッツ工科大学の商標です。 ※表示価格はすべて消費税ぬきの価格て、す。 詳細については下記にお問い合せ下さい 、、業務拡張人材募集中 / ″ 株式会社創夢 〒 150 渋谷区宇田川町 2 ー 1 渋谷ホームズ 325 号 TEL:03 ( 3770 ) 3234 FAX : 03 ( 3770 ) 3235 (G3) 担当者 : 安河内 ( ャスコウチ ) 、今泉 ( イマイズミ ) 資料請求 N 。 OOC 91 UNIX MAGAZINE 1991.6

7. UNIX MAGAZINE 1991年6月号

OSF, / Motif のすべて一⑨ リスト 5 は lmakefile です。本来、 MRESOURCELIB (Mrm) から XLIB までのライプラリは LOCAL- LIBRARIES として定義するほうがふさわしいのですが、 OSF/Motif についてくる imake のテンプレートにバグ があり、 LOCAL-LIBRARIES にするとそれらを make しようとしてエラーになります。これは、 OSF/Motif1.1 が X11R3 から X11R4 への imake の仕様変更に対応す るのを忘れているためで、最新版の OSF/Motif1.1.1 で も直っていません。そこで、 OSF/Motif 1 . 0 でも OSF/ Motif 1 . 1 でも imake できるようにするには、 SYS- LIBRARIES として定義するしかありません。まあ、 X の リストー #ifdef notdef 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 58 60 61 90 《 C10ck OSF/Motif サンプルプログラム》 ファイル名 : main. c main pro 、 Copyright 1991 Sony Corporation, T0kyo, Japan A11 Rights Reserved #include く X11/Xaw/C10ck. h> #include <Xm/Text. > #include く Xm/Se1ectioB. h> #include く Mm/MmApp1. h> #include く Xm/Xm. h> #include く 10ca1e . h> #define APP_CLASS "CLock" static / * コ VOid void VOid void VOid VOid VOid VOid VOid VOid VOid VOid static static static stat ic statlc static StatiC ″ューザー定義 Widget の生成関数 * / Widget CreateC10ck() ; ルバック・ルーチン * / quxt-proc() ; cancel—proc ( ) ; change-ad-da() ; control—proc() ; version_proc() ; font-proc() ; font—selected() ; alam-set-proc() ; toggle—proc() ; activate—proc() ; scale-proc ( ) ; create—cb() ; void AppInitia1ize ( ) ; int clockvidgetclassrec ; MmHierarchy hierarchy—id ; / * UID file * / char *uid—file [ ] "C10ck. uid't i'String. tild" "FontSe1ect. uid" 'tA1amSet. uid" "Version. #endif / * notdef * / int uld-file—num = (sizeof uid—file / sizeof uid—fi1e[O]) ; MmType vidget—class; / * コールノヾック・ルーチンのべクターテープル * / MRMRegisterArg names—list[] = { "control—proc" { i'verslon_proc ー "font—proc't { "font_selected" { "cancel_proc'l { "change—ad—da" { "quit-proc" { set—proc' (caddr-t) control-proc } , (caddr—t) version-proc } , (caddr—t) font-proc } , (caddr-t) font—selected } , (caddr-t) cancel—proc } , (caddr-t) change-ad-da } , (caddr-t) quit-proc } , create—cb } , alam-. set—proc } , (caddr-t) (caddr-t) ソース環境でやるのでなければどちらでも同しです。例に よって、 xmkmf として Makefile を作ってください。 次回は、空つばの関数として定義したコールバックとポ ップアップ・ウインドウの UIL ファイルの実際を紹介し、 このサンプルを完成させたいと思います。しかし研究熱心 な読者の皆さんは、つづきを待たすに自分で完成させてし 待ちしております。 では、今回はこのへんで。来月もまた、この研究室でお まうことでしよう。 ( くばやま・まさふみソニ UNIX MAGAZINE 1991.6

8. UNIX MAGAZINE 1991年6月号

◇スレープ・サー / ヾーのプートファイル domain ; type SIave server conf iguratl on directory domain prxma-ry prxma-ry forwarders cache Slave source file or host /etc/named widget.com 0.0.127. in-addr—arpa f . 127.0.0 localhost localhost 139.18.2. 1 139.18.2. 139. 118.1 2 cache ◇ルートのキャッシュファイル $ORIGIN . 99999999 IN NS 99999999 IN NS 99999999 IN 99999999 IN 99999999 IN 99999999 IN (hotwire the addresses) . Prep the cache Order does not matter NS. NIC . DDN . MIL 99999999 IN A. ISI . DU 99999999 IN 99999999 IN AOS . BRI.. MIL 99999999 IN 99999999 IN NS C. NYSER. NET 99999999 IN NS GUNTER. -ADAM. AF. MIL 99999999 IN NS NS. NASA. GOV 99999999 IN NS 99999999 IN NS TERP. 11の .EDU 99999999 IN NS A. ISI .EDU/ AOS. B田・ . MIT. GUNTER. —ADAM. AF. MIL. C. *.. NET. T ユ O . 団 U. NS . NASA. GOV. 0 0 「′っムっム ・ 0 ・ 3 0 2 8 1 6 5 9 「′ 0 イよ・ ・ -1 0 ・ 0 ・ 2 0 0 つん 6 ・ 9 ・ 1 5 8 2 ・ 8 8 2 2 ・ 8 2 8 CO つんつん (O つんつん ◇ローカルホスト・ファイル $ORIGIN localhost. IN SOA widget.com hostmaster. widget . COm . 1 . 1 21600 900 3600000 21600 ) Seria1 Refresh ー 6 hours Retry ー 15 minutes Expire ー 1 , 000 hours Minimum ー 6 hours IN NS widget.com/ IN A 127.0.0.1 ◇逆ループバック・ファイル $ORIGIN 0.0.127. IN-ADDR. ARPA . . com. ( IN SOA widget.com/ hostmaster. widget Seria1 1 . 1 Refresh ー 6 hours 21600 Retry ー 15 minutes 900 Expire ー 1 , 000 hO 、 s 3600000 21600 ) M 土 rm 加ー 6 hours IN NS widget ・ com ・ IN P ユ 10C 訌 host. 1 84 UNIX MAGAZINE 1991.6

9. UNIX MAGAZINE 1991年6月号

連載 OSF/Motif のすべて ユーサー・インターフェイス言語 IJ に 2 久保山正文 前回は、 UIL の概要についてお話ししました。今回は、 実際のプログラムを見ながら UIL について学んでいくこ とにいたしましよう。用意したサンプルは、時計のプログ ラムです。ちょっとしたアプリケーションを書こうとする と、ほとんどの場合、自分で新たに Widget を定義する必 要がでてくることは、経験者の方ならお分かりでしよう。 そこで、時計の部分に Athena Widget を用いて、 UIL か ら Motif Widget 以外のウィジェットを利用する方法を 示してみました。 ます、プログラムの構成を図 1 に示します。メインウィ ンドウと、 3 枚のポップアップ・ウインドウから成ります。 文字列の部分を抜き出して別の UIL ファイルにし、各国 語対応を可能としました。 今月号では、メインウインドウを定義する Clock . uil と文字列を定義する String. uil だけを紹介します。残りは 次回にしましよう。 make は今回のソースだけでもできる ようにしてあります。ただし、メニューやボタンを操作し ても何も起こりません ( Quit だけできます ) 。 メインルーチン リスト 1 は、 C 言語メインルーチンです。前回紹介した 、、 HeIIoWorld 〃と比べるとコールバック・ルーチンや UID ファイルの宣言数が増えていますが、やっていることはた いして変わらないでしょ ? 42 行目の、 # ifdef notdef は 今月は紹介しない UID ファイルの宣言ですので、とりあ えすこうしてあります。ューサー定義 Widget を利用する ための部分は、 17 行目と 35 行目の宣言、 116 行目の MrmRegisterClass( ) 関数、それに 162 ~ 170 行目の CIock Widget を生成する関数です。 このようにして Widget のクラスと生成関数を Mrm 88 に登録してやれば、ほかの Motif の Widget と同しよう に UIL ファイルでオプジェクトとして記述することがで きるようになります。 main ( ) の最初のところ ( 102 行目 ) で、 setlocale ( ) とい う関数を呼んでいるのが気になる方もいらっしやるでしょ う。これは、 ISO 、 POSIX などで定義されている言語環境 設定関数です。これがインプリメントされているかどうか はシステムにもよりますが、インプリメントされていると きはお題目のようにこの関数を呼んでください。 そして実行時に UID ファイルをサーチする手順ですが、 $UIDPATH という環境変数に従います。これがセットさ れていなければ Mrm 側で適当なデフォルト (/usr/lib/ XI 1/$LANG/uid/CLASS- NAME など ) をもっていま すが、明示的に孑ぐしたいときには 110 行目のようにしま す。 % U % S が UID ファイル名に ( % S はサフィックスす なわち、、 . uid 〃 ) 、 %L は環境変数 $ LANG に置き換わりま す。この場合、ます力レントディレクトリの $ LANG のド を捜し、なけれは・カレントディレクトリを捜すことになり ます。 あとはお決まりの手順で、イニシャライズ、クリエイト、 リアライズ、そしてメインループに入る、というわけです。 リスト 2 はコールバック・ルーチンを集めた call- backs. c ですが、今月はエントリだけを作っておきます。 メインウインドウの UIL リスト 3 がメインウインドウを記述する UIL ファイル です。これを見て分かるように、 UIL ファイルは大きく分 けて 4 つのセクションから成ります。すなわち、プロシー ジャセクション、ノヾリューセクション、リストセクション そしてオプジェクトセクションです。 UNIX MAGAZINE 1991.6

10. UNIX MAGAZINE 1991年6月号

sed ' s/. / / ' は # and unconvert ARPAN€r addresses sed ' s た 255 / 10 / ' 憘 # awk # 3 ー final output fomatting ( 1 t stage, whew! ) # This stage 100kS at the address and puts comments headers out # for each subnet 1 isted in /etc/localnetworks awk ) BEGIN { in_data = 0 PREVIOUS_N€r = FORMAT = " # 0 % S00 # add " 100Pb and localhost ー net 127 tO top Of fi1e printf FORMAT, loopback network loopback localhost loghost " print " 127.0.0.1 $startofdata in_data = 1 ; next ; if { ! in—data) } ' $localnetworks exit 0 # input is from /etc/localnetworks if ()F = = 0 Ⅱ $ 1 ~ た # / ) # sk1P uninterest ing stuff next NE Ⅳ 0 [ $ 2 ] = $ 0 } else { Ⅱ = split()l , ipaddr, # input is from stdin ( 土 . e. host data) # this assumes you have a class B network number using 8 bit subnets net= ipadr[l] ". " ipadr[2] ". " ipadrC3] if ( net ! = PREVIOUS_N€r ) { PREVIOUS_Nff = net printf FORMAT, NEIVORK[net] print sed ー " / ; START OF SOA PARAEIERS/,/; 日の OF SOA PARAMETERS/p" $in >>$out # use the fields in the SOA records for the reverse mapplng file echo "@ IN SOA ${domain} hostmaster. ${domain} ( " >>$out echo '$ORIGIN"t $revdomain" . IN—ADDR. ARPA. >$out domain=widget.com/ # domain name revdomain=18.139 # reverse domain out=f .139.18 # output file in=vidget # input file # eventually thi s should be dynamc # make the reverse mapping file from a DNS database # ! /bin/sh リスト B makerev スクリプト tr "A—Z " # convert multiple spaces tO a single space # translate t0 lower case 田 ld tabs tO spaces and 82 nrevbytes 十十 for (i in revbytes) nrevbytes = 0 split(revdomain, revbytes, revdomaxn = " , ${revdomaln} ' domain = " '${domaln} ' BEGIN { awk ' UNIX MAGAZINE 1991.6