投稿

2013の投稿を表示しています

Photoshop.Application.DoJavaScriptをjscript(jsxではない)から呼び出す時に嵌ったのでメモ

Photoshopを外部スクリプトから操作するとき var app = new ActiveXObject('Photoshop.Application'); とPhotoshopオブジェクトを作っておいて app.DoJavaScriptを呼び出すのですが、外部のスクリプトから引数を渡さなければ 問題ないのですが、引数を渡したいときに嵌った。 引数は第二パラメータに配列で渡す必要があるので以下のようなコードを書いた。 app.DoJavaScript("alert('Hello World!:' + arguments[0]);", ['引数1'], 1); これを実行すると、「無効な引数 - 引数2 - 配列が必要」というエラーが発生してしまう。 JavaScriptの配列はCOMでは配列扱いにしてくれない臭い。 同じようなことをVBScriptで書いた場合、すんなりと動いてしまう。。。。 Dim app Set app = CreateObject("Photoshop.Application") Dim arg arg = Array("引数1", "2") app.DoJavaScript "alert('Hello World!' + arguments[0]);", arg, 1 実行するとPhotoshop上で「Hello World! 引数1」とメッセージが表示される。 VBScriptの配列はCOMの配列として扱ってくれるようだ。 これを解決するために以下の様な関数を作ってみた。 function toVBArray(arry) { var dic = new ActiveXObject("Scripting.Dictionary"); for(var i = 0; i < arry.length; ++i) { dic.add(i, arry[i]); } return dic.Items(); } JScriptの配列をVBSc

シンボルサーバーを設定する

シンボルサーバーを設定した(する)ので自分用のメモ シンボルサーバーを設定する マイコンピュータの環境設定の環境変数「_NT_SYMBOL_PATH」にシンボルサーバーへのパスを設定します。 例えば、 D:\symbols \\symserver\symbols http://msdl.microsoft.com/download/symbols にシンボルサーバーだよと設定したい場合、環境変数に Srv*D:\symbols*\\symserver\symbols*http://msdl.microsoft.com/download/symbols というように設定します。 これを設定しておくと、「D:\symbols」と「\\symserver\symbols」共有フォルダにシンボルファイルが格納されます。 シンボルサーバーへシンボルの追加 共有フォルダへシンボルファイルを追加する場合、「symstore.exe」を使用します。 これはMicrosoft Debugging Tools for Windowsのパッケージに含まれています。 例えば、「C:\svn\projects」フォルダ下に生成されたシンボルファイルを共有フォルダに登録したい場合、以下のように実行します。 symstore.exe add /f "c:\svn\projects\*.pdb" /s "\\symserver\sysmbols" /r このコマンドで「C:\svn\projects」フォルダ下の*.pdbファイルを再帰的探して共有フォルダに設定します。
イメージ
icc profileを使った色変換 ここではicc profileを使った色変換をWPFのGraphicsを使ってやってみようと思う。 まず、WPFのGraphicsについて簡単に GDIやGDI+と比較してWPFのGraphics(System.Windows.Media.Imaging)は割りとよくできている。 特徴 ・RGBだけではなく、様々なピクセルフォーマットに対応している  →RGB(A)/CMYK/Gray ・icc profileを使用した色変換もサポートしているよ ・Regionではなくパスの論理演算ができるよ ・ビットマップのエフェクト周りがいろいろ捗るよ ・2DGraphicだけではなくて3DGraphicもサポートしているよ やりたいこと icc profileを使った画像の色変換 ビットマップの画素を弄る icc profileを埋め込んだ画像の生成 icc profileを埋め込んだ画像の生成 JPEGファイルを生成する場合 JpegBitmapEncoderというクラスを使用する。 こいつは任意のピクセルフォーマットのビットマップからJpegを生成するクラスだ。 元のビットマップデータはWritableBitmapというクラスで予め設定しておく。 var w = 640; var h = 480; var bmp = WriatableBitmap(w, h, 72, 72, PixcelFormats.Cmyk32, null); 的な感じでやると幅/高さ = 640/480ピクセルの1画素がCMYK(4byte)のビットマップ バッファが生成される。 こいつの偉いところはピクセルフォーマットによって内部の構造を隠蔽しているところだ。 こいつに予め用意しておいたCMYKのbyte配列・・・buffでFillする場合、 bmp.WritePixcels(new Int32Rect(0, 0, w, h), buff, w * 4, 0); というように書くとCMYKのビットマップがWritableBitmapに設定される。 後は、icc profileを埋め込んだJPEGファイルの生成だ。 WriteableBitmapをJpegB

バックアップソフト

データベースの二重化はDBMS自身が機能として持っているけれどファイルシステムの二重化は何があるかを調べたメモ。 仮想環境とかでH/W的なところはあまり考えない(考えられない)環境でソフトウェア的に何か対策をしなければならないという状況での引き出し。 有償: ・ARCServe Replication HA  いわゆるアークサーブ。10~20万円くらい ・Tivoliリアルタイムバックアップ  IBM社製。1万円~ライセンス数に応じて価格が決まる一番多い25ライセンスで20万位 無償: ・Bvckup  リアルタイムでミラーリングを実現してくれる。  結構軽いとのうわさ。 ・BackupF2F ・rsync  →linuxでのミラーリングアプリ ・BanBackup