投稿者「wt」のアーカイブ

Mac OS X 10.6インストール

超久しぶりに、10.6をインストール、中古のMac miniを59,000円も出して購入して。インストールして放置しておいたらクラッシュしてた。サーバに使おうとしていたので、スリープしない設定にしてスクリーンセーバーが起動したためか、と思ってスクリーンセーバーを止めたら落ちなくなった。
何かおかしいのでもう一度インストール、ディスクを初期化、ゼロクリアして、新規インストール。続けて附属のソフトをインストールしたら失敗。2枚目のDVDのアプリについてはまったくインストールできない。これでは問題。ネットにつなげてインストールすると、今のソフトが自動で入ってしまうのではないか、と考えて、ネット接続しないで最小限のインストールしてみた。
どうやら正解で、エラーはない。追加のソフトは入れていないが、スクリーンセーバーも正常に動く。何日か放置していても落ちることはない、普通だ。

次はxamp 1.0.0
その前にOSを10.7にするかどうか。

2つの画像を比較する

今回は画像サイズの話。フォームに表示した画像変数がコピペやドラッグ&ドロップで変更された場合をキャッチしようとしていました。
On Data Changeを使うと同じ画像をペーストされた場合を識別できません。
リファレンスにEqual picturesというコマンドがありました。これだと思って使ってみるとうまく動いてくれません。
単純化して調べてみると、同じ画像を代入した2つのピクチャー変数を比較するとFalseが返ってくるのです。同じ画像を代入したのに等しくないと。マニュアルが間違っていて戻り値が逆?、変数の領域が異なる?とか、いろいろ考えてはまりました。
どうやら画像が空の場合にFalseになるのだと気づきました。そこでサイズを調べてみたら、サイズがゼロの時にEqual picturesはいつもFalseを返す、のでした。

//関数名:BL03_PIC_load
//20150206 wat
//画像をロードしてフォームに表示、途中で変更されたかどうかを調べようと、
// 4D v13で実装されたEqual picturesを使ってみる。

C_LONGINT($1;$pic_id)
$pic_id:=$1

C_PICTURE($mask)
C_BOOLEAN($isEqual)
C_TEXT($m)

READ ONLY([PIC_SET])
QUERY([PIC_SET];[PIC_SET]PIC_ID=$pic_id)
$numOfRecs:=Records in selection([PIC_SET])
If ($numOfRecs=1)

//同じ画像フィールドから2つの変数にピクチャーをロード
vBL03_varPIC_LOGO:=[PIC_SET]PIC_LOGO
vBL03_varPIC_LOGO_onload:=[PIC_SET]PIC_LOGO

//画像を比較すると
$isEqual:=Equal pictures(vBL03_varPIC_HEAD;vBL03_varPIC_HEAD_onload;$mask)
$m:=$m+”PIC_HEAD $isEqual=”+String($isEqual)+”,”
ALERT($m)
// Falseが返ってくることがある????  そこでサイズを調べてみた

C_LONGINT($picSize;$picSize_onload)

$picSize:=Picture size(vBL03_varPIC_HEAD)
$picSize_onload:=Picture size(vBL03_varPIC_HEAD_onload)
$isEqual:=Equal pictures(vBL03_varPIC_HEAD;vBL03_varPIC_HEAD_onload;$mask)

$m:=”BL03_PIC_load: ”
$m:=$m+”PIC_HEAD $isEqual=”+String($isEqual)+”,”
$m:=$m+” $picSize=[“+String($picSize)+”]”
$m:=$m+” $picSize_onload=[“+String($picSize_onload)+”]”
ALERT($m)

End if

リファレンスをよく読んでみたら書いてありました。Equal picturesは空のピクチャを与えると正しく実行されなかったとしてシステム変数OKにゼロを返す、と。要はEqual picturesは正しく実行されたかどうかを判定してから比較結果を評価しなくてはならないのでした。
ここで2者択一問題が発生しました。

1)OK変数が1の時だけ比較値を評価する
2)画像サイズがゼロの時はそもそもEqual picturesを実行しない

さてどちらでしょうか。サイズがゼロ以外にOK変数がゼロになることがあるのでしょうか?

「サイズがゼロでもゼロ以外でもEqual picturesがエラーの場合、アプリは画像は変化しなかったと見なす」

として問題は無いように思えます。いやもとい、片方の画像サイズがゼロでもう片方がゼロじゃなかったらエラーになる、という意味でしょうから

今回は次のコードを正解としました。

//Jiro_pic_isEqual
//20150207 wat
//2つの画像を比較して同じかどうかを調べる

C_PICTURE($1;$pic1)
$pic1:=$1
C_PICTURE($2;$pic2)
$pic2:=$2

C_PICTURE($mask)
C_LONGINT($pic1Size;$pic2Size)
C_BOOLEAN($0;$isEqual)

$isEqual:=Equal pictures($pic1;$pic2;$mask)
If (OK=0)

// OK変数の値がゼロの場合はサイズがゼロの可能性がある
//どちらか一方だけがゼロの場合:OK変数がゼロ、比較結果はFalse
//または両方ゼロじゃない場合:OK変数が1、比較結果は画像が同じならTrue画像が違えばFalse

//失敗の場合、画像サイズが同じゼロならツゥルー
$pic1Size:=Picture size($pic1)
$pic2Size:=Picture size($pic2)
If (($pic1Size=0)&($pic2Size=0))

$isEqual:=True

Else

//現時点では失敗の場合フォルスが返されているが念のため
$isEqual:=False

End if

End if

$0:=$isEqual

yamahaルータRT1200の管理画面、Safariは対応していない

ヤマハRT1200の設定を変更しようとしてよくやってしまうのですが、ブラウザで192.168.0.1を開く、ダイアログが表示される、ここまでは反応してくれるので、正しいパスワードを入力すれば管理画面が表示される、と期待してしまいます。ですが、Safariには非対応なのです。

RTX1210では改善されて、Safariでも表示されます。

詳しく説明しましょう。

最初のログイン画面で表示されるダイアログで、ユーザ名とパスワードを空白の状態で[ログイン]をクリックまたはリターンキーを押すと、通常はこれで管理画面が表示されます。次に管理者権限を行使するために【管理者向けトップページへ】をクリックした場合に、パスワードだけを入力します。

ところがSafariでアクセスすると、次のように表示されます。firefoxでは管理画面は表示されます。

—– 画面表示 ここから —–
パスワードエラー
説明
ルーターに設定されたパスワードを正しく入力しなければ、GUI機能を使用することはできません。
GUIにはログインパスワード(login password)で使用できるページと、管理者用パスワード(administrator password)で使用できるページの二種類が用意されています。それぞれ区別して認識されますのでご注意ください。 パスワードは必ず半角の英数字で入力してください。全角文字は使用できません。また大文字/小文字の違いも区別します。
ブラウザの認証ダイアログにはユーザー名の入力欄がありますが、これを入力する必要はありません。 ログインユーザーの設定を追加済みで、そのユーザーとしてログインしたい場合にのみ、ユーザー名を入力します。
ブラウザに古い認証情報が残っているために、ログインできないことがあります。ユーザー名を削除してパスワードを入力し直すか、ブラウザを一旦終了してから、アクセスしなおしてください。
パスワードを忘れてしまったとき
万が一パスワードを忘れてしまった場合は、本機の設定を行なった管理者に、正しいパスワードをお問い合わせください。 また、管理者がパスワードを忘れてしまった場合は、本機に同梱されている取扱説明書に記載されている方法で対処することが可能です。特別な方法ですので説明書をよく読み、ご対応ください。
—– 画面表示 ここまで —–

これ、わかっているようで、覚えていないことが多くて、今までに何回もパニックになっています。メッセージがパスワードを間違えたときと同じメッセージが表示されるため、パスワードを間違えて入力したと勘違いしてしまいます。もともとパスワードは無いので文庫番のパスワードデータベースファイルを検索してもパスワードは出てこない、という具合に気づきにくいのです。特にお客さんの事務所で作業中にこれに遭遇すると、もうおわかりですよね。

Safariを使わなければいいのでしょうが...