新MacBook発表

ymlab2006-05-16

ついにAppleから、Intel Core Duo 対応 Mac Bookが発売された。
今回は、黒色モデルもあるようだ。
iBookの5倍の性能だ。
MacBookという名前が格好悪い・ださいというさんさんたる評価だったが、かわらないみたいだ。

ものすごく欲しいけれども、通信ポートが弱い。RS232Cがなければ、困る。パソコン工房には、RS232C->USBケーブルが売ってたけど、いまいち信用ならんんのだよ。

後、やっぱりWindowsも必要でしょう。現在Mac miniは、完全にサーバ用途になってしまっている。(それはそれで充分仕事をしてくれている。)

MAC OS XBoot Camp のpublic Beta で、Apple製マシンから、普通にWindowsを起動できるようになったのだが、いかんせんベータである。

次のMAC OS 10.5(レオポルドだったか)で、標準で実装されるらしいので、そのタイミングで購入しようかな。

今日は、M永先生と、色による、温度の上昇の話をしていてから帰宅。
その帰り道、文字列の話になっていた。
今組み込んだ関数一つにしてもうっとうしい演算をしなければならない。
mallocで確保したメモリを解放せず、メモリリークしてしまっている。C#のガベッジコレクタはどれくらいきれいにしてくれるんだろう。

喫茶店から帰ってから打ち込んだコード。
下のことを実現するために、こんなにうっとうしいことを
しないといけない。

二つの文字列を大文字、小文字の区別をなくして辞書順
に比較する。s1>s2の場合は0以上を、
s1

/** CStringのCompareNoCaseと同じ.
 * 文字列が一致した場合は、0を返す.
 * MCStringオブジェクトがchar* で指定された文字列よりも小さい場合は、0未満の値を返す.
 * MCStringオブジェクトがchar* で指定された文字列よりも大きい場合は、0以上の値を返す.
 */
int MCString::CompareNoCase(char *string)
{
	/** とりあえず、stringもthis->m_Stringもtolowerさせて考える.
	*/
	int iCounter;
	char* lpac = ( char* )malloc( strlen( this->m_String ) );
	for ( iCounter = 0; (unsigned int)iCounter < strlen( this->m_String ); iCounter++  ) {
		if ( ( this->m_String[ iCounter ] >= 'A' ) && ( this->m_String[ iCounter ] <= 'Z' ) ) {
			*( lpac + iCounter ) = this->m_String[iCounter] + ( 'a' - 'A' );
		} else {
			*( lpac + iCounter ) = this->m_String[ iCounter ];
		}
	}
	*( lpac + iCounter ) = '\0';
	char* p = ( char* )malloc( strlen( string ) );
	for ( iCounter = 0; ( unsigned int )iCounter < strlen( string ); iCounter++ ) {
		if ( string[ iCounter ] >= 'A' && string[ iCounter ] <= 'Z' ) {
			*( p + iCounter ) = string[ iCounter ] + ( 'a' - 'A' );
		} else {
			*( p + iCounter ) = string[ iCounter ];
		}
	}
	*( p + iCounter ) = '\0';


//	printf("lpac = %s *p = %s\n", lpac, p);

	return strcmp( lpac, p );
//	return 1;
}