2006-10-10
目次
「Wonderful Server Life」 第22回 田畑 英和
〜Open Directory編〜
まずはアップデート情報から。9/29にMac OS XおよびMac OS X Server用の10.4.8アップデートがリリースされました。Mac OS X用のアップデートはPPC用とIntel用とで、それぞれ10.4.7からのアップデートと、10.4.0以降に適用可能なコンボアップデートがリリースされています。一方Mac OS X Server用のアップデートはPPC用のアップデートとUniversal用のアップデートに分かれています。これはUniversal対応したMac OS X Server v10.4.7がパッケージとしてリリースされているためだと思われます。Mac OS X Serverはv10.4.7で初めてUniversal対応したためv10.4.8のコンボアップデートはリリースされていません。
Intel用およびUniversal用のアップデートのサイズをみてみますと、かなり大きなサイズのアップデートであることが分かります。
・Mac OS X 10.4.8 Update(Intel):206MB
・Mac OS X Server 10.4.8 Update(Universal):202MB
Mac OS X Server用のアップデートの内容をみてみますと、Open Directoryのマスターとレプリカ間でのパスワード情報の同期や、「QuickTime Player」へのストリーム配信に関する問題が修正されていることが分かります。
OSのアップデートはシステムの再起動が必要になりますので、計画的に実施するようにしましょう。
・Mac OS X Server 10.4.8 Update(PPC)
http://www.apple.com/jp/ftp-info/reference/macosxserver1048updateppc.html
◇「ワークグループマネージャ」
前回は、Open Directoryのマスターの設定方法を解説しました。マスターを構築すれば新たにディレクトリが作成され、ネットワーク上で共有可能なユーザ(ネットワークユーザ)を登録できるようになります。
Open Directoryの設定は「サーバ管理」で行いましたが、Open Directory上のユーザを管理するには「ワークグループマネージャ」を使用します。「ワークグループマネージャ」には大きく分けて次の4つの役割がありますが、今回はアカウントの管理について解説したいと思います。
・共有ポイントの管理
・ネットワーク表示の管理
・アカウントの管理
・環境設置の管理
「ワークグループマネージャ」は、「/アプリケーション/サーバ」にインストールされています。これは「サーバ管理」と同じ場所です。起動するとまずは接続先のサーバを指定する必要があります。つまり「サーバ管理」と同様にネットワークを経由してリモートのサーバを管理できるということです。
サーバがDNSに登録されている場合、サーバのアドレスはDNSに登録した名前で指定しましょう。また、このとき認証に使用するユーザは、サーバの管理者ユーザであれば大丈夫です。
・「ワークグループマネージャ」でのサーバへの接続ダイアログ
http://homepage.mac.com/htabata/MXS10.3/img/WGM_User/WGM_User_01.png
「サーバ管理」の場合は、一度接続したサーバは画面左側のリストに登録されますが、「ワークグループマネージャ」にはサーバのリストはありません。そこで、頻繁に使用するサーバであれば、「よく使う項目」メニューから「よく使う項目に追加」を選択して、サーバをメニューに追加しておくと便利です。メニューに追加しておけば、メニューを選択するだけですぐにサーバにアクセスすることができます。
・よく使う項目に追加
http://homepage.mac.com/htabata/MXS10.3/img/WGM_User/WGM_User_02.png
サーバ接続したらまず選択中のディレクトリを確認します。これはマスターに設定したMac OS X Server上には2つのディレクトリがあり、必要に応じて切り替える必要があるからです。片方のディレクトリは、システムに最初から用意されているローカル用のディレクトリで、もう片方はマスター構築時に作成されたネットワーク用のディレクトリです。
「システム環境設定」の「アカウント」で管理するユーザアカウントはローカルのディレクトリ(NetInfoで管理)に保存されますが、ネットワークユーザを作成する場合はネットワーク用のディレクトリ(LDAPで管理)に対して操作を行う必要があります。
ディレクトリの選択方法ですが「ワークグループマネージャ」のツールバーのすぐ下(左端)にポップアップメニューがあり、ここからディレクトリを選択できます。ローカル用のディレクトリを管理するには「ローカル」を選択し、ネットワーク用のディレクトリを管理するには「/LDAPv3/127.0.0.1」を選択します。もしポップアップメニューに「/LDAPv3/127.0.0.1」が表示されない場合は、「その他…」を選択してから目的のディレクトリを選択します。
・ディレクトリの選択
http://homepage.mac.com/htabata/MXS10.3/img/WGM_User/WGM_User_03.png
・ディレクトリの選択「その他…」
http://homepage.mac.com/htabata/MXS10.3/img/WGM_User/WGM_User_04.png
ディレクトリを切り替えると画面左側に表示されるユーザのリストが切り替わることが確認できます。「ローカル」を選択したときには、「システム環境設定」の「アカウント」で管理しているのと同じユーザのリストが表示されます。また、ポップアップメニューから「検索パス」を選択したときには、ローカルとネットワーク両方のディレクトリに登録されているユーザのリストが表示されます。
・ディレクトリ:ローカル
http://homepage.mac.com/htabata/MXS10.3/img/WGM_User/WGM_User_05.png
・ディレクトリ:/LDAPv3/127.0.0.1(ネットワーク)
http://homepage.mac.com/htabata/MXS10.3/img/WGM_User/WGM_User_06.png
次回はネットワークユーザの登録方法について解説する予定です。
つづく
SqueakではじめるSmalltalk入門 第71回 鷲見 正人
本連載では、名前は知っていてもなかなか触れる機会のないSmalltalkについて、最近話題のSqueakシステムを使って紹介しています。前回は「#addFieldTo:」というメソッドをGuiBuilderクラスに定義しました。
addFieldTo: window
| field |
field := PluggableTextMorph
on: self text: nil accept: nil readSelection: nil menu: nil.
window addMorph: field frame: (0.5 @ 0.5 extent: 0.5 @ 0.5)
このメソッドは、GUIビルダウインドウのウインドウメニューに新たに設けられた「add field」というメニュー項目を選択したときに起動され、ウインドウの右下にウインドウサイズの四分の一の大きさのテキストフィールド(a PluggableTextMorph)を設置します。
ウインドウサイズの右下に四分の一の…というのは、最終行で起動されるメソッド#addMorph:frame:の第二パラメータである「0.5 @ 0.5 extent: 0.5 @0.5」という式で生成される矩形情報(a Rectangle)により指定されています。表示領域の中央(0.5 @ 0.5)から、縦横幅の半分の大きさ(extent: 0.5@ 0.5)で…という感じでしょうか。ウインドウ内の任意の位置にテキストフィールドを設置するには、この矩形情報を動的に生成する仕組みを設ければよさそうですね。
マウス操作でインタラクティブに矩形情報を生成するには、すでに第64回で予習したとおり、クラスRectangleにメッセージfromUserを送信するのがお手軽です。直後に画面に描いたのと同じ対角線情報を持つ矩形オブジェクトを得ることができます。
ただし、そのままでは#addMorph:frame:を起動するメッセージの第二パラメータとしては使えません。この第二パラメータには、新たに追加するウィジェットの画面上での位置ではなく、ウインドウに対する相対的な位置と、ウインドウの幅を1.0、高さを1.0としたときの相対的な大きさで指定しなければならないからです。
相対的な矩形情報への換算(全体の何割に当たるのか…)には、基準となる特定のウインドウの表示領域(タイトルバーを除いた…)の矩形情報が必要となりますが、これはウインドウにlayoutBoundsというメッセージを送ることで得られます。さらにその矩形情報にメッセージtopLeftを送れば左上の座標を、widthやheightを送れば幅や高さの情報を(extentを送れば、双方をa Pointとして同時に)得ることが可能です。
これら一連の情報を用い、座標や大きさ(いずれもa Pointで表現…)同士の二項演算を行なうことで、必要な換算式は比較的簡潔に記述できます。たとえば次のスクリプトでは、rectに関連づけされたRectangle fromUserが返す絶対座標の矩形情報を、そのスクリプトが入力されている(つまり、最前面の)ウインドウ表示領域に対する相対比値に変換して返します。
| rect window bounds relOrigin relExtent |
rect := Rectangle fromUser.
window := SystemWindow classPool at: #TopWindow.
bounds := window layoutBounds.
relOrigin := (rect topLeft - bounds topLeft) / bounds extent * 1.0.
relExtent := rect extent / bounds extent * 1.0.
^ relOrigin extent: relExtent
さらに、クラスRectangleには、レシーバを第一パラメータとして添えた別の矩形の相対座標に変換してくれる#scaleFrom:to:という便利なメソッドがあるので、これを使うのもよさそうです。ただ、この#scaleFrom:to:は結果を整数にまるめてしまうため、0.0〜1.0の間の数で割合を表現したい今回は、そのままでは使えません。そこで、同じくRectangleに定義されている#scaleBy:を組み合わせて結果を1.0以下の小数で算出できるよう工夫します。
| rect window bounds |
rect := Rectangle fromUser.
window := SystemWindow classPool at: #TopWindow.
bounds := window layoutBounds.
^ (rect scaleFrom: bounds to: (0 asPoint extent: 1e3 asPoint)) scaleBy: 1.0e-3
以上をふまえて、ウインドウメニューから「add field」を選択したときに、任意の大きさのテキストフィールドを設置できるよう冒頭のGuiBuilder >>#addField:to:を書き換えてみましょう。
addFieldTo: window
| field relFrame |
field := PluggableTextMorph
on: self text: nil accept: nil readSelection: nil menu: nil.
relFrame := (Rectangle fromUser
scaleFrom: window bounds
to: (0 asPoint extent: 1e3 asPoint)) scaleBy: 1.0e-3.
window addMorph: field frame: relFrame
「add field」選択後、マウスで描いた矩形がその場でテキストフィールドに置き換わり、きちんとGUIビルダウインドウに設置されれば成功です。
バックナンバー:
ニュース・解説
今週の解説担当:木下 誠
———————————————————————-
WebObjectsバンドルのフォーマット
———————————————————————-
WebObjectsで使われるバンドルのフォーマットを解説したドキュメント、「WebObjects Bundle Reference」が公開されています。EOModel Bundleと、WOComponent Bundleの2つが含まれています。
WebObjectsの開発環境としてXcodeベースのものが望めなくなった今、Apple以外のベンダによる開発環境の充実が待たれます。そのための情報は出していこう、ということでしょうか。
WebObjects Bundle Reference
http://developer.apple.com/documentation/InternetWeb/Reference/WO_BundleReference/index.html
———————————————————————-
ExceptionHandlingフレームワークの使い方
———————————————————————-
Cocoaの例外を処理するためのフレームワーク、ExceptionHandling.frameworkの使い方を解説したドキュメント、およびリファレンスが公開されました。
このフレームワークは、Cocoaで発生した例外をキャッチして処理するための機構を提供します。ここで得られるNSExceptionと、atosというコマンドを利用することで、例外が発生した場所のスタックトレースを行うことができます。こちらについては、「Mac OS X Serverの例外処理について」というドキュメントに説明があります。
Exception Handling Framework Reference
http://developer.apple.com/documentation/Cocoa/Reference/ExceptionHandlingFramework/index.html
Exception Programming Topics for Cocoa
http://developer.apple.com/documentation/Cocoa/Conceptual/Exceptions/index.html
Mac OS X Server 1.x: Mac OS X Serverの例外処理について
http://docs.info.apple.com/article.html?artnum=60115-ja
———————————————————————-
複数のKeychainアイテムにアクセス
———————————————————————-
複数のKeychainアイテムアクセスに関するQA、「Programmatically Accessing and Manipulating Multiple Keychain Items」が公開されています。
QA1486: Programmatically Accessing and Manipulating Multiple Keychain Items
http://developer.apple.com/qa/qa2006/qa1486.html
———————————————————————-
Cocoaのテキストビューでリンクの表示
———————————————————————-
NSTextFieldとNSTextViewにハイパーリンクを埋め込む方法を説明したQA、「Embedding Hyperlinks in NSTextField and NSTextView」が公開されています。
NSLinkAttributeNameという属性を使うことになります。これで、リンククリックでWebブラウザを起動することができるようになります。
QA1487: Embedding Hyperlinks in NSTextField and NSTextView
http://developer.apple.com/qa/qa2006/qa1487.html
———————————————————————-
NSTableView、NSOutlineViewの背景に画像を描く
———————————————————————-
CocoaのNSTableView、NSOutlineViewの背景に画像を描くサンプル、「ImageBackground」が公開されています。
ポイントは、NSTableView、NSOutlineViewのサブクラスを作りdrawRect:を実装することと、それらのsuperviewにあたるNSScrollViewにsetDrawsBackground:メッセージを送ってやることです。
ImageBackground
http://developer.apple.com/samplecode/ImageBackground/index.html
———————————————————————-
CarbonからBonjourを使う
———————————————————————-
CarbonアプリケーションからBonjourを利用するサンプル、「CarbonBonjour」が公開されています。
CFNetServicesを使うことになります。
CarbonBonjour
http://developer.apple.com/samplecode/CarbonBonjour/index.html
———————————————————————-
帰ってきたBoingX
———————————————————————-
サンプルコードBoingXがアップデートされました。Universal Binary化と、バグフィックスが行われています。
Boingは、もともとAmigaで動いていたデモソフトでした。それをもとに、OpenGL機能のデモとして、Mac OS Xに移植されます。その後、Mac OS X 10.2では、Quartz Extremeのデモとしても使われます。Quartz Extremeでは、OpenGLとQuartzの描画が統合されました。これにより、いままでウィンドウという枠にとらえられていたBoingが、デスクトップ中を自在に飛び回れるようになったのです!(これを試すには、BoingXを起動して、tキーを押してください。)
そんなBoingX、デスクトップユーティリティやアニメーションに興味のある方は、ぜひお試しください。
BoingX
http://developer.apple.com/samplecode/BoingX/index.html
OpenGL Amiga Boing
http://www.jimbrooks.org/web/opengl/boing/
◇MOSAからのお知らせと編集後記は割愛します◇