Archive for the ‘ソフトウェア関連’ Category

ソフトウェアの互換性について。

月曜日, 7月 5th, 2010

ども。Mimura です。

えと、もうそろそろ間近に迫ってきた、来る7月13日。
何があるでしょうか。

Windows ユーザなら気づいてもらいたいところではありますが、
一部のWindows ユーザにとって X Day であることには間違いありません。

1.Windows 2000
2.Windows XP の Service Pack 3 以前のバージョン

この上記2点の製品のサポートが切れます。

セキュリティの観点から見れば、全く持って自然な流れではありますが、
本サイトの利用者傾向を見る限り、まだまだ Windows 2000 や、
すでにサポートが切れている Windows 98, Me からのアクセスが見受けられます。

Windows 98 や Me については、すでにサポートが切れていますので、
利用中の方につきましては、
インターネットから切断するか、コンピュータを買い換えてください。

よく聞かれることなんですが、

「私はインターネットだけだから、わざわざ新しいものを使わなくてもいいの」

という、言葉は大間違いですのでご注意ください。

ウィルスに感染する可能性が高いだけではなく、
コンピュータウィルスによって、攻撃の加害者になり得る。
ということを頭に入れておいてください。

もし、買い換えるお金がないけど、インターネットだけ見られるようにしてほしい。
というのであれば、無料の Linux という OS を利用する方法があります。

Vine Linux Home Page
こちらの Vine Linux でしたら 日本語環境もばっちりで軽量ですので、
買い換える予算がない方はこちらに乗り換えた方がずっと安全です。

 

また、Windows Update / Microsoft Update 等について、
重たいから、邪魔だから。という理由でインストールをキャンセルさせている設定の方についても、全く同様のことが言えます。

どうしてもインストールしたくない。というのなら、全く同様です。インターネットから今すぐコンピュータを切り離してください。危険です。

 

それと、
よく「過去のOSをずっとサポートしていけばいいじゃない」という発言を耳にしますが、無理な話というものです。

これを書くと、ブーイングが来そうで怖いんですが、
Windows Vista は決して重くない。と。

そりゃ、一気にハードウェア要求が高まったものですから、古いPCに入れたり、
新OS発表後1年以内の、よくある「ぎりぎり対応PC」で触れば、そりゃ重いです。めちゃ。
ですが、ハードウェア要求を満たした物で実際に使ってみると、よく出来たOSなんです。
プログラム書いててもとってもいい子だったりするんです。 いいよいいよ。
Windows 7 はRC, Beta と触りましたが、製品版はまだ触ってません。
Vista カーネルベースなので、きっととってもいい子なんだと思います。

ああ。Linux と比べられたら、あれですけどね!!

 

さて。本題。

OSのサポートが切れるということは危険だということを書きましたが、
同様に、様々なソフトウェアのサポートが切れる、ということでもあります。

現在、本ウェブサイトでは Windows 98 や Me に対しても互換性を確保したものを公開しておりますが、

次回リリース版より、
原則として Windows 98 および Me と言った、「9x 系」として挙げられるOSとの互換性を一切とらない方針で参りたいと思います。

過去のバージョンのOSをどうしても利用しなくちゃいけない場合につきましては、
対応している過去のリリースをお使いいただければと思います。
なお、その場合のサポートは一切しない方向で参ります。

また、今後 Windows 2000 のサポートも打ち切る可能性がございます。
予めご了承ください。

 

余談ですが、「重いから新しいOSでしか動かないんでしょ」 ということじゃないです。
新しいOSの新しい機能を使って、安全にプログラムを動作させられるようにするために、
古いOSでは動かなくなってしまう。ということになります。

 

Link :

情報処理推進機構:プレス発表:記事:サポートが終了するWindowsを利用しているシステム管理者への注意喚起 (IPA)

Windows デスクトップ製品のライフサイクル (Microsoft)

Windows 2000-XP SP2を使い続けるのは危険、間もなくサポート期間終了 -INTERNET Watch

開発進んで停滞して。

日曜日, 6月 20th, 2010

ども。ちょうひっさっしっぶっり。な記事です。

こう、時間がないとブログってどーなのよ。と言いたくなりますが、
逆になくなると無くなるで、固まった情報を伝えたいときとか、固まった情報を表したいときに不便で不便で。
その辺 Twitter の欠点なのかなー。なんて。 どうでもいいですね。はい。

さて。

前々からお伝えしているように、ペイントソフト作ってたりします。

save_01

・・。とりあえず、知り合いにちろっと描いてもらいました。
数分でこうなるんだからすごいもんです。

(ちなみに・・。大学の食堂で数分やってもらった感じです。うん。

復元機能。
つまり、よくある「元に戻す」とか「やり直し」っていうあれですけど、あれの実装ってある意味強烈に難しいんじゃないかなー。なんて。

1回描くごとに、そのまんまバックアップ取るようにしてみたら、
死ねるのなんの。2GB とか余裕で飛び越えていきそうです。

1回描くごとに、「ここが消えて、そこにこれが描かれた」 みたいな、
いわゆるテキストエディタとかでの管理方法っぽいようなこと。
(実際管理ロジックは見たこと無いです><) をやれば、
たとえば、
(前の情報)(書き換わった情報) | (前の情報)(書き換わった情報) | のように管理しておいて、

http://www.01-tec.com/document/basic_compression.html
ここのウェブサイトで紹介されているような暗号化ロジックを組み込んで圧縮して管理すれば少なくなるんだろーか。いささか不安ですが。

まー。1回の描画処理で使われる色が変化することは無い
(変化しようとすると、描画を中断せねば為らず、結果的にそこで保存されてしまう。)ので、
そのときの色情報と、色がある場所を 1 / 無い場所を 0 として、置き換えて、
その上からランレングスでも掛けてあげれば、とっても平和に、疲れているときでもコーディング出来そうなノリですが、
どう考えても、もっと知恵のある方からもっと良い方法を伺いたいですね!ww

ああ、もういっそ、動画と見なして H.264 とかで圧sy(ry

あと、各色を16bit で管理してくれ。なんてゆー話も出てるんですが、
透過も考えて、8byte 使う・・ん・・?ww せめて 4byte で収めさせてくれると、やりやすいんですけどね・・え・・w

 

とりあえず、現状だと恥ずかしすぎてバイナリコードとか見せられません! はい!

最後に。

save_02 

私が描いてみたやつも乗っけておきます。
やっぱり・・あれだ。経験には勝てませんなぁ。ははは。

夏休みの時にでも開発がてら、ちょっと練習しようかなぁ。

WordPress で強制的に PORT モードをつかってアップデートする方法。

火曜日, 3月 30th, 2010

またしてもメモ書きです。

 

mimumimu.net でも、PASV 通信を行えるように整備をしまして、
その際に接続先IPアドレスをグローバルIPを返すようにしてあります。

 

その関係で、LAN 内からWordPress の自動アップデートをしようとすると、
PASV 接続されて 接続先が解決できなくなってアップデートできなくなります。

 

当初は vsftpd (うちのサーバはこれを使ってます。) の設定を変更して、
LAN 内と WAN で設定を変更したり、
LAN 内のみプロキシを設けて弄れないのかな。と考えていましたが、
どうもその設定がなさそうで。

 

そこで WordPress 側なのですが、
/wp-admin/includes/class-wp-filesystem-ftpext.php  の
84行目(付近)にある、

 

//Set the Connection to use Passive FTP
@ftp_pasv( $this->link, true );

を、

//Set the Connection to use Passive FTP
@ftp_pasv( $this->link, false );

に変更すると、いい感じで PORT 接続を使ってくれるようになります。

 

荒療治のような気がするので、
もっと画期的な解決法をご存じの方は教えてください。

Vista 以降で CFileDialog において SetTemplate が使えない場合の代替方法

金曜日, 3月 26th, 2010

Mimura です。
先ほど、STEP_M 1.053 をリリースしました。

 

今回のネックは CFileDialog において Vista 以降の新しいファイルダイアログでは、
SetTemplate が使用できないことでした。

 

そこで、私もこの情報を見つけるまでにかなり時間がかかりましたので、
メモとして、また同じ悩みを抱えている人に有用な物となればいいかなと思います。

 

(あらかじめ断っておきますと、あんまりMFC を使いたくない人です。私。)

 

 

SetTemplate を使用する場合、大体が以下のようなコードとなっていると思います。

CMyFileDialog::CMyFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
        DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
        CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
    SetTemplate(0, IDD_CUSTOM_FILE_OPEN);
}

(STEP_M ソースコード MyFileDialog.cpp より)

XP,2000 ではこのコードで通りますが、

Vista, 7 では「サポートされていない機能を実行しようとしました。」
というエラーダイアログが表示されてしまいます。

 

 

そこで考えたくなるのが、Vista 以降のOSで SetTemplate を使う方法ですが、
現時点ではあきらめた方がいいと思います。

 

Visual C++ Team Blog  Vista-style File Dialogs with MFC
Microsoft 社の Visual C++ Team のブログでも、

the new Vista dialogs no longer supports hwnd template customization, your CFileDialog object will throw CNotSupportedException if SetTemplate is called on it. 

適当訳:[英語苦手なので、あまりにも訳が違っていたら指摘お願いします]
Vista の新しいダイアログは、テンプレートによるカスタマイズには対応しません。SetTemplate を CFileDialog で呼び出したら、CNotSupportedException をスローするよー。

というようなことが書かれています。

 

 

それではどうするかですが、
Vista 以降のダイアログにはそれの為の弄る方法が用意されています。

 

CMyFileDialog::CMyFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
        DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
        CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{

    IFileDialogCustomize* custom;
    custom = this->GetIFileDialogCustomize();
    if(custom != NULL){
            // チェックボックスを追加する場合は以下のように。
            custom->AddCheckButton(IDC_CH_FILE_ADDPEND,L"ボタンのついか。",false);
        }
        custom->Release();
    }
}

 

抜粋して書きますと上記のようになります。

this->GetIFileDialogCustomize();

で IFileDialogCustomize のインスタンスを取得し、
custom->Add****

によって、ボタンやエディットボックス、ラベルやらを追加していきます。

なお、IFileDialogCustomize 系は、WINVER が 0×0600 以上でないと利用できません。
StdAfx.h 等で設定している方はご注意下さい。

 

設置した内容を取得する場合、上記の例のサンプルで行きますと、

 

IFileDialogCustomize* custom;
custom = this->GetIFileDialogCustomize();
custom->GetCheckButtonState(IDC_CH_FILE_ADDPEND,&checkstate);
custom->Release();

 

上記にありますように、
custom->Get****

によって、値を取得します。

 

どのような命令があるか、また、オブジェクトが使えるかということにつきましては、

IFileDialogCustomize Interface (Windows)
上記リンクを参照して下さい。

 

最後に、XP,2000 上でも、Vista 以降のWindows でも、両方で動くようにするソースですが、

CMyFileDialog::CMyFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
        DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
        CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
    IFileDialogCustomize* custom;
    custom = NULL;
    TRY {
        // Legacy OS [ - Windows XP]
        SetTemplate(0,IDC_CH_FILE_ADDPEND);
    } CATCH (CNotSupportedException,e){
        // New OS [ Windows Vista - ]
        custom = this->GetIFileDialogCustomize();
        if(custom != NULL){
            custom->AddCheckButton(IDC_CH_FILE_ADDPEND,L"ちぇっく。",false);
        }
        custom->Release();
    }
    END_CATCH
}

(STEP_M ソースコード MyFileDialog.cpp より)

というような、上記のコードはいかがでしょうか。
MFC 上では try – catch 構文は使えないらしく、TRY – CATCH – END_CATCH を使うようです。

そこで、まずは SetTemplate を動かし、
非対応エラー(CNotSupportedException) が発生してしまったら、
Vista 以降の IFileDialogCustomize を用いたカスタマイズを行う。という形です。

 

 

開発のご参考になりましたら幸いです。

お絵かきソフト作成中だったりします。

水曜日, 2月 10th, 2010

無題

 

ども。Mimura です。

 

答辞の文章つくったり、ICTスクールの成果物作ってみたり、
二秒ぐらい逆出校メンバーに混じって掃除手伝ってみたり、

何かと忙しい日々ですが、息抜きということで、新しいソフト作ってます。

 

本当はペンの選択の部分を画像使ってやってみたり、ツールバーセットしてみたり、
元に戻すとかの履歴機能を使えるようにしたり、それ以前にレイヤーを搭載してみたりいろいろとやりたいのですが、まだ出来ていないのが実情です。はい。すいません。

 

今のところ、内部構造としてはレイヤーやキャンバスの概念が搭載されていて、
複数の画像を同時編集したり、大量のレイヤーを使用したりも出来ます。

出来る用にはなっているのですが、インターフェイスの製作が圧倒的に間に合ってません。どうしよう。

 

 

筆圧の入力に対応して、ペンタブレット接続環境では筆圧が反映されます。

そして、このソフト、絵の周りの色選択ツールやペン選択ツールなどのそれぞれのウィンドウが、
それぞれ独立して動くような仕掛けになっていて、
キャンバスやレイヤーが格納されているメイン部分(カーネル)には内部定義してあるメッセージを飛ばしてやりとりする構造となっています。
また、頻繁にアクセスするオブジェクトに関してはエクスポートされている関数を呼び出すことでアクセスできるようになっています。

 

そしてそして、ペンについても同様の構造になっていて、それぞれが独立した物体になってます。

 

なんでそんな構造にしたのかというと、将来的にプラグイン方式を付けたいと思ったため。
そして、絵がへたっぴで、授業の「美術」と聞いただけで身の毛がよだつほどの私ですから、
なるべくそういう部分を、慣れている人に作ってもらえたらいいなぁ。なんて思っていたり思わなかったり。

・・。でもそういう人って大抵、自分でソフト書いちゃいますよね。むぅ。

 

 

ある程度プログラムが固まったら、SDK付きで公開してみようかなぁ。なんてことを考えています。
心優しい方がいましたら、プラグイン作って、すばらしいペンやツールを作ってもらえると有難いです。
プラグインの製作はあんちゅことないですし、デフォルトのツールもあんちゅことないです。

 

 

まぁー。そんな感じで。

とりあえず、現時点では描画時に CPU を 100% 50%取られるので、 (手持ちの Eee PC 901-X にて)
(製作用マシン [C2Q Q6600] では 22%ほど持って行く。)

最適化しないとなぁ。と考えています。 DIB で自分で数式演算書いた方が早いのかなぁ。
それとも DDB で BitBlt とかガリガリやった方がいいのかなぁ。 むぅ。

助言お待ちしています。

 

 

PIC9715.tmp

 

02/10編集。

あ。何寝ぼけてたんだろう。 Eee-PC 901-X は デュアルコアですから、100% 取ることはないです。
(シングルタスクのプログラムのため)

それでも50% 近くは取っていきます。 シングルコアの100%みたいなところですね。

 

隣で眠ってるシングルコアのマシンで動かすと、他のプログラムの処理分が多少ありますが、
合計値としては100%になります。 何れにせよ、構造を見直さないとまずいですよね。