« 2007年09月 | メイン | 2007年11月 »

2007年10月 アーカイブ

2007年10月01日

C++Builder2007 Update3 でコンテキストメニューが表示されない問題

C++Builder2007にUpdate3を適用すると、TMemoやTEditで右クリックしたときにコンテキストメニューが表示されなくなります。

この問題に対して、修正プログラムを作成した人がいました。
Inofficial RAD Studio 2007 Patchからダウンロードできます。
C++Builder2007でも使用できました。

C++Builder2007 Update3でメニューのキャプションが文字化けする問題

C++Builder2007にUpdate3を適用して作成したプログラムをWindows Vistaで実行すると、メニューのキャプションが文字化けします。

この問題を回避する方法が「Delphi2007Update3のバグ」で紹介されています。

C++Builder2007でも同じ方法で問題が回避できることを確認しました。

  1. 現在のプロジェクトがあるフォルダに、「C:\Program Files\CodeGear\RAD Studio\5.0\source\Win32\vcl\Menus.pas」をコピーします。

  2. プロジェクトにコピーした「Menus.pas」を追加します。

  3. Menus.pasの1150行目を以下のように変更します。

    変更前:
    DrawThemeTextEx(ThemeServices.Theme[teMenu], ACanvas.Handle, MENU_POPUPITEM,
      MenuStates[MenuItem.Enabled], PWideChar(WideString(Text)), Length(Text), Flags, @Rect, Options);
    
    
    変更後:
    DrawThemeTextEx(ThemeServices.Theme[teMenu], ACanvas.Handle, MENU_POPUPITEM,
     MenuStates[MenuItem.Enabled], PWideChar(WideString(Text)), Length(WideString(Text)), Flags, @Rect, Options);
    
  4. Unit1.hに次にコードを追加します。

    #include "Menus.hpp"
    

以上です。

作成したプログラムをWindows Vistaで実行しても、メニューは文字化けしませんでした。

2007年10月06日

ミスタードーナツのハニーディップ

ハニーディップ

ミスタードーナツのハニーディップ。
ハンバーガーではない。

この角度からでは、表面の網目模様はほとんど見えなかった。

特に意識したことは、丸みと艶。
難しいね。

2007年10月08日

Excelファイルの内容をPerlを使って高速取得する

Excel ファイルの内容を Ruby を使って高速取得する」の記事を見て。

Perlでは「Spreadsheet::ParseExcel」を使うことにより、Excelファイルの内容を取得できます。

「Spreadsheet::ParseExcel」はExcelを起動しないため、上の記事よりもずっと早く取得できます。

しかも、Windows以外のOSでも動作可能。

最初に、Spreadsheet::ParseExcelをインストールします。

ActivePerlの場合、

ppm install Spreadsheet-ParseExcel

その他の場合、

perl -MCPAN -e shell
install Spreadsheet::ParseExcel

実際のコード

#!/usr/bin/perl

use strict;
use Spreadsheet::ParseExcel;
my $excel = new Spreadsheet::ParseExcel;
my $book = $excel->Parse('Book1.xls');
my $sheet = $book->{Worksheet}[0];
my $cell = $sheet->{Cells}[0][1];
print $cell->Value;

2007年10月10日

WindowsXP以降では、ビジュアルスタイルを使用すると入力制限文字数が変わる

WindowsXP以降では仕様が変更され、ビジュアルスタイルを使用すると入力制限文字数が変わります。

WindowsXP で Manifest ファイルを使用したアプリケーションで Common Control バージョン 6 を使用した場合、Edit コントロールへの EM_LIMITTEXT メッセージによる入力量制限を設定する際の単位が、バイト数単位ではなく文字数単位に変更されました。この動作は仕様です。

[WinXP] Common Control 6.0 の EM_LIMITTEXT による入力制限

在庫僅少本を半額で

小学館や集英社、講談社、文芸春秋などの大手出版社が、絶版の一歩手前の「在庫僅少(きんしょう)本」を提供し、半額で通年販売する。

「売れ残った本」半額に 出版社17社、ネットで本格販売

販売するのは「ブックハウス神保町.com」。

このサイト、もうちょっと使い勝手がいいと嬉しいんだけど。

2007年10月13日

最近読んだ本

最近読んだ本をまとめて。

イヌが教えるお金持ちになるための知恵

お金持ちに飼われていたイヌが、自分を助けてくれた女の子にお金持ちのなる方法を教える物語。

  1. やりたいこと、買いたいものを箇条書きにしてみる
  2. 具体的にイメージするため、写真や絵を集める
  3. 目的別に貯金する
  4. 「~してみる」ではなく「~する」

など、29の知恵を授かります。
子供にも読みやすいと思いますが、大人が読んでも参考になります。

大きなケーキは人にゆずろう―お金持ちになるための“母の教訓”

主人公の女性のサクセスストーリーとしてもおもしろい。
母親の言葉を教訓として、ビジネスに活かすスタンスがすばらしい。

普及版 モリー先生との火曜日

読んだのは古い方の「モリー先生との火曜日」ですが、新しい方にリンクします。
大切なことをあらためて考えさせられる一冊。
モリー先生の最終講義―「死ぬこと・生きること」」、これも読みたい。

「ニート」って言うな!

全国に80万人いると言われるニートの実態を明かす。
大学受験生も、入院して働けない人も、統計上はニート。
マスメディアが伝えるニートのイメージは、全くの的はずれ。
不安をあおって儲けている人がいることを忘れないように。

上達の法則―効率のよい努力を科学する

効率よく上達するためにはどうすればいいか。
「初級者から中級者へ」と「中級者から上級者へ」のそれぞれの上達のポイントを知ることができました。
がむしゃらに努力するのではなく、効率よく上達しましょう。

Rubyist Magazine 出張版 正しいRubyコードの書き方講座

Rubyist Magazine 出張版 正しいRubyコードの書き方講座―RubyistのRubyistによる、Rubyistとそうでない人のための

本書の対象は、Rubyを始めたけれどRubyらしいコードが書けないRuby初級者。
Rubyで実際にコードを書いていない入門者には難しい。
中級者には、自分のスタイルの確認になるかもしれません。

他の言語、たとえばJavaから移行してきた人は、RubyでもJavaっぽくコードを書いてしまいがち。
でも、そうするとRubyの良さが生きてきません。
言語の思想・特徴を理解することで、効率よくコードが書けるようになります。

2007年10月20日

ハニーチュロ

ハニーチュロ

ミスタードーナッツのハニーチュロ。

難しかった。

2007年10月21日

DoteConvは名称をD2に変更しました。

DoteConvは名称を「D2」に変更しました。
D2は「でぃーつー」と発音して下さい。

DoteConvは読み方がわからない、というメールをたくさんいただきました。
大変ご迷惑をおかけしました。
安易に付けた名前が多くのユーザーに迷惑をかけることになるとは思いもしませんでした。

D2は、「DoteConv 2」を略したものです。
覚えやすいと思いますが、いかがでしょうか。

DoteConvのライセンスキーをお持ちの方は、無料でD2のライセンスキーをお送りいたします。
下記のURLからお申し込み下さい。
http://www.yamamototakashi.com/versionup/

これからもD2をよろしくお願いします。

2007年10月27日

きのこの山

明治「きのこの山」。

モデルが小さいので大変。

2007年10月31日

『CakePHPガイドブック』レビュー

CakePHPガイドブック』を一通り流して読みました。
まだ実際にコードは書いていません。

ざっと読んでみた感想ですが、この本一冊あればCakePHPで開発できるようなるに思います。
CakePHPの導入から実際の開発に必要な情報まで、十分に詳しく解説されています。
おそらく定番の一冊のなることでしょう。

Chapter9のセキュリティに関する章はいいですね。
セキュリティについて、どういった点に注意しなければならないかというのは、CakePHPに精通しており、かつ、実際に開発している人でないと、なかなかわからないことです。
開発する段階では、とても参考になると思います。

日本語環境用(文字コード)の設定手順の解説も嬉しいです。

あと、ソースコードが読みやすいように感じました。
ソースコードの重要な箇所は網掛けしてありコメントがつくため、ポイントがわかりやすいです。
重要箇所だけが掲載されるのではなく、前後のソースコードが省略されずにちゃんと掲載されているので、プログラムを理解しやすいと思いました。

CakePHP 1.2についての記載があるのもいいですね。
CakePHP 1.2の登場が楽しみです。
1.2がリリースされたら、1.2対応版もぜひ出版していただきたい。

初版第一刷なので、多少の誤字・脱字・コードの間違いがあるのは仕方がないですね。
検索してみたのですが、正誤表が見つかりませんでした。そのうち公開されることと思います。

Chapter7のModelについての章で、メソッドの返値についての記載がないのが、不便に思いました。
たとえば、executeについての説明(117ページ)は次の一行だけです。

queryと同様にSQLコマンドを実行します。実行結果の返却方法に違いがあります。

executeの存在価値は、queryとの返値の違いだけです。
ならば、返値がどのように違うのかの説明がないと、実際に使用することができません。

その他にも、Chapter7では全般に返値の説明が不足しているように思いました。
詳細は「CakePHP プログラマーズ リファレンスガイド」を見るとわかりますので、問題ないかもしれません。

179ページのsubmitされているかのチェックが、他の箇所と異なっていました。
なぜここだけ違うのか、理解できませんでした。

// submitされていない場合は初期表示
if (!isset($this->params['form']['submit'])) {

他の箇所では、$this->data を確認しています。

if(empty($this->data)) {

実際にコードを書いてみると、違いに気がつくかもしれません。

206ページの「updateUser()」はおそらく「updateStatus()」の間違い。

218ページのtoLowerメソッドは、無限ループしそう。(未確認)
引数が配列の時、SimpleFilterComponent::toLower($elem) が呼ばれて、その中でもまた、SimpleFilterComponent::toLower($elem)が呼ばれて…、となりませんか。

function toLower(&$elem)
{
    if (is_array($elem)) {
        SimpleFilterComponent::toLower($elem);
    }
    $elem = strtolower($elem);
}

226ページの「DboSimpler」はおそらく「DboSimple」の間違い。

まあ、ともかくCakePHPをこれから始めるには、間違いなくお薦めの一冊です。

追記: 正誤表が公開されていますね。

第7回 CodeGearデベロッパーキャンプの資料が公開されました

第7回 CodeGearデベロッパーキャンプの資料が公開されました。

中でも、特に興味深いのが「wxFormsで始めるwxWidgetsプログラミング」。

wxWidgetsは、おなじみのマルチプラットフォームに対応したGUIツールキット。
マルチプラットフォーム対応というと、WideStudioやTkのように独自の外観になりがちだが、 wxWidgetsはOSが提供するコントロールを使用するため、見た目に違和感がない。

で、TwinForms社が開発したC++Builder用プラグイン「wxForms」を使うと、C++BuilderでwxWidgetsを使った開発ができる。
wxFormsのホームページにあるスクリーンショットを見ると、VCLと同じように違和感なく開発できることがわかる。

公開された資料には、wxFormsのインストールから、MacOSやLinuxでのビルド方法まで紹介されている。

Kylixで見たマルチプラットフォームの開発ツールの夢が実現できそうだ。

About 2007年10月

2007年10月にブログ「山本隆の開発日誌」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2007年09月です。

次のアーカイブは2007年11月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35