MOSA Multi-OS Software Artists

MOSAはソフトウェア開発者を支援します

  • iPhone/iPod touch アプリ紹介
  • MOSA掲示板
  • 活動履歴
  • About MOSA(English)

MOSA Developer News[MOSADeN=モサ伝]第225号

2006-10-17

目次

  • 「Wonderful Server Life」      第23回  田畑 英和
  • 藤本裕之のプログラミング夜話 #101
  • 高橋真人の「プログラミング指南」  第99回
  • ニュース・解説                小池 邦人

「Wonderful Server Life」  第23回  田畑 英和
  〜Open Directory編〜

 今回はOpen Directory上にネットワークユーザを登録する方法について解説します。ネットワークユーザを作成するには「ワークグループマネージャ」を使用して、「/LDAPv3/127.0.0.1(ネットワーク)」のディレクトリを選択するところまでを前回解説しました。間違えてローカル側のディレクトリにユーザを登録しますと、ネットワークユーザとして機能しませんので注意が必要です。

◇ネットワークユーザの登録
 ユーザアカウントの一覧を表示した画面で、ツールバーの「新規ユーザ」ボタンをクリックすると新規ユーザを1つ追加できます。ユーザを追加するにはディレクトリの管理者権限が必要になりますが、もし「新規ユーザ」ボタンが押せなく、ツールバーの下に「認証されていません」と表示されている場合には、まずディレクトリ管理者として認証を行う必要があります。
 認証を行うにはツールバーの下(右端)にあるボタンをクリックして、Open Directoryのマスターを設定したときに登録したディレクトリ管理者(デフォルトでは”diradmin”)として認証を行います。

・diradminとしてディレクトリに認証
http://homepage.mac.com/htabata/MXS10.3/img/WGM_User/WGM_User_06.png

 ディレクトリの管理者として認証を行ったあとに、「新規ユーザ」ボタンをクリックすると「名称未設定 1」という名前のユーザが作成されます。あとは「名前」、「ユーザ名」、「パスワード」を入力して、画面右下の「保存」ボタンをクリックすればディレクトリにネットワークユーザが登録されます。

・新規ユーザの登録
http://homepage.mac.com/htabata/MXS10.3/img/WGM_User/WGM_User_07.png
http://homepage.mac.com/htabata/MXS10.3/img/WGM_User/WGM_User_08.png

◇ユーザのパラメータ
 ユーザのパラメータとしては最低限、「名前」、「ユーザ名」、「パスワード」の入力が必要となります。パスワードは省略することも可能ですが、パスワードの省略はセキュリティ上の問題がありますので、省略すべきではないでしょう。
 「ユーザID」というパラメータもありますが、ユーザIDは自動的に割り当てられますので、特に必要がなければ変更する必要はありません。また「ワークグループマネージャ」でユーザを管理する場合、ユーザ名は複数登録することができます。1つ目のユーザ名は一度登録すると基本的には変更することができませんが、2つ目以降のユーザ名であればあとから変更することができます。
 ユーザのパラメータの詳しい仕様は以下のようになっています。

・名前
  最大長は255byte、ロングネームとも呼ばれる
  1byte文字の場合は255文字、3byte文字の場合は85文字まで
  フォーマット:UTF-8
・ユーザ名
  最大長は255byte、ショートネームとも呼ばれる
  最大16個登録可能(最低1つは必要)
  1つ目のフォーマット:A〜Z、a〜z、0〜9、_、-
  2つ目以降のフォーマット:UTF-8
・ユーザID
  500〜2,147,483,648の数値、100未満はシステム用に予約
  フォーマット:32ビットの数値

・ユーザレコードの標準属性
「オープンディレクトリの管理」P.217
http://images.apple.com/jp/server/pdfs/Open_Directory_v10.4_j.pdf

◇管理者権限
 新規に登録したユーザにサーバの管理権限を与えたい場合は「ユーザに許可する操作」を設定します。管理者権限は2つに分かれており、通常のサーバ管理者(「サーバ管理」で管理を行う管理者)として登録するのであれば「サーバを管理する」をチェックします。
 また、ディレクトリの管理者として登録するのであれば「このディレクトリのドメインを管理する」をチェックします。両方をチェックしておけばサーバおよびディレクトリの管理者として登録されます。

あとは以上の操作を繰り返すことにより、ネットワークユーザをどんどん登録することができます。

つづく

藤本裕之のプログラミング夜話 #101

 前回はビューオブジェクトがドラッグ&ドロップの面倒を見るためにインプリメントしておかねばならない4つのメソッド、

- (NSDragOperation)draggingEntered: (id ) sender;
- (void) draggingExited: (id ) sender;
- (BOOL) prepareForDragOperation: (id ) sender;
- (BOOL) performDragOperation: (id ) sender;


のうち、一番上の draggingEntered: の実装について解説したところまでであった。次のdraggingExited:はつまり上の逆、ドラッグされている物体(というのがテキトーであるかどうかは議論のあるところだが)が当該ビューの上から出て行った場合にやってくるメッセージである。とりあえずこんな風に書いておく。

- (void) draggingExited: (id ) sender{
     _dragging = NO;
     [self setNeedsDisplay: YES];
}


 簡単ですね。つまり draggingEntered: を受けとったときにオンにしたフラグをオフにしてビューの見た目を「なんにもなかったことにする」んである。人生においては時折、とってもつらい「なんにもなかったことにしましょうね」が訪れるもんであるが、これはお手軽である。なに書いてんだオレ。

三番目の prepareForDragOperation: はこれに輪をかけてお手軽。普通こんなもんである。

- (BOOL) prepareForDragOperation: (id ) sender{
     return YES;
}

このメッセージはそれまでドラッグされていた物体(もう物体でいいや)がビューの上で「ドロップ」された瞬間にやってくる。これは直前に呼ばれたdraggingEntered: (draggingUpdated: のときもある)がNSDragOperationNone以外の値を返したときにだけ呼ばれるので、まぁかなり特殊な場合を除いてはYESを返しておけばOKである。ちうか、ワタシは正直なところ、draggingEntered: でNSDragOperationNone 以外を返しておいて、そいつのドロップをハンドリングできないという例を思いつかないんだけど、ここでNOを返すって例えばどんなケースなのかしら。

 そして最後の performDragOperation: こそがドラッグ&ドロップ・オペレーションの立役者、花形満である。こいつの仕事を一言で言えば鉄球を鉄バットで打ち返す特訓をして体中ぼろぼろにしつつ大リーグボール1号を打つことなのだが、具体的には(なにが具体的だ)以下のような感じになる。

- (BOOL) performDragOperation: (id ) sender {
     /* まず(必要があれば)委細構わずアクティブ・アプリケーションになる */
     [NSApp activateIgnoringOtherApps:YES];
     /* ドラッグ&ドロップ用ペーストボードからドラッグされてきた
       ファイル名のアレイを獲得 */
     NSPasteboard*  pb = [sender draggingPasteboard];
     NSArray*   fList = [pb propertyListForType: NSFilenamesPboardType];
     /* ここでこれらのファイルを煮るなり焼くなりするわけだが、ここでは
       コンソールに名前をさらすだけにしておいてやろう。面倒だから(笑) */
     int  index;
     for(index = 0; index < [fList count]; index++){
          NSLog(@"Dragged File #%d is %@",
               index,  [fList objectAtIndex:index] );
     }
     return YES;    /* ちゃんと処理したぞ */
}


 もちろんこれはサンプルだからこんなふうに単純なのであって、例えば画像ファイルは扱うけど他のだめとか言う場合、上のアレイのなかを一個一個ナメていって一個も画像ファイルがなかったときにはNOを返すとかするわけである。よくファイルをアプリケーションのウインドウにドロップすると、花形に打ち返された大リーグボールみたいにギュイーンって元の場所へ戻っていくときがあるではないの。あれはこのメソッドが(確かめてないけどたぶんprepareForDragOperation: も、だと思う)NOを返した結果なのである。

(2006_10_12)

高橋真人の「プログラミング指南」第99回

プログラマのためのオブジェクト指向再入門(7)

〜クラス<3>〜

 こんにちは、高橋真人です。
 早速続きです。

void
IntType::print()
{
     printf("%d", number);
}


 前回ご説明した部分に加え、このprint()というメンバ関数の定義で、IntTypeクラスの基本的な実装は完了です。これで連載96回の冒頭にあるコードは動作するようになります。
 と言いたいところなのですが、実はC++のコードとしてはこれだけでは不充分です。「アクセス制御」というものの関係上、このままではコードがコンパイルを通ってくれません。
 アクセス制御の説明はもう少し先になりますので、残念ながらコードの実行を試してみることはまだできませんが、今回のクラスは非常に単純なのでコードを見ただけでどんな動きをするのかの想像をすることは容易でしょう。

引き続いて、今度はFloatType(連載96回のコード例B')を実装していきますが、その前に連載96回でIntTypeに加えてみたdivideBy()も実装してしまいましょう。

void
IntType::divideBy(int n)
{
     number /= n;
}


 予想通り簡単でしょうから、特に説明の必要もないと思います。ここでは省略しましたが、もちろんクラス定義の方にdividedBy()の宣言を加えておいてください。以下のFloatTypeの例を参照すれば、そんなに難しくないはずです。
 では、FloatTypeです。まずはクラスの定義。

class FloatType
{
     FloatType(float n);

     void add(float n);
     void dividedBy(float n);
     void print();

     float     number;
};

 IntTypeとの比較がしやすいように、メンバ関数の引数名やメンバ変数名をあえて同じにしてあります。
 では、続いて各メンバ関数の実装。

FloatType::FloatType(float n)
{
     number = n;
}

void
FloatType::add(float n)
{
     number += n;
}

void
FloatType::print()
{
     printf("%f", number);
}

void
FloatType::divideBy(float n)
{
     number /= n;
}


 ざっと見ると、IntTypeとほとんど違いがありません。細かい部分を見ますと、intがfloatになったことと、printf()の出力オプションが%dから%fになったことに気付くでしょう。
 ここで一つ注目してほしいことは、divideBy()における/=演算子がIntTypeとFloatTypeでは異なる処理をしていることです。つまり、連載96回で解説したように、/という演算子を処理するに際してコンパイラはオペランド(演算する対象)を見て整数演算にするか浮動小数演算にするかを切り替えています。
 このような「一つの演算子で複数の処理を使い分ける」仕組みのことを「演算子のオーバーロード」と呼びますが、これはオブジェクト指向言語の特徴というわけでもありません。今まで特に意識したことはなかったかもしれませんが、C言語においても備わっている仕組みですから。

ところで、鋭い読者の方はひっかかっていることがあるかもしれません。それは、IntTypeでもFloatTypeでも、add()やdivideBy()という関数の引数として、intやfloatを与えていることです。「コード例ではintやfloatではなく、同じクラスの別のオブジェクトを与えているではないか」と。
 ご指摘は確かにごもっともです。ただ、その辺は前述のアクセス制御とも絡んでくる話になるので、今の段階では話を単純にするためにその辺を曖昧にしてしまいました。すみません。
 でも、このままじゃコードがちゃんと動いてくれませんので、次回はそれに対しての対策のお話から始めることにいたしましょう。

ニュース・解説

 今週の解説担当:小池邦人

● Carbon ドキュメント & サンプル & SDK ナビゲーション(2006/10/13)

【開発環境】

Apple社からMac OS X 10.4.8が発表されました。皆さんのマシンでは問題なく動いているでしょうか? どうやらMac OS X 10.4.8のインテル版の方は「Rosetta」が大きく改良されているようでして、PowerPC版のアプリケーションを動かした場合、その浮動小数点演算能力が大幅にアップするようです。またAltiVec演算のエミュレーションも高速になっているという報告もあります。浮動小数点やAltiVec演算を多用するアプリケーションではかなりの効果が期待できそうです。さっそく浮動小数点やAltiVec演算を多用する自作アプリで試してみたところ、確かにRosettaが改良された効果が出ているようです。ただし、そうは言ってもネイティブで動かす場合の半分以下の速度しか出ませんので、いまだユーザにUniversalアプリケーションを供給できていないメーカーには、気合いを入れてがんばっていただきたいと思います。

【テクニカルドキュメント】

前回から10月13日の期間中、Apple社のGuidesサイトやReferenceサイトには新規ドキュメントが多数登録されました。ただし、大部分は今までの内容のマイナーチェンジです。今回は、その中で初版と内容が大幅変更になったドキュメントだけをピックアップしました。初版は、Referenceサイトに登録された3つのドキュメントのみです。また、デベロッパー向け読み物が2つ登録されています。

「Cocoa Application Tutorial Using Bindings」(PDFあり)
「Exception Programming Topics for Cocoa」(PDFあり)
「Shell Scripting Primer」(PDFあり)
「System Startup Programming Topics」(PDFあり)
「Final Cut Pro XML Interchange Format」(PDFあり)
「FxPlug SDK Overview」(PDFあり)
「Xcode 2 User Guide」(PDFあり)(日本語訳あり)

http://developer.apple.com/documentation/index-rev-date.html

「Exception Handling Framework Reference」(PDFあり)(初版)
「NSExceptionHandler Class Reference」(PDFあり)(初版)
「WebObjects Bundle Reference」(PDFあり)(初版)

http://developer.apple.com/reference/index-rev-date.html

「Growing Your Business: Developer Opportunities with the Apple Store」(読み物)

http://developer.apple.com/business/macmarket/applestoreanddevelopers.html

「Mindjet Enhances MindManager 6 Mac: More Than Just Porting」(読み物)

http://developer.apple.com/business/macmarket/mindmanager.html

前回から10月13日の期間中、新規テクニカルノートは3つ登録されました。また、新規テクニカルQ&Aの方は11登録されました。

TN2137「Building Universal Binaries from "configure"-based Open Source Projects」
TN2138「QTKit Frequently Asked Questions」
TN2084「Using AppleScript Scripts in Cocoa Applications」(初版)

http://developer.apple.com/technicalnotes/index-rev-date.html

QA1367「Finding EXC_BAD_ACCESS bugs in a Cocoa project」
QA1436「What is the "main bundle" of a command-line foundation tool?」(初版)
QA1493「How do I access files contained in my AppleScript Studio application bundle?」(初版)
QA1454「How to make NSTextField accept tab, return and enter keys.」(初版)
QA1297「Don't forget to cancel your Bonjour resolve」
QA1323「Interface element identification in Interface Builder」(初版)
QA1490「Building Objective-C static libraries with categories」(初版)
QA1486「Programmatically Accessing and Manipulating Multiple Keychain Items」(初版)
QA1339「The state of mDNSResponder」
QA1457「Compression Sessions - Multipass encoding and the pass mode flags」
QA1364「Where are the LiveConnect classes on Mac OS X?」

http://developer.apple.com/technicalqas/index-rev-date.html

【サンプルソースコード】

前回から10月13日の期間中、Apple社のSample Codeサイトには、バラエティーにとんだサンプルソースコードが16登録されました。「BoingX」については、前号の木下さんの記事も参照してみてください。ちなみにこのデモは、デモをするアミガの横で動いていた初代Macintoshでの同じデモ(アミガの方がこんなに高速だと自慢するためのデモ)があまりにもひどかったため、それを見たApple社の技術者が即座に高速のデモを作成してアミガ陣営を見返したのが発端です(笑)。初代Macintoshは裏VRAMを持っていたので、それをうまく利用し美しく高速な表示を実現していました。

「SayIt」(Web Kit関連)(初版)
「CarbonCocoa_PictureCursor」(Carbon&NSCursor関連)(初版)
「BlockAnimation」(Java関連)(初版)
「Dicey」(Cocoa&Game関連)(初版)
「OpenGL based game template」(Game&OpenGL関連)(初版)
「Resizer」(Widget関連)(初版)
「Birthdays」(Widget関連)(初版)
「CarbonQuartzComposer_TV」(QuartzComposer関連)(初版)
「HelloStudio」(AppleScript Studio関連)(初版)
「Processes」(AppleScript Studio関連)(初版)
「TextEditPlus」(Cocoa&TextEdit関連)(初版)
「CxxNewDelete」(C++関連)(初版)
「Carbon Porting Tutorial」(Carbon関連)(初版)
「CarbonCocoaCoreImageTab」(CoreImage関連)(初版)
「AttachAScrip」(AppleScript関連)(初版)
「ComplexPlayThru」(CoreAudio関連)

http://developer.apple.com/samplecode/index-rev-date.html

【デベロップメント SDK】

前回から10月13日の期間中、Apple社のSDKサイトには新しいSDKが2つ登録されました。Mac OS X 10.4.8に対応した「Kernel Debug Kit 10.4.8」のPowerPC用とインテル用です。またToolsサイトには「CHUD 4.4.3」が登録されています。

「Computer Hardware Understanding Development (CHUD) Tools version 4.4.3」

http://developer.apple.com/tools/download/

「Kernel Debug Kit 10.4.8 - Intel」
「Kernel Debug Kit 10.4.8 - PowerPC」

http://developer.apple.com/sdk/

 ◇MOSAからのお知らせと編集後記は割愛します◇

 MOSA Developer News   略称[MOSADeN=モサ伝]
      記事投稿受付 http://www.mosa.gr.jp/topics/mdn-toukou.html
Apple、Mac OSは米国アップルコンピュータ社の登録商標です。またそのほかの各製品名等はそれぞれ各社の商標ならびに登録商標です。
このメールの再配信、および掲載された記事の無断転載を禁じます。
特定非営利活動法人MOSA  http://www.mosa.gr.jp/
Copyright (C)2006 MOSA. All rights reserved.