PostgreSQL 8.2系で、大多数のラージオブジェクトを廃棄しました。容器も小さくするにはVACUUM FULLを掛ける必要が有りました。
主にサムネイルの保存に使っています。20万個有ったものを削除し、1000個程が残っただけでした。
しかし、テーブルの容器が5.5GB程まで膨れ上がっていて、通常のVACUUMでは小さくなりません。これも小さくしたいと思いました。
インデックスが入っているのでloidを指定する検索は速いようです。しかし、SELECT COUNTによる数え上げには時間が掛かります。400秒程。通常のVACUUM掛けても検索時間はまったく変わりません。
次のようにSQL文を発行した所、容器が小さくなりました!
REINDEX TABLE pg_largeobject;
VACUUM FULL pg_largeobject;
クエリーは、2272953 ミリ秒で結果なしでうまく帰りました。 ※約38分
掃除前:
2011/12/08 09:57 1,073,741,824 2613
2011/12/07 17:45 1,073,741,824 2613.1
2011/12/08 10:02 1,073,741,824 2613.2
2011/12/08 10:02 1,073,741,824 2613.3
2011/12/08 09:57 1,073,741,824 2613.4
2011/12/08 09:49 225,402,880 2613.5
6 個のファイル 5,594,112,000 バイト
掃除後:
2011/12/08 10:17 638,976 2613
2011/12/08 10:17 0 2613.1
2011/12/08 10:17 0 2613.2
2011/12/08 10:17 0 2613.3
2011/12/08 10:17 0 2613.4
2011/12/08 10:17 0 2613.5
6 個のファイル 638,976 バイト
容器が小さくなり、大幅に使用量が削減されました。
2011年12月8日木曜日
2011年10月24日月曜日
ブログの投稿記事をバックアップするツール
ブログの投稿記事をHTMLで保存し、関連付け・リンクされている画像も一緒に保存してくれるツールを開発いたしました。
但し、最適化のため、対応しているブログのみバックアップできます:
入手は、こちらから:
http://code.google.com/p/blogbkup/downloads/list
使い方(バックアップの設定方法):
但し、最適化のため、対応しているブログのみバックアップできます:
- keikai.topblog.jp
- blog.livedoor.jp(一部)
- blog.zaq.ne.jp(一部)
入手は、こちらから:
http://code.google.com/p/blogbkup/downloads/list
使い方(バックアップの設定方法):
- プログラム(例:BlogBkup_0_2_portable.exe)を入手し、
- セットアップします。
- [スタート]→[ブログバックアップ]→[ブログバックアップを開く]を選択します。
- フォルダで右クリックし、
- [新規作成]→[ブログバックアップ 設定]を選択します。
- 新しい項目、「新規 ブログバックアップ 設定」が出てきますので、ファイル名を自由に設定します。付けた名前を覚えておいてください。
例:「社長ブログ」など。 - ダブルクリックします。
- 「BlogBkup設定」画面が出て参ります。「ブログURL」に、執筆されているブログのトップページURLを貼り付けます。
- 「対応しているかどうか、クリックして確認」をクリックします。
- 終わるまで待ち、
- 1以上の「記事数」がヒットするひな形があれば、バックアップできる可能性は高いです。
- フロッピーディスクのアイコン(保存)をクリックし、保存します。
- 再生ボタン(バックアップ開始)をクリックし、バックアップを開始します。
- 以前に付けた名前と同じ名称のフォルダが作られます。フォルダを開きます。
- 多数のHTMLファイルと、imgフォルダが有ります。
- HTMLファイルに記事が、imgフォルダに記事からリンクしている画像が入っています。
- 作成したアイコンをダブルクリックします。
2011年9月7日水曜日
Access MDBファイルのリンクテーブル(ODBC)接続先を変更するソフト
EditMdbLink
Microsoft Access データベース(Mdbファイル)の、ODBCを経由したリンクテーブル接続先を容易に更新できるソフトです。
次のような場合に有効です:
SQL Serverからリンクテーブルを貼り付けている。開発するとき、お客様に納品するとき、別々のサーバに接続したい。
入手は、こちらから。
Microsoft Access データベース(Mdbファイル)の、ODBCを経由したリンクテーブル接続先を容易に更新できるソフトです。
次のような場合に有効です:
SQL Serverからリンクテーブルを貼り付けている。開発するとき、お客様に納品するとき、別々のサーバに接続したい。
入手は、こちらから。
2011年9月6日火曜日
loを作成し、書き込む方法
PostgreSQLで、ラージオブジェクトを作成し、書き込む方法。
SELECT lo_creat(0);
結果: 17242
SELECT lo_open(17242, 393216);
結果: 0
SELECT lowrite(0, E'\x31\x32\x33'::bytea);
結果: 3
SELECT lo_close(0);
結果: 0
注意点:同じトランザクション内で実行いたします。そうでなければ、lo_openで開いたハンドルがlowriteに渡る頃には閉じていて、使えないようになります。こちらに注意書きが有りました。
SELECT lo_creat(0);
結果: 17242
SELECT lo_open(17242, 393216);
結果: 0
SELECT lowrite(0, E'\x31\x32\x33'::bytea);
結果: 3
SELECT lo_close(0);
結果: 0
注意点:同じトランザクション内で実行いたします。そうでなければ、lo_openで開いたハンドルがlowriteに渡る頃には閉じていて、使えないようになります。こちらに注意書きが有りました。
2011年9月2日金曜日
WinDbgで、エラー報告データを解析(.NETfx 2.0向け)
備忘録です:
WinDbgを起動する。
[File]→[Open Crash Dump...]
次の場所を開く(Windows Server 2003):
%USERPROFILE%\Local Settings\Application Data\PCHealth\ErrorRep\QSignoff
1556130.cab等、.cabファイルの方を開く。
~~~
打ち込む(.NETfx 2.0対応のため):
.load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll
結果、次の様なメッセージ:
0:000> .load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll
------------------------------------------------------------
sos.dll needs a full memory dump for complete functionality.
You can create one with .dump /ma <filename>
------------------------------------------------------------
~~~
SOS デバッガ拡張 (SOS.dll) コマンド一覧は、こちら。
~~~
打ち込む(.NETfxアプリのダンプかどうか確認する為):
!Threads
結果:
0:000> !Threads
ThreadCount: 3
UnstartedThread: 0
BackgroundThread: 2
PendingThread: 0
DeadThread: 0
Hosted Runtime: no
PreEmptive GC Alloc Lock
ID OSID ThreadOBJ State GC Context Domain Count APT Exception
0 1 1a18 001650e8 a020 Enabled 0116c2ac:0116dfe8 001617e8 1 MTA Sync2ss.RequestFailureException (0116b16c)
2 2 1a3c 00171858 b220 Enabled 00000000:00000000 001617e8 0 MTA (Finalizer)
4 3 18f0 001afb08 200b220 Enabled 01140178:01141fe8 001617e8 1 MTA
~~~
打ち込む(落ちる原因となった例外の情報を得るため):
!pe
結果:
0:000> !pe
Exception object: 0116b16c
Exception type: Sync2ss.RequestFailureException
Message: SS.Auth失敗
InnerException: System.Net.WebException, use !PrintException 01169cb0 to see more
StackTrace (generated):
SP IP Function
0012F150 00C7125A Sync2ss!Sync2ss.Sync+AutoAuth.Auth()+0x4b2
0012F290 00C70A4C Sync2ss!Sync2ss.Sync+<GetRootEnts>d__e.MoveNext()+0x94
0012F30C 6C2FB7A3 System_Core_ni!System.Linq.Enumerable.First[[System.__Canon, mscorlib]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Func`2<System.__Canon,Boolean>)+0x6b
0012F340 00C706BF Sync2ss!Sync2ss.Sync.Find(System.String)+0x177
0012F3B8 00C7033C Sync2ss!Sync2ss.Sync.Run()+0x64
0012F444 00C7018A Sync2ss!Sync2ss.Program.Main(System.String[])+0x11a
StackTraceString: <none>
HResult: 80131500
* 上に出ていますException typeやMessageとStackTraceが確認できたら原因追求がし易くなるはずです。
~~~
打ち込む(オブジェクトの型・フィールド等を確認する):
!do 0116b16c
結果:
0:000> !do 0116b16c
Name: Sync2ss.RequestFailureException
MethodTable: 007551b8
EEClass: 00c80bf4
Size: 72(0x48) bytes
(C:\Program Files\Sync2ss\Sync2ss.exe)
Fields:
MT Field Offset Type VT Attr Value Name
79330b24 40000b5 4 System.String 0 instance 00000000 _className
7932ff98 40000b6 8 ...ection.MethodBase 0 instance 00000000 _exceptionMethod
79330b24 40000b7 c System.String 0 instance 00000000 _exceptionMethodString
79330b24 40000b8 10 System.String 0 instance 0116b148 _message
7932a480 40000b9 14 ...tions.IDictionary 0 instance 00000000 _data
79330cb8 40000ba 18 System.Exception 0 instance 01169cb0 _innerException
79330b24 40000bb 1c System.String 0 instance 00000000 _helpURL
79330740 40000bc 20 System.Object 0 instance 0116b280 _stackTrace
79330b24 40000bd 24 System.String 0 instance 00000000 _stackTraceString
79330b24 40000be 28 System.String 0 instance 00000000 _remoteStackTraceString
79332d70 40000bf 34 System.Int32 1 instance 0 _remoteStackIndex
79330740 40000c0 2c System.Object 0 instance 00000000 _dynamicMethods
79332d70 40000c1 38 System.Int32 1 instance -2146233088 _HResult
79330b24 40000c2 30 System.String 0 instance 00000000 _source
793333ec 40000c3 3c System.IntPtr 1 instance 0 _xptrs
79332d70 40000c4 40 System.Int32 1 instance -532459699 _xcode
今回得られた有用な情報は、ここまでです。
WinDbgを起動する。
[File]→[Open Crash Dump...]
次の場所を開く(Windows Server 2003):
%USERPROFILE%\Local Settings\Application Data\PCHealth\ErrorRep\QSignoff
1556130.cab等、.cabファイルの方を開く。
~~~
打ち込む(.NETfx 2.0対応のため):
.load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll
結果、次の様なメッセージ:
0:000> .load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll
------------------------------------------------------------
sos.dll needs a full memory dump for complete functionality.
You can create one with .dump /ma <filename>
------------------------------------------------------------
~~~
SOS デバッガ拡張 (SOS.dll) コマンド一覧は、こちら。
~~~
打ち込む(.NETfxアプリのダンプかどうか確認する為):
!Threads
結果:
0:000> !Threads
ThreadCount: 3
UnstartedThread: 0
BackgroundThread: 2
PendingThread: 0
DeadThread: 0
Hosted Runtime: no
PreEmptive GC Alloc Lock
ID OSID ThreadOBJ State GC Context Domain Count APT Exception
0 1 1a18 001650e8 a020 Enabled 0116c2ac:0116dfe8 001617e8 1 MTA Sync2ss.RequestFailureException (0116b16c)
2 2 1a3c 00171858 b220 Enabled 00000000:00000000 001617e8 0 MTA (Finalizer)
4 3 18f0 001afb08 200b220 Enabled 01140178:01141fe8 001617e8 1 MTA
~~~
打ち込む(落ちる原因となった例外の情報を得るため):
!pe
結果:
0:000> !pe
Exception object: 0116b16c
Exception type: Sync2ss.RequestFailureException
Message: SS.Auth失敗
InnerException: System.Net.WebException, use !PrintException 01169cb0 to see more
StackTrace (generated):
SP IP Function
0012F150 00C7125A Sync2ss!Sync2ss.Sync+AutoAuth.Auth()+0x4b2
0012F290 00C70A4C Sync2ss!Sync2ss.Sync+<GetRootEnts>d__e.MoveNext()+0x94
0012F30C 6C2FB7A3 System_Core_ni!System.Linq.Enumerable.First[[System.__Canon, mscorlib]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Func`2<System.__Canon,Boolean>)+0x6b
0012F340 00C706BF Sync2ss!Sync2ss.Sync.Find(System.String)+0x177
0012F3B8 00C7033C Sync2ss!Sync2ss.Sync.Run()+0x64
0012F444 00C7018A Sync2ss!Sync2ss.Program.Main(System.String[])+0x11a
StackTraceString: <none>
HResult: 80131500
* 上に出ていますException typeやMessageとStackTraceが確認できたら原因追求がし易くなるはずです。
~~~
打ち込む(オブジェクトの型・フィールド等を確認する):
!do 0116b16c
結果:
0:000> !do 0116b16c
Name: Sync2ss.RequestFailureException
MethodTable: 007551b8
EEClass: 00c80bf4
Size: 72(0x48) bytes
(C:\Program Files\Sync2ss\Sync2ss.exe)
Fields:
MT Field Offset Type VT Attr Value Name
79330b24 40000b5 4 System.String 0 instance 00000000 _className
7932ff98 40000b6 8 ...ection.MethodBase 0 instance 00000000 _exceptionMethod
79330b24 40000b7 c System.String 0 instance 00000000 _exceptionMethodString
79330b24 40000b8 10 System.String 0 instance 0116b148 _message
7932a480 40000b9 14 ...tions.IDictionary 0 instance 00000000 _data
79330cb8 40000ba 18 System.Exception 0 instance 01169cb0 _innerException
79330b24 40000bb 1c System.String 0 instance 00000000 _helpURL
79330740 40000bc 20 System.Object 0 instance 0116b280 _stackTrace
79330b24 40000bd 24 System.String 0 instance 00000000 _stackTraceString
79330b24 40000be 28 System.String 0 instance 00000000 _remoteStackTraceString
79332d70 40000bf 34 System.Int32 1 instance 0 _remoteStackIndex
79330740 40000c0 2c System.Object 0 instance 00000000 _dynamicMethods
79332d70 40000c1 38 System.Int32 1 instance -2146233088 _HResult
79330b24 40000c2 30 System.String 0 instance 00000000 _source
793333ec 40000c3 3c System.IntPtr 1 instance 0 _xptrs
79332d70 40000c4 40 System.Int32 1 instance -532459699 _xcode
今回得られた有用な情報は、ここまでです。
2011年8月31日水曜日
PDFファイルを表示できるActiveX コントロール
PDF4Ax
Internet Explorer等のホストでPDFファイルを表示できるActiveX Controlです。
https://github.com/HiraokaHyperTools/PDF4Ax/releases
このような物に頼らなくても、Adobe Reader又はAcrobatが必要な機能を提供するものと確信しています。
しかしながら、ニッチな要望が有り、多少の需要を見込んでいます。
Internet Explorer等のホストでPDFファイルを表示できるActiveX Controlです。
https://github.com/HiraokaHyperTools/PDF4Ax/releases
このような物に頼らなくても、Adobe Reader又はAcrobatが必要な機能を提供するものと確信しています。
しかしながら、ニッチな要望が有り、多少の需要を見込んでいます。
2011年8月29日月曜日
c1 : fatal error C1083: ソース ファイルを開けません。'3.0': No such file or directory
この頃、C++でビルドしようとすると、次の様なメッセージが出て参ります。
c1 : fatal error C1083: ソース ファイルを開けません。'3.0': No such file or directory
Microsoft Visual Studio 2005 SP1です。直し方を模索したいと思います。2011年8月10日水曜日
2011年8月4日木曜日
window.open インターフェイスがサポートされていません {B8DA6310-E19B-11D0-933C-00A0C90DCAA9}
うまく作用しなかったようなので、再び調査中です。
参考情報:
open in a new window
Object Explorer/Server Explorer Error
2011年8月3日水曜日
Microsoft.VC80.CRT(8.0.50727.6195)は、Windows Updateから入手いたしましょう
[MS11-025] Visual C++ 2005 SP1 再頒布可能パッケージ セキュリティ更新プログラム (2011 年 6 月 14 日) について
http://support.microsoft.com/kb/2538242/ja
8.0.50727.6195
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=ae2e1a40-7b45-4fe9-a20f-2ed2923aca62&displaylang=ja-nec
既に在るポスグレ8.2.x用(x86版)の関数を、ポスグレ9.0.4(x64版)向けに移植していました。
久しくDynamic linkにすると、ターゲットのマシンでDLLが読み込みできません。
マニフェストによるDLLのSide-by-side構成が有効になっているため、許可されているDLL(通常は同じバージョン又はより新しいバージョン)にのみ、実行時にリンクできるようになっています。
それは判っていましたが、8.0.50727.6195の入手方法がわかりませんでした。
私製のCheckMSVCrtで現状を確認し、最新のVC 8.0 SP1 ATL Patch (x64)を入れて見ましたが解決しませんでした。
どうやらより新しいMSVCrtが世に存在するようなのです。
しかし、まだ一般にはダウンロード提供されていないようです。Windows Update経由で入手しましょう。
2011/10/01追記:
ダウンロード提供場所を発見いたしました:
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=ae2e1a40-7b45-4fe9-a20f-2ed2923aca62&displaylang=ja-nec
http://support.microsoft.com/kb/2538242/ja
8.0.50727.6195
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=ae2e1a40-7b45-4fe9-a20f-2ed2923aca62&displaylang=ja-nec
KB2538242が提示される様子 |
既に在るポスグレ8.2.x用(x86版)の関数を、ポスグレ9.0.4(x64版)向けに移植していました。
久しくDynamic linkにすると、ターゲットのマシンでDLLが読み込みできません。
マニフェストによるDLLのSide-by-side構成が有効になっているため、許可されているDLL(通常は同じバージョン又はより新しいバージョン)にのみ、実行時にリンクできるようになっています。
それは判っていましたが、8.0.50727.6195の入手方法がわかりませんでした。
私製のCheckMSVCrtで現状を確認し、最新のVC 8.0 SP1 ATL Patch (x64)を入れて見ましたが解決しませんでした。
どうやらより新しいMSVCrtが世に存在するようなのです。
2011/10/01追記:
ダウンロード提供場所を発見いたしました:
http://www.microsoft.com/downloads/ja-jp/details.aspx?familyid=ae2e1a40-7b45-4fe9-a20f-2ed2923aca62&displaylang=ja-nec
2011年7月28日木曜日
TIF/TIFFファイルの編集を支援するJ TIFF Editor 3
JTIFEdit3
TIF/TIFFファイルの編集には、Imaging(Windows 2000等に付属)や、Microsoft Document Imaging(Office 2003等に付属)に、大変お世話になったという経験はございませんか。
ページの入れ替え・回転を支援いたします、オープンソース対応の簡易なTIFF編集ソフトがございます。
Windows XP/Vista/7版:入手は、こちらから。
次のような些細な特徴が有ります:
☆ 入れ替え: ページを入れ替えできます。
☆ 回転: ページを左や右に直角回転できます。
☆ 削除: ページを削除できます。
☆ メール送信: お使いのメーラー(MAPI)を立ち上げて、ページを添付できます。
☆ FreeImageライブラリを採用しています。(GNU GPL ライセンスで受入)
☆ ページのプレビュー表示をON・OFF切り替えできます。
ソースコードを閲覧して頂く事ができます:Source Browse
TIF/TIFFファイルの編集には、Imaging(Windows 2000等に付属)や、Microsoft Document Imaging(Office 2003等に付属)に、大変お世話になったという経験はございませんか。
ページの入れ替え・回転を支援いたします、オープンソース対応の簡易なTIFF編集ソフトがございます。
Windows XP/Vista/7版:入手は、こちらから。
次のような些細な特徴が有ります:
☆ 入れ替え: ページを入れ替えできます。
☆ 回転: ページを左や右に直角回転できます。
☆ 削除: ページを削除できます。
☆ メール送信: お使いのメーラー(MAPI)を立ち上げて、ページを添付できます。
☆ FreeImageライブラリを採用しています。(GNU GPL ライセンスで受入)
☆ ページのプレビュー表示をON・OFF切り替えできます。
ソースコードを閲覧して頂く事ができます:Source Browse
2011年7月20日水曜日
共有フォルダの移動・名前の変更・削除を制限できるかもしれないNoMoveFolder
ファイルサーバに保存しています共有フォルダ。
知らない間に、勝手に移動されたり、削除されたりして、大変な経験をなされたことはございませんか。
NoMoveFolderを利用することで、条件付きで制限することが可能です。
但し、これは魔法のような品では有りませんので: 動作の仕組みや、制限を正しく理解した上でご活用ください。
動作の仕組み:
結論としましては、かなり実験的で、業務における信頼性は余り高くない部類の一品と言えるでしょう。
知らない間に、勝手に移動されたり、削除されたりして、大変な経験をなされたことはございませんか。
NoMoveFolderを利用することで、条件付きで制限することが可能です。
但し、これは魔法のような品では有りませんので: 動作の仕組みや、制限を正しく理解した上でご活用ください。
動作の仕組み:
- ICopyHookという仕組みを利用します。
Windows エクスプローラで、フォルダの移動・コピー・削除・名前の変更をする際に問い合わせする仕組みで、許す・許さないを決定できる仕組みです。 - NoMoveFolderは、特定ファイルの有無を見て、フォルダ操作の不許可を決定します。
".NoMove"というファイルが入っていたら、そのフォルダを移動させない。
".NoRename"というファイルが入っていたら、そのフォルダの名前を変更させない。
".NoDelete"というファイルが入っていたら、そのフォルダを削除させない。
- 共有フォルダを使用するすべてのパソコンに導入しないといけません。
例:出入り業者様が持ち込んだパソコンで操作→防ぐことはできません。今日クリーンインストールしたばかりのパソコンで操作→十中八九、防ぐことはできません。 - Windows エクスプローラ以外で操作する場合は多分、制限できません。
例:ディスクをフォーマットする→防ぐことはできません。Windows PEやLinux等を起動してフォルダを触る→防ぐことはできません。コマンドプロンプト・VBScript等で操作→防ぐことはできません。 - Windows XP又はそれ以降のOSで動きます。
例:Windows NT 2000・Windows 98等、非対応のWindowsで操作→防ぐことはできません。 - 導入していても、動作していなければ防ぐことはできません。
例:ウィルス対策ソフトに検疫されてしまった→防ぐことはできません。 - 特定ファイルを悪意の有る方に触られた場合は、お手上げです。
例:パソコン分かる人が".NoDelete"を取り払ってしまった!→防ぐことはできません。スパイウェア・マルウェア対策ソフトが".NoXXX"を勝手に駆除してしまった!→防ぐことはできません。 - やはり日頃の動作確認が肝要です→大変な手数!
結論としましては、かなり実験的で、業務における信頼性は余り高くない部類の一品と言えるでしょう。
NTRサポートで日本語入力を支援するNoime4ntr
NTRサポートをご利用中のオペレータ様で、
漢字キーの押下が転送されない問題で、「思い通りに日本語入力できない」といった悩みはございませんか。
NTRサポートで日本語入力できるように支援する為の方法をご紹介致します。
手順:
漢字キーの押下が転送されない問題で、「思い通りに日本語入力できない」といった悩みはございませんか。
NTRサポートで日本語入力できるように支援する為の方法をご紹介致します。
手順:
- Noime4ntrプログラム(Windows版)を次の場所から入手し、導入致します。但し、非公式・非公認のソフトです。ご利用の際にはライセンス条項等に十分ご注意ください:
- ソースコードを入手して頂けます。TortoiseGit等の使用を推奨:
2011年7月9日土曜日
"ControlSource/コントロールソース" プロパティ を持つATLコントロールを作成する
Microsoft Accessでフォームを構築する際には、多数のテキスト ボックス(コントロールソースを設定した物)を多用するかと思います。
開発者がこのようなコントロールを自作したい場合は、どのような作りこみをすれば良いか?
例えばExcelで見られるような、セル幅に合わせた表示をしてくれるラベル・コントロールを作りたい場合です。
Microsoft Visual Studio 2005で、Control Sourceを持つコントロールを作成できました。そのテクニックをご紹介したいと思います。
※ Microsoft社様のサイトにHow to情報が有りました:How to add Excel LinkedCell support to your ATL ActiveX control
既に作成しているコントロールを調整する場合:
新たにコントロールを作成する場合:
開発者がこのようなコントロールを自作したい場合は、どのような作りこみをすれば良いか?
例えばExcelで見られるような、セル幅に合わせた表示をしてくれるラベル・コントロールを作りたい場合です。
Microsoft Visual Studio 2005で、Control Sourceを持つコントロールを作成できました。そのテクニックをご紹介したいと思います。
※ Microsoft社様のサイトにHow to情報が有りました:How to add Excel LinkedCell support to your ATL ActiveX control
既に作成しているコントロールを調整する場合:
- 次のINTERFACE_ENTRYをすべて含みます:
- COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY(IProvideClassInfo) - 次のCONNECTION_POINT_ENTRYを含みます:
- CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
- IDLファイルで次の定義をinterfaceに含みます。Valueの名称、idの序数、displaybindの有無は任意。但しbindable必須、defaultbind必須、VARIANT型を用いることも必須です:
- [propput, bindable, displaybind, defaultbind, id(0)]
HRESULT Value([in]VARIANT *rhs);
[propget, bindable, displaybind, defaultbind, id(0)]
HRESULT Value([out,retval]VARIANT *prv); - Valueプロパティの実装を作りこみます。
新たにコントロールを作成する場合:
- 「クラスビュー」を表示、プロジェクトを右クリック、「追加」クリック、「クラス」クリック、「ATL コントロール」選択、「追加」クリック。
- 「オプション」では、「接続ポイント」のサポートにチェックを入れてください。
- 「インターフェイス」では、「IPropertyNotifySink」「IProvideClassInfo2」をサポート有りに移動します。
- IDLファイル中の作成したinterfaceに、Valueプロパティの定義を追加します。例:
- [propput, bindable, displaybind, defaultbind, id(1001)]
HRESULT Value([in]VARIANT *rhs);
[propget, bindable, displaybind, defaultbind, id(1001)]
HRESULT Value([out,retval]VARIANT *prv); - 作成したクラスのヘッダファイルにValueプロパティ操作の実装を追加します。例:
- public:
CComVariant m_vt;
virtual HRESULT STDMETHODCALLTYPE put_Value(VARIANT *rhs)
{
return m_vt.Copy(rhs);
}
virtual HRESULT STDMETHODCALLTYPE get_Value(VARIANT *prv)
{
return VariantCopy(prv, &m_vt);
}
[ATLコントロールウィザード]-[オプション]画面
[ATLコントロールウィザード]-[インタフェイス]画面
IExcellyLabel6のinterface定義にValueプロパティを追加
CExcellyLabel6にValueプロパティ操作の実装を追加
2011年5月6日金曜日
Dropboxで、Windowsサーバのデータをバックアップ
デジタルドルフィンズ(文書管理システム)の、オンライン・バックアップに活用しようと検証しています。
課題等:
・「バックアップ」サービスではなく、「同期」サービスですよ、と言われました。http://forums.dropbox.com/topic.php?id=36079
・Dropboxフォルダに入っていないフォルダは同期されません。
・とはいえ、任意のフォルダをバックアップしたいものです。
・Windows Server 2003では、再解析ポイントを貼り付けることで、対象を拡大できました(※1)。
・Windows Server 2008では、シンボリックリンクを貼り付けることで、対象を拡大できました(※2)
・データベースの生データを同期するのは困難なようです:ファイルサイズの問題と、複数にまたがるファイルに対する一貫性維持の問題。
・生データのダンプ(バックアップ)を同期する分にはうまくいくようです。
・Word/Excel/PDF等、ファイルを同期する分にもうまくいくようです。
・Windowsにログインしていないと同期できません→サーバでは通常、ログインしていないので、対策が必要かもしれません。
・同期の成功・失敗がサーバマシンの外から分かりにくい。
・被災した場合には恐らく、支払い能力を巡ってDropboxと英語で交渉しなければなりません。
・同期状況がパーセンテージで表示されません。
・本当に同期されているのか、という漠然とした不安感が有ります。
・ファイルの履歴は何世代残るのか。
・世代数と使用容量の関係は?
・使用容量の増大により、履歴が消えていくのかどうか。
・優秀なファイアウォールやIDS等を導入している場合に、誤って同期が遮断されないかどうか。
(※1)
対象は拡大しましたが、拡大した部分は常時同期されませんでした。クライアントソフトで、Pause→Resumeの操作をしますと、拡大部分の同期が開始されました。これは大変!
対象の拡大には、Windows SysinternalsのJunctionを利用いたしました:http://technet.microsoft.com/ja-jp/sysinternals/bb896768%28en-us%29.aspx
(※2)
対象は拡大しましたが、拡大した部分は常時同期されるかどうかは、不明です。
課題等:
・「バックアップ」サービスではなく、「同期」サービスですよ、と言われました。http://forums.dropbox.com/topic.php?id=36079
・Dropboxフォルダに入っていないフォルダは同期されません。
・とはいえ、任意のフォルダをバックアップしたいものです。
・Windows Server 2003では、再解析ポイントを貼り付けることで、対象を拡大できました(※1)。
・Windows Server 2008では、シンボリックリンクを貼り付けることで、対象を拡大できました(※2)
・データベースの生データを同期するのは困難なようです:ファイルサイズの問題と、複数にまたがるファイルに対する一貫性維持の問題。
・生データのダンプ(バックアップ)を同期する分にはうまくいくようです。
・Word/Excel/PDF等、ファイルを同期する分にもうまくいくようです。
・Windowsにログインしていないと同期できません→サーバでは通常、ログインしていないので、対策が必要かもしれません。
・同期の成功・失敗がサーバマシンの外から分かりにくい。
・被災した場合には恐らく、支払い能力を巡ってDropboxと英語で交渉しなければなりません。
・同期状況がパーセンテージで表示されません。
・本当に同期されているのか、という漠然とした不安感が有ります。
・ファイルの履歴は何世代残るのか。
・世代数と使用容量の関係は?
・使用容量の増大により、履歴が消えていくのかどうか。
・優秀なファイアウォールやIDS等を導入している場合に、誤って同期が遮断されないかどうか。
(※1)
対象は拡大しましたが、拡大した部分は常時同期されませんでした。クライアントソフトで、Pause→Resumeの操作をしますと、拡大部分の同期が開始されました。これは大変!
対象の拡大には、Windows SysinternalsのJunctionを利用いたしました:http://technet.microsoft.com/ja-jp/sysinternals/bb896768%28en-us%29.aspx
(※2)
対象は拡大しましたが、拡大した部分は常時同期されるかどうかは、不明です。
2011年4月19日火曜日
IReconcilableObjectは、誰が使っているのだろうか
英語版のWikipediaに記述が有りました。
Briefcase (Microsoft Windows)
http://en.wikipedia.org/wiki/Briefcase_(Microsoft_Windows)
「Microsoft Accessが入っていると、レプリケーションツールとして利用できる」とあります。
そこで試してみますと、同期の方法から「結合」を選ぶオプションを出すことができました。
Briefcase (Microsoft Windows)
http://en.wikipedia.org/wiki/Briefcase_(Microsoft_Windows)
「Microsoft Accessが入っていると、レプリケーションツールとして利用できる」とあります。
そこで試してみますと、同期の方法から「結合」を選ぶオプションを出すことができました。
ブリーフケースの同期で、「結合」オプションが利用できる |
2011年4月14日木曜日
ホスト(Internet Explorer等)のサイト(IOleClientSite等)を得る方法
Visual Studio 2005の、Windows Control Libraryプロジェクトで作成致します、UserControlでの話です。
一日掛けて試行錯誤しました所、次の方法で落ち着きました:
IOleClientSite pClientSite = (IOleClientSite)Site.GetService(new AntiMoniker().GetType());
[ComImport(), Guid("00000305-0000-0000-C000-000000000046")]
class AntiMoniker {
}
ポイントはnew AntiMoniker()の部分で、System.__ComObjectをインスタンス化しているという点です。かなり姑息な方法ですが… 他に良策を思いつきません。
必ずしもAntiMonikerである必要は無いと思います。
然しながら、何とかMoniker系は歴代Windowsでも問題なく使えそうなクラスだと思いましたので、AntiMoniker辺りを選びました。
また、AntiMonikerの中身は省いています(メソッド・プロパティは今回使いませんので)。
---
本件で参考にしたポストです:
How to use IOleClientSite in C#?
http://www.eggheadcafe.com/software/aspnet/33997199/how-to-use-ioleclientsite-in-c.aspx
How to cast a control to IOleObject
http://stackoverflow.com/questions/1216760/how-to-cast-a-control-to-ioleobject
一日掛けて試行錯誤しました所、次の方法で落ち着きました:
IOleClientSite pClientSite = (IOleClientSite)Site.GetService(new AntiMoniker().GetType());
[ComImport(), Guid("00000305-0000-0000-C000-000000000046")]
class AntiMoniker {
}
ポイントはnew AntiMoniker()の部分で、System.__ComObjectをインスタンス化しているという点です。かなり姑息な方法ですが… 他に良策を思いつきません。
必ずしもAntiMonikerである必要は無いと思います。
然しながら、何とかMoniker系は歴代Windowsでも問題なく使えそうなクラスだと思いましたので、AntiMoniker辺りを選びました。
また、AntiMonikerの中身は省いています(メソッド・プロパティは今回使いませんので)。
---
本件で参考にしたポストです:
How to use IOleClientSite in C#?
http://www.eggheadcafe.com/software/aspnet/33997199/how-to-use-ioleclientsite-in-c.aspx
How to cast a control to IOleObject
http://stackoverflow.com/questions/1216760/how-to-cast-a-control-to-ioleobject
2011年4月5日火曜日
IIS6.0 上で Ruby を走らせる
IIS6.0 (Windows Server 2003)上で、ActiveRuby 1.8.7 ruby 1.8.7 (2010-08-16 patchlevel 302) [i386-mswin32] を、動作させる方法につきまして、ご紹介いたします。
私製致しました、CGI4Ruby を利用いたします。性能は度外視、とりあえず動くレベルです。
.NET Framework 4.0 (C#) で作成。
CGI4Ruby.exe 入手はこちらから:
https://github.com/HiraokaHyperTools/CGI4Ruby/releases
ソースコード:GitHub で管理
https://github.com/HiraokaHyperTools/CGI4Ruby/
~設定手順~
CGI4Ruby.exe を入手、Ruby のセットアップ先にでも放り込んでくださいませ。
IIS マネージャを立ち上げまして、次図のように、Web サービス拡張を作成します。
仮想ディレクトリ等のプロパティから、拡張子を次図のようにマッピング致します。
これで設定完了です。追加で必要な設定が有りましたら適宜、設定をお願いしたいと思います。
震災見舞い申し上げます
更新が滞り、発信も遅くなってしまいました。申し訳ございません。
東北・太平洋沿岸地震と津波の犠牲者ご家族の皆様に心からお悔やみ申し上げます。
被災された皆様に心よりお見舞い申し上げます。
私どもは大阪で活動させて頂いていますが、建屋等は無事で、平常通りサポート・開発等の活動をさせて頂いています。
東北・太平洋沿岸地震と津波の犠牲者ご家族の皆様に心からお悔やみ申し上げます。
被災された皆様に心よりお見舞い申し上げます。
私どもは大阪で活動させて頂いていますが、建屋等は無事で、平常通りサポート・開発等の活動をさせて頂いています。
2011年3月11日金曜日
freenas検証中
KUです。
廃棄寸前のパソコン(EPSON Endeavor Pro 2000)を再利用・拡張しまして、freenasを入れています。
freenasを使いますと、装填しているハードディスクを使って、共有フォルダ・ファイルサーバを立ち上げることができます。
今回、毎日のバックアップ置場として活用することで、お勧め度合いを検証しています。
使って見ました所、設定画面の操作性は良いのですが、使用時の安定性に欠いている気がしてきました。
20GB程度のファイルを保存したり、高負荷を掛けますと、しばしばリセットが掛かります。
掛かるのは仕方がないとして、ログが残らないのは厳しいですね。
しばらく高負荷→フリーズ→再起動→しばらく高負荷→…
を繰り返していましたが、ようやくフリーズの画面を得ることができました。画面には、凡そ次のようなことが書かれていました:
---
kernel trap 22 with interrupts disabled
kernel trap 12 with interrupts disabled
fatal trap 12: page fault while in kernel mode
cpuid = 0: apic id = 00
fault virtual address = 0x11c49ad0
fault code = supervisor read, page not present
instruction pointer = 0x20:0x91091d82
stack pointer = 0x28:0x90fafc88
frame pointer = 0x28:0x47
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def32 1, gram 1
processor eflags = resume, IOPL = 0
current process = 10 (idle: cpu1)
trap number = 12
panic: page fault
cpuid = 0
Uptime: 27m57s
Cannot dump, No dump device defined.
Automatic reboot in 15 seconds - press a key on the console to abort
---
freenasの開発元にフィードバックしようと思います。
2011/03/15追記:
Google先生を頼りに調査致しますと、
「メモリの故障、ハードウェアエラーじゃないの?」という情報(英語)が多数ヒットしました。
そこでチェックしますと、メモリに不具合が有りました。
それ以降、page faultは出なくなりましたので、この件は一段落です。
後メモリの不具合により、ファイルシステムも相当ダメージを受けていたようです。fsck_ufsを回しますと沢山の矛盾が指摘されました。この状態で「もし実運用していたか」と思うと怖いです。
廃パソコンの再利用時は、メモリチェックを徹底すべきと思いました!
廃棄寸前のパソコン(EPSON Endeavor Pro 2000)を再利用・拡張しまして、freenasを入れています。
freenasを使いますと、装填しているハードディスクを使って、共有フォルダ・ファイルサーバを立ち上げることができます。
今回、毎日のバックアップ置場として活用することで、お勧め度合いを検証しています。
使って見ました所、設定画面の操作性は良いのですが、使用時の安定性に欠いている気がしてきました。
20GB程度のファイルを保存したり、高負荷を掛けますと、しばしばリセットが掛かります。
掛かるのは仕方がないとして、ログが残らないのは厳しいですね。
しばらく高負荷→フリーズ→再起動→しばらく高負荷→…
を繰り返していましたが、ようやくフリーズの画面を得ることができました。画面には、凡そ次のようなことが書かれていました:
---
kernel trap 22 with interrupts disabled
kernel trap 12 with interrupts disabled
fatal trap 12: page fault while in kernel mode
cpuid = 0: apic id = 00
fault virtual address = 0x11c49ad0
fault code = supervisor read, page not present
instruction pointer = 0x20:0x91091d82
stack pointer = 0x28:0x90fafc88
frame pointer = 0x28:0x47
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def32 1, gram 1
processor eflags = resume, IOPL = 0
current process = 10 (idle: cpu1)
trap number = 12
panic: page fault
cpuid = 0
Uptime: 27m57s
Cannot dump, No dump device defined.
Automatic reboot in 15 seconds - press a key on the console to abort
---
freenasの開発元にフィードバックしようと思います。
2011/03/15追記:
Google先生を頼りに調査致しますと、
「メモリの故障、ハードウェアエラーじゃないの?」という情報(英語)が多数ヒットしました。
そこでチェックしますと、メモリに不具合が有りました。
それ以降、page faultは出なくなりましたので、この件は一段落です。
後メモリの不具合により、ファイルシステムも相当ダメージを受けていたようです。fsck_ufsを回しますと沢山の矛盾が指摘されました。この状態で「もし実運用していたか」と思うと怖いです。
廃パソコンの再利用時は、メモリチェックを徹底すべきと思いました!
2011年3月8日火曜日
2011年3月7日月曜日
WebブラウザでTIF/TIFF画像を閲覧するソフト
KUです。
エキスパートシステムの推論的な側面を実験をしつつ、TIF/TIFF画像の閲覧ソフトをご紹介したいと思います。
どのようなソフトが有ります?
以上、推論的にソフトの選択に関する情報を並べてみました。
どのようなソフトが自分の求める要件に合っているか? について、評判・良し悪しだけではなく、こういった判断材料が提示されても、選ぶ方にとっては面白い材料になるのかもしれません。
エキスパートシステムの推論的な側面を実験をしつつ、TIF/TIFF画像の閲覧ソフトをご紹介したいと思います。
どのようなソフトが有ります?
- Internet Explorerで、TIF/TIFF画像を閲覧するソフトとして、
AlternaTIFFと
AxTIF5というソフトを知っています。
- 知名度が高いほうは:AlternaTIFFです。英語のほか、日本語で紹介しているサイトも有ります。
無名なのは:AxTIF5です。 - デジタルドルフィンズに搭載しているものと、似た感覚で操作できるのは:AxTIF5です。
- 画面をクリックすると:
全画面表示するのはAlternaTIFFです。
拡大・縮小するのはAxTIF5です。 - 印刷・保存・メール送信・ペン書きみたいなのができるのは:AlternaTIFFです。
高度なことができず単純な方は:AxTIF5です。 - 利用するのにオンライン・オフラインでの登録が必要なのは:AlternaTIFFです。
登録不要:AxTIF5です。 - オープンソースとして利用できるのは:AxTIF5です。
オープンソースではありません:AlternaTIFFです。 - 有償サポートが有ります:AlternaTIFFです。
サポート無し:AxTIF5です。
- できます:AlternaTIFFです。
できません:AxTIF5です。
- できます:AlternaTIFFです。
できません:AxTIF5です。
以上、推論的にソフトの選択に関する情報を並べてみました。
どのようなソフトが自分の求める要件に合っているか? について、評判・良し悪しだけではなく、こういった判断材料が提示されても、選ぶ方にとっては面白い材料になるのかもしれません。
2011年2月16日水曜日
Windows Journal ノートとAPI
KUです。
「Windows Journal」というソフトを業務利用する目的で調査しています。
気になる点は、次の通りです:
XP-Vista-7と続いてきた機能であったり、タブレット型のWindowsパソコンも発展の勢いにあったりするようなので、見込みは有るかなと考えています。
2番目につきましては、独自に調べました。
APIは用意されているようです。が、期待通りに動いてくれません。
方法 : Journal ファイルを読み取る
http://msdn.microsoft.com/ja-jp/library/aa348819(VS.80).aspx
実践したところ、次の画面のようにエラーが出てしまいます:
XPでも、2008サーバでも同様のエラーが出ましたので、実質機能しないのかな、とも考えています。
MSDNのフォーラムでも現象が報告されているようですが、回答が得られていません。
Microsoft.Ink.JournalReader.dll OutOfMemoryException
http://social.msdn.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/25da002a-3a40-4aee-a81a-0dfa36c45cc3/
先の読みにくい状況です。
「Windows Journal」というソフトを業務利用する目的で調査しています。
気になる点は、次の通りです:
- 将来のWindowsでも安心して使っていけるかどうか。
- プレビューやサムネイル生成機能を提供する為のAPIが用意されているかどうか。
XP-Vista-7と続いてきた機能であったり、タブレット型のWindowsパソコンも発展の勢いにあったりするようなので、見込みは有るかなと考えています。
2番目につきましては、独自に調べました。
APIは用意されているようです。が、期待通りに動いてくれません。
方法 : Journal ファイルを読み取る
http://msdn.microsoft.com/ja-jp/library/aa348819(VS.80).aspx
実践したところ、次の画面のようにエラーが出てしまいます:
XPでも、2008サーバでも同様のエラーが出ましたので、実質機能しないのかな、とも考えています。
MSDNのフォーラムでも現象が報告されているようですが、回答が得られていません。
Microsoft.Ink.JournalReader.dll OutOfMemoryException
http://social.msdn.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/25da002a-3a40-4aee-a81a-0dfa36c45cc3/
先の読みにくい状況です。
DD開発ROOMを始めます
KUです。
この度、DD開発ROOMなるブログを立ち上げ致しました。
趣旨としましては、ソフトウェアの開発に関する技術的な話題の発信や、オープンソースとして公開しているソフトのご紹介をしていきたいと思います。
意義としましては、「何らかの形で、お役立て頂けるような情報を発信しよう」と心がけることに尽きると思います。具体的には、「検索エンジンからのご来訪が命綱」のような運用方法です(^^;。
現在、デジタルドルフィンズ営業ブログや開発ブログにて都度、情報発信をさせて頂いています。
開発に関するトピックはこちらのブログに移行していく予定です。
今後とも、よろしくお願いいたします。
この度、DD開発ROOMなるブログを立ち上げ致しました。
趣旨としましては、ソフトウェアの開発に関する技術的な話題の発信や、オープンソースとして公開しているソフトのご紹介をしていきたいと思います。
意義としましては、「何らかの形で、お役立て頂けるような情報を発信しよう」と心がけることに尽きると思います。具体的には、「検索エンジンからのご来訪が命綱」のような運用方法です(^^;。
現在、デジタルドルフィンズ営業ブログや開発ブログにて都度、情報発信をさせて頂いています。
開発に関するトピックはこちらのブログに移行していく予定です。
今後とも、よろしくお願いいたします。
登録:
投稿 (Atom)