Macintosh Developer Online (MDOnline)


2000年11月16日発行号 - Darwin 1.2.1がリリース



Darwin 1.2.1をダウンロードしようとしているのですが、断続的にダウンロードはストップし、ついには停止してしまう状態で、ダウンロードが進みません。Darwinのページには概略的なことしか書かれていないので、ダウンロードすると他に情報があるかと思ったのですが、追加で何か分かれば記事にします。それに加えて、今現在ですが、どうもネットワークの調子が悪くありません。どこかで激しく渋滞しているみたいで、tracerouteすると、こちらのプロバイダからバックボーンにかけて*がぽろぽろと出てきます。通信処理がひじょうに時間がかかりますが、ダメということでもないようです。うちからMDOnlineのサーバまでは時間はかかるけど通信ができます。
WebObjectsのデモCDのプレゼントですが、昨夜、慌ててメールをしたように、思った以上にリクエストがあります。昨日の夜中で30枚の行き先は決まってしまいました。そして、現在、20人ほどの待ちになっています。いつもプレゼントでお知らせをしたときには、それほど応募がないので、30もあればちょうどいいくらかもと思っていましたけど、読みが外れました。マイクロソフトの携帯ストラップなんて1人だけだったんですよ。モノの内容と、抽選ではないというところで、ここまで応募が変わるとは予想外でした。御迷惑をおかけして申し訳ありません。ただ、ここで複数枚ではなく1枚に限定すればよかったという気も若干はしますが、おそらくこういったCDは、獲得できそうな顧客に渡してアップルの取り組みを理解してもらうなどの手段でそれなりに有効に使えると考えますし、また、周囲の人を説得する材料にもなると思い、あえて複数枚OKという線は保持しました。何人かの方が、複数枚のリクエストをされています。いずれにしても、追加をお願いしているところですので、今しばらくお待ちください。
(新居雅行 msyk@mdonline.jp


Mac OS X Public BetaのコアOSに相当するDarwin 1.2.1がリリース

Mac OS XのコアOSであるDarwinの最新版Ver.1.2.1がリリースされている。Mac OS X Public BetaにはDarwin 1.2が採用されており、Mac OS X PBとしてリリースされたものに対応するものである。登録は必要だがフリーでダウンロードでき、ソースコードも参照することができる。以前のバージョンから対応ハードウエアが増え、マルチプロセッサマシンでも動作できるようになっている。Mac OS X Public Betaと対応機種は基本的に同じであるが、AirPort(AirMac)やSCSIカードはサポートされていないもようだ。

関連リンク:Open Source: Darwin
カテゴリ:Darwin


【小池邦人のプログラミング日記】2000/11/15<さよならBitMapまた会う日まで!>

今回も前回のフォローからです。前回、「CodeWarrior 6.0で、コマンドキーを押しながらのマウスドラッグでテキストのブロックコピーが可能になったが、この機能はソースコードのどんな編集に必要とされるのか?どなたか教えてください。」と尋ねたところ、何人かの読者の方から幾つかのアイデアが届きました。みなさん、お手紙ありがとうございました(笑)。そのうち良いなと思ったのは「Universal Interfacesの飾り文字を除外してコメント文章だけをカットする」という使い方です。確かにこの方法で文章をカットすれば、そのまま英語翻訳ソフト(うちの場合はE To J Pro)にペーストして快適に翻訳作業が行えます。まあソースコードの編集ではないのですが(笑)。みなさんも試してみてください。
 

さて、毎日目を光らせているCarbon SDKの進捗状況ですが、11/15にはADCメンバーサイトに「CarbonLib 1.2a2 SDK」が登録されました。つい最近、日本のアップルで開催されたMOSAセミナーで、アップルの技術担当者に「CarbonLib v1.1のGMどうなるのか?」と尋ねてみたのですが、正式な回答は得られませんでした(涙)。ついでに、Navigationサービスのダイアログをシートウィンドウとして表示する方法も尋ねてみましたが、こちらも回答無し。未来に期待してくれと言うことだそうですが、実に困ったもんです。MOSA湘南セミナーの深夜の大宴会では、CarbonLibの進捗状況を悲観し、某老舗Mac用ソフトメーカの大御所が大いに荒れたことを付け加えて起きましょう(笑)。

さて、今回はMac OS X環境でのBitMap(白黒2値の画像バッファ)の扱いについて解説してみたいと思います。最近、AppleからMac OS X環境でのBitMapの扱いについてのQ&A集が発表されました。基本的にはBitMapはサポートしないというのが回答です。Macintoshでは、すでに白黒2値のモニター表示はサポートされていませんので、いまさらBitMapが利用できなくなっても困らないんじゃないかと思う人もいるでしょう。ところが、QuickDrawルーチンにはSeedCFill()やCalcCMask()のように、作成したマスクをBitMap画像バッファへ保存するAPIがいくつかあります。こうしたAPIは、ペイント系のアプリケーションを開発しているデベロッパーにとっては必需品であり、代替品が無いとすれば、Mac OS Xだからといって使うのを止めるわけにはいきません。

例として、SeedCFill()の動作の仕組みを簡単に説明してみます。

SeedCFill( BitMap *srcBits, BitMap *dstBits,
      Rect *srcRect,Rect *dstRect,
      short seedH, short seedV,
      ColorSearchProcPtr matchProc, long matchData);

SeedCFill()は、ソースとして与えら得たBitMap、もしくはPixMapの矩形領域の指定座標(seedH,seedV)を開始点とし、指定値(matchData)と同カラーのピクセルに対して塗りつぶし(Seed Fill)を実行します。その結果は白黒マスクとしてデスティネーションのBitMapに保存されるわけです。今までは、この保存用のBitMapを作成するのためにOpenPort()などのAPIを利用していました。CarbonLibを用いたMac OS 9環境で調べてみると、OpenPort() などを利用しなくても、BitMapさえ自作すればSeedCFill()は問題なく利用できます。例えば、別掲のmakeBitMap関数のようなルーチンでBitMapを自作し、それを引数に渡せばちゃんと結果がでるわけです。ところがMac OS X環境ではBitMapが葬り去られてしまったことにより、この方法ではうまく行きません。

私も自作ペイントソフトのペイントツール(バケツツール)などが、Mac OS X環境ではまったく動かない(ハングアップもしない)ので不思議に思っていたのですが、原因はここにあったようです。そこでAppleが提示した解決策は、NewGWorld()で1ビットのオフスクリーンバッファを作成し、それをBitMapの代わりに利用するという方法です。ここでは、その方法を取り入れた簡単なサンプルルーチンを提示しておきます(別掲の記事のmakeClickRegion関数)。PICT画像のある場所をクリックした時に、そのポイントを含む不定形領域のマスクをRegionとして作成するというルーチンです。これは、フォトショップのマジックハンドツールの簡易バージョン(濃度をチェックしない単色版)だと思っていただければ良いでしょう。

まずは、32bitフルカラーと1bit白黒2値の2種類のオフスクリーンバッファを作ります。32bitオフスクリーンの方にPICT画像を描画し、指定座標のカラーをGetCPixel()で抽出しおきます。それを開始座標値と共にSeedCFill()に渡せば、SeedCFill()は32bitのオフスクリーン上の「指定色と同じピクセル」を塗りつぶし、その結果を白黒2値マスクとして1bitオフスクリーンに保存します。最後に1BitオフスクリーンのPixMapをBitMapToRegion()に渡し、マスク領域をRegionに変換してやれば作業は終了です。ちなみに、名前には「BitMap」と付いているBitMapToRegion()ですが、ちゃんとPixMapを受け取ることができる点に注目してください(笑)。できれば、この機会にまぎらわしい名前を変更してほしいものです。とにもかくにも、さようならBitMap。長い間ご苦労さまでした!!
[小池邦人/オッティモ]

関連リンク:オッティモ
カテゴリ:グラフィックス, 小池邦人のプログラミング日記


【小池邦人のプログラミング日記】2000/11/15<さよならBitMapまた会う日まで!>(プログラム)


short makeBitMap( BitMap *map,Rect *rt,Handle *dhd )
{
short row;
long len,wh,wv;
Handle hd;

wh=rt->right-rt->left;
wv=rt->bottom-rt->top;
if( wh&7 )
row=(wh>>3)+1;
else
row=wh>>3;
row=longWord( row );
len=wv*row;
if( hd=NewHandleClear( len ) )
{
HLock( hd );
map->baseAddr=*hd;
map->rowBytes=row;
map->bounds=*rt;
*dhd=hd;
return( 0 );
}
return( 1 );
}

short longWord( short rowbyte )
{
if( rowbyte&3 )
rowbyte=((rowbyte>>2)+1)<<2;
return( rowbyte );
}

============================================================

short makeClickRegion( PicHandle pict,Point pt,RgnHandle *rgn )
{
PixMapHandle spix,dpix;
CGrafPtr off1,off2;
short ret=1;
long color;
GWorldPtr gptr;
RgnHandle rgn1;
Rect drt;
GDHandle ghd;
RGBColor rgb;

GetGWorld( &gptr,&ghd );
drt=(*pict)->picFrame;
OffsetRect( &drt,-drt.left,-drt.top );
if( ! NewGWorld( &off1,32,&drt,0L,0L,0 ) )
{
spix=GetGWorldPixMap( off1 );
LockPixels( spix );
if( ! NewGWorld( &off2,1,&drt,0L,0L,0 ) )
{
dpix=GetGWorldPixMap( off2 );
LockPixels( dpix );

SetGWorld( off1,0L );
DrawPicture( pict,&drt );
GetCPixel( pt.h,pt.v,&rgb );
color=Color2Index( &rgb );
SeedCFill( (BitMap *)*spix,(BitMap *)*dpix,&drt,&drt,pt.h,pt.v,NULL,color );
SetGWorld( gptr,ghd );
if( rgn1=NewRgn() )
{
if( ! ( ret=BitMapToRegion( rgn1,(BitMap *)*dpix ) ) )
*rgn=rgn1;
else
DisposeRgn( rgn1 );
}
DisposeGWorld( off2 );
}
DisposeGWorld( off1 );
}
SetGWorld( gptr,ghd );
return( ret );
}

カテゴリ:


WebObjectsでOralce接続時により多くの種類のエラーを判別させる方法

Tech Info Libraryに、WebObjects 4.5のOracle接続時により多くのエラーコードを出力するようにする方法が掲載されている。デフォルトでは、Oracleのアダプタは6種類のエラーしか戻さないが、エラーはそれ以上ある。エラー情報をより正確に得るためにエラーコードを増やすには、この文書に記載されたObjective-Cのコードを使ったフレームワークを作り、それを自分で作成しているアプリケーションのプロジェクトに追加することで実現できる。

関連リンク:WebObjects 4.5 Oracle Adaptor: Reconnecting After an Oracle Connection
カテゴリ:データベース, WebObjects


Windows 2000に対応したPC MACLANが発売、AppleShare IPに対応

ディアイティは、WindowsでAppleTalkによるファイル共有やプリント共有を可能にする「PC MACLAN fow Windows 2000」を2000年12月20日にリリースする。ditshop.comでは、2000年11月16日より予約を開始する。新しいバージョンでは、AppleShare IPサーバへクライアントとして接続すると共に、AppleShare IPサーバになることも可能となった(なおWindows 95/98対応版はすでにAppleShare IP対応している)。価格はシングルユーザが36,000円、10ユーザが198,000円、アカデミックが19,800円となっている。Windows 2000 ServerおよびProfessional、Service Pack 3以降のWindows NT 4.0 Workstation/Serverが動作OSとなっている。PC MACLANはWindowsにインストールして、WindowsマシンをMacintoshのネットワークに参加させることができる。AppleShareのサーバマシンがある環境でWindowsマシンをファイルおよびPostScriptプリントのクライアントにすることができるが、Windowsマシンをファイルサーバやプリントサーバとして稼動させて、小規模なLANでの利用なども可能だ。新しいバージョンではAppleShare IPプロトコルに対応しているので、Mac OS Xとのファイル共有もスムーズだと言えるだろう。

関連リンク:PC MACLAN シリーズ 製品情報
カテゴリ:サーバー関連, Windows


不到達のIPアドレスが設定されたMac OS X ServerではNetInfoはリードオンリー

Mac OS X ServerはIP接続が不可能なIPアドレスに設定された場合、NetInfoはリードオンリになってしまうことが、Tech Info Libraryに掲載された。セットアップアシスタントが割り当てたマシン名やIPアドレスを不適切に変更するとこうした状態になり、ユーザの追加やパスワードの変更等ができなくなる。この文書に、シングルユーザモードで起動してliutilを使って設定を直す方法や、liutilを使わない方法が掲載されている。

関連リンク:Mac OS X Server: NetInfo is Read-Only
カテゴリ:Mac OS X Server


リストサーバのAutoShareがバージョンアップしVer.4.2.1をリリース

Mikael Hansen氏が開発するメーリングリストサーバのAutoShareがVer.4.2.1にアップデートしている。AutoShareはMac OS上で稼動し、EIMSなどのメールサーバと連動して、リストサーバとして稼動し、またメールのオートレスポンダとしての機能もある。フリーで利用できる。修正点は細かなバグフィックスや、AppleScript対応の拡張などとなっている。

関連リンク:Powered by AutoShare
カテゴリ:サーバー関連