mieki256's diary



2013/08/22(木) [n年前の日記]

#1 [cg_tools] 画像内容が一致してるか調べたい

2つの画像に違いがあるかどうかを調べたい。できればコマンドラインツールを使って判定したい。

検索してみたところ、 _ImageMagick の Compare を使えば、目的が果たせると知った。ImageMagick は凄いな。なんでもできちゃうのだな…。
compare -metric AE src1.bmp src2.bmp diff.bmp
compare -metric 比較種類 比較元画像1 比較元画像2 違ってる箇所を出力する画像
_-metric というオプション で、比較種類を指定することができるらしい。自分は英語が読めないので自信ないけど、たぶん、-metric AE で、単純に「何ドット違っているか」を出力してくれる、ように見えた。0がでてくれば、全く同じ画像。0より大きい数値が出てきたら、その個数分のドットが違ってますよ、ということじゃないかと。たぶん。自信ないけど。

標準出力で、比較結果が出力されるらしい。

UWSCスクリプト内で呼び出してみたけど、一応動いてるように見える。
// 画像を比較して結果をチェックするuwscスクリプト
// ImageMagick の compare を使用。

OPTION EXPLICIT

PUBLIC comp_tools = "<#DBL>C:\Prog\ImageMagick-6.8.5-Q8\compare.exe<#DBL> -metric AE"
PUBLIC diffimg = "diff.bmp"
PUBLIC cmdstr = ""
PUBLIC res
HASHTBL imgfn

imgfn[0] = "001.bmp"
imgfn[1] = "002.bmp"
imgfn[2] = "003.bmp"

cmdstr = comp_tools + " " + imgfn[0] + " " + imgfn[1] + " " + diffimg
res = DOSCMD(cmdstr)
res = REPLACE(res, "<#CR>", "")

if res = "0" THEN
    MsgBox("画像は同じです。")
ELSE
    MsgBox(res + "個、ドットが異なります")
ENDIF

#2 [xyzzy] xyzzy にもUWSCモードがあったらしい

UWSC は、Windowsデスクトップ上の各種操作を自動化できるツール。ちと再勉強してたのだけど。スクリプトを書くためのヨサゲなエディタはないものかと。

自分の手元の xyzzy 上でも、一応 .uws を開くとソレっぽい動作をしてたのだけど。それを実現してる uws-mode.l をどこから入手したのか完全に忘れてて。…もしかして、 _自分で作ったモノ を使ってたのかな?

検索してみたら、もっとちゃんとした xyzzy 用の uwsc-mode があったらしい。ありがたや。そちらを使わせてもらおう…。

_UWSCスクリプトの解説[素人プログラマーBig] で、uwsc-mode.l が配布されてる。DL・解凍して、etc フォルダに uwsc というファイルをコピーして、site-lisp フォルダに uwsc-mode.l をコピー。バイトコンパイルしたり、~/.xyzzy に、.uws との関連付けを書いたり。

C-c C-e で、現在開いてるスクリプトを実行できるのが便利。

ただ、uwsc-mode.l 中で、uwsc.exe のパスと、uwsc.chm(ヘルプファイル)のパスを直接指定してるあたり、どうしたものかと。環境が変わるたびに、.l の修正とバイトコンパイルが必要になる予感。できれば ~/.xyzzy にそのあたりの設定を書けないか、と思って色々試したけど、xyzzy の Common Lisp は不勉強なので、全然上手く行かなくて諦めた。

_明日への一歩: xyzzyのuwsc-modeに補完機能を付ける方法 で、件の uwsc-mode.l に、補完機能をつける事例が紹介されてた。試しに自分も導入。C-. で補完が効くようになった。素晴らしい。ありがたや。

etc フォルダにコピーした uwsc ファイルには、HASHTBL や BTN_YES 等の記述が無かったので、いくつか追加してみたりもして。
*** uwsc.old	Sun Jul 16 15:05:39 2006
--- uwsc.new	Thu Aug 22 23:50:02 2013
***************
*** 1,6 ****
--- 1,7 ----
  ;*0
  DIM
  PUBLIC
+ HASHTBL
  CONST
  IF
  THEN
***************
*** 199,204 ****
--- 200,221 ----
  VK_OEM_PA2
  VK_OEM_PA3
  
+ HASH_CASECARE
+ HASH_SORT
+ HASH_EXISTS
+ HASH_REMOVE
+ HASH_KEY
+ HASH_VAL
+ HASH_REMOVEALL
+ 
+ BTN_YES
+ BTN_NO
+ BTN_OK
+ BTN_CANCEL
+ BTN_ABORT
+ BTN_RETRY
+ BTN_IGNORE
+ 
  ;*2
  GETID
  CTRLWIN

UWSCは連想配列が使えたのか。 :

前から使えてたっぽいのだけど、自分、知らなかった…。何にせよ、これでスクリプトを書くのがちょっと楽になったような気が。

この記事へのツッコミ

Re: xyzzy にもUWSCモードがあったらしい by 名無しさん    2013/08/30 17:30
.xyzzy に

(setq *uwsc-command* "c:/uwsc/UWSC.exe")
(setq *uwsc-help* "c:/uwsc/uwsc.chm")

とかでよろしいんじゃないでしょうか。とりあえず。

#3 [prog] UWSCスクリプトが書きやすい普通のエディタってないのかな

xyzzy は emacs系だから、フツーの人にはオススメできないわけで。Windowsの流儀に沿ったフツーのエディタのほうがオススメできそうだけど…。

サクラエディタ、秀丸、K2Editor、EmEditor 用の定義ファイルはあるらしい。

特に、サクラエディタのインストーラ版は、UWSC用のソレが最初から同梱されているようで。まあ、設定はされてないので自分で設定しないといかんし、zip配布版には同梱されてないけど。

_秀まるおのホームページ(サイトー企画)−UWSC用強調表示定義ファイル
_K2Editor支援ファイルダウンロード
_EmEditor (テキストエディタ) - UWSC 構文ファイル

NotePad++ 用の定義ファイルはないかな、と思ったけどさすがにソレは見つからなかった。

2013/08/23追記。 :

Mery も最初から UWSC用の定義ファイルを持っている、らしい。

_ファイル名を引数にしてアプリ起動 - MeryWiki を参考にして、Mery上から .uws を実行するマクロを作って試したり。
// -----------------------------------------------------------------------------
// UWSCスクリプトを実行.js
// 「ファイル名を引数にしてアプリ起動 改」を修正して対応。

var s = document.FullName; // 現在のファイル名を取得

// uwsc.exeの絶対パスを指定 (\マークはエスケープ要)
var exepath = "C:\\home\\bin\\uwsc\\UWSC.exe";

if (exepath == ""){
    alert("起動させる実行ファイルを指定してください");
}

//コマンドラインで渡す文字列を指定。
// 〜"+s+"〜とやるとsが編集しているファイル名に置き換わります
//ここを変更する場合36行目のvar cmdline〜も変更すること
var cmdline = "\"" + s + "\"";

// ファイル名があれば・・・
if (s != "") {
    document.Save();
    var o = new ActiveXObject("WScript.Shell");
    o.Run("\"" + exepath + "\" " + cmdline);
}else {
    // ファイル名がなければ・・・
    var s = editor.FullName;
    var a = s.split("\\");
    a.splice(a.length - 1, a.length);
    var s = a.join("\\") + "\\" + new Date().getTime() + ".uws";
    document.Save(s);

    //コマンドラインを更新
    var cmdline = "\"" + s + "\"";
    
    var o = new ActiveXObject("WScript.Shell");
    o.Run("\"" + exepath + "\" " + cmdline);
}
コレ、拡張子を判別して、呼び出す .exe を振り分けて、とかできそうな気もするな…。

#4 [digital] Google Playのレビューは機能してない気がする

先日、Android端末を使ってたら、無料アプリの下のほうに表示されてる広告の絵柄が気になってしまって。たぶん女性向けの何かの商品だと思うのだけど。

試しにクリックしてみたら、Google Play内の、Androidアプリ紹介ページに飛ばされた。Webサービスじゃなくて、アプリだったのか…。パッと見、いわゆる乙女ゲーに見えたのだけど。

しかし、レビューを眺めてみて、首を捻ったり。どのレビューも、「無課金で楽しんでます♪」「無課金で楽しんでます♪」「無課金で楽しんでます♪」…そんな感じの書き込みが、延々とどこまでも続く。ていうか、レビュー文章がどれもほとんど同じに見えた。投稿日時も、毎日、数時間おきにされてるようで。

さてはレビュー文章をコピペ or 自動生成して、プログラムで連続自動投稿してるんじゃないか、と思えてきたり。どうしてこんなことをするんだろう…。レビューが多いとランキングか何かに反映されるのかな?

もしかすると真のレビューが ―― そのアプリをフルボッコした内容があって、それを下のほうに追いやるためにこういうことしてるのかな? と思ってスクロールさせてみたけど、どこまで行っても「無課金で楽しんでます♪」のソレで埋め尽くされていて、結局辿り着けず途中で諦めたり。

ひょっとすると、そもそもアプリですら無いのかもしれないか…。乙女ゲーに見せかけた、個人情報を抜き取るためのプログラムで、インストールして起動しても真っ暗な画面のまま何の反応も見せず、「なんじゃこりゃ」で終わるのかも。しかしその裏では、端末に入った個人情報をごっそりどこかに送信してたりするのかも。こんな胡散臭いレビューで埋め尽くされてるアプリなんて、裏で何やってるかわからんよなと。 *1

何にせよ、こんなもんが堂々と登録されて、しかも放置されてるあたり、Andoroidは色々と終わってるなあ、という気がしてきたり。このへん、Googleお得意の技術的な対策等で解決できるものなんだろうか…。

とりあえず、スマホを持ってる子供達には、「アプリのレビューを眺めて、似たような文章が何度も投稿されてるアプリは、高い確率でヤバイから絶対に手を出すな」ぐらいのことを注意しておいたほうが良いのかも、と思ったり。いや、もしかすると、子供達のほうがこのへんの事情・見極め方については詳しいのかもしれないけど。
*1: ひょっとすると、そもそも Google Play じゃなくて、Google Play に見せかけた詐欺サイトだったりして…? でも、そんなサイト作れるものなんだろうか…。

以上、1 日分です。

過去ログ表示

Prev - 2013/08 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project