2009年7月16日木曜日
C:\fakepath

勢い余って、IE8にアップグレードしてしまった。

でもって、ぼちぼちサイトの開発してたら問題が…

<input type="file"> のvalueが「C:\fakepath\ファイル名」になる。

これって、きちんとアップロードできるの?

そう思って、ググってみると、どうも無理っぽい(サイト構築し始めなので、ディレクトリ作ったりするのが面倒なので、本当に無理かは試してない)。
しかもIE8になってセキュリティ面の強化の賜物だとか。

でもって回避方法をメモっておく。


(1)セキュリティレベルの変更
「インターネットオプション」を開き、「セキュリティ」タブを選択。
ゾーンの中から「インターネット」を選択し、「レベルのカスタマイズ」を押下する。
で、ずーっと下の方の「その他」の中になある「サーバにファイルをアップロードするときにローカルのディレクトリパスを含める」を無効から有効に変更する。

(2)信頼済みサイト
同じく、「セキュリティ」タブのゾーンから「信頼済みサイト」を選択し、ゾーンの右下あたりにある「サイト」ボタンを押下する。
で、アップしたいサイトを信頼済みとして登録する。
「https」ではなく「http」の場合には、きちんとチェックボックスをオフにする、と。

まぁ、どうなんでしょう?

----------------------------------------------

ちょっと追記。
PHPとかはフツーにパスが取れるので、誤解なきよう。



0 コメント | コメントを書く | コメントの表示
2009年3月25日水曜日
「?param=value」で400エラー

Webサイト構築のお仕事中…

テスト環境での作業が終わったので、本番環境へ移行作業をせっせと実施。

サーバ管理者がダイジェスト認証を設定。

ログイン。

OK。

とりあえず管理画面へアクセス。
でもって、次のページへ…

行けません。

「400」だってさ。
「不正な要求」だってさ。

試してみると「abc.php?param=value」のようなURLがNGで、「abc.php」だと上手く行く。

テスト環境だと問題なかったのに…

GETパラメタの問題かなぁ?
PHPの設定かなぁ?
Apacheの設定かなぁ?

ん?
サーバ管理者のPCだと問題がない?
違いは?
僕のPCがIE6で、彼のがIE7?
なんでだろう?
他のPCでも試してみたけど、IE6だけがNGのようだ。
IE6固有の問題?
でもテストサーバじゃOKだったもんなぁ…

かれこれ2~3時間くらいでしょうか?

ついに突き止めました。

HTTP クライアントを作ってみよう(6) - Digest 認証編 -
http://x68000.q-e-d.net/~68user/net/http-auth-2.html

上記サイトにこう書いてある。

ただし、IE6 では Digest 認証を使って foo.cgi?FOO=BAR のような URL にリクエストすると、誤ったリクエストを送ってしまうバグがあります。以下の URL は Mozilla や FireFox では正しく閲覧できますが、IE6 だと正しいユーザ名・パスワードを送信しても、 400 Bad Request になってしまいます (Windows XP SP2 + IE6 で確認)。

えぇっ!?
どういうこと??

パケットを見てみると、IE が送信した Authorization ヘッダの uri には「?FOO=BAR」の引数部分が含まれていないようです。


はぁ…
たしかにApacheのログを見ると、「?」以降があるのとないのとを比較して、アンマッチとかってなってる。

これは IE のバグですが、いつまでたっても修正されないので、 Apache-2.0.51 からサーバ側で無理矢理対応する仕組みが設けられました。 httpd.conf や .htaccess に以下のように記述しておけば、 IE でも上記のような URL に正しくアクセスできます。


書いてあるとおりに、修正を行う。
他のVirtual Hostに影響を与えないよう、.htaccessに以下を挿入。
# User-Agent ヘッダに MSIE という文字列が含まれていたら、
# 環境変数 AuthDigestEnableQueryStringHack に「On」をセットする。
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On


正常に動きました。
php.iniのdiffを取りました。
httpd.confもdiff取りました。
相違点はここくらかと思ったけど、まさかダイジェスト認証が問題になるとは…
よく考えれば、テスト環境ではダイジェスト認証をかけてなかったわ。

辛いなぁ…



0 コメント | コメントを書く | コメントの表示
2009年2月24日火曜日
EVENTQUERY

久しぶりに投稿してみる。
最後に投稿して以来、仕事ではCとJAVAを併用して、今年に入ってからはPHPをごにょごにょしてたんだけど、今度はAccessになりそう。

で、少し前に居た常駐先で使ってたバッチを、自分の会社でも使おうとしたら、動かなくて…

このテの会社って出勤、退社時間って、自己管理なことが多い。
だけど、毎日Excelにぽちぽち入れてくのって、面倒だし、忘れるんだよね。
ってことで、週末なんかにまとめて入力するんだけど…
そういうときって、PCの起動時間を確認することが多い。

[スタート]→[設定]→[コントロールパネル]→[管理ツール]→[イベントビューア]

システムからeventlogの開始と終了を確認するんだけど、ま、面倒だよね。
なので、バッチを作ってみた。

検索部分だけピックアップすると、こんなイメージ。



CSCRIPT //H:CSCRIPT //S //NOLOGO

EVENTQUERY /FI "ID eq 6005" /FI "Datetime eq %MM%/%DD%/%YYYY%,12:00:00AM-%MM%/%DD%/%YYYY%,11:59:00PM" /L SYSTEM | GREP 6005>> log.txt
EVENTQUERY /FI "ID eq 6006" /FI "Datetime eq %MM%/%DD%/%YYYY%,12:00:00AM-%MM%/%DD%/%YYYY%,11:59:00PM" /L SYSTEM | GREP 6006>> log.txt




ID6005はeventlogの起動、6006は停止のID。
勿論、%YYYY%とかは、変数で設定させるんだけど…

出力結果にはヘッダ部分があるので、log.txtにはGREPで必要な行だけ落としてる。
でもCygwinとか入れないと、GREPは使えないので…

あとはFORとかでまわして、時刻だけ抜き出したりして、整形すればOK。


でも、常駐先の環境ではこれで動いたんだけど、自社に戻ったら、動かない。
CSCRIPT //H:CSCRIPT //S //NOLOGO
してるけど、CSCRIPTで動かせ!とダイアログが表示される。

仕方なく、
CSCRIPT C:\WINDOWS\SYSTEM32\EVENTQUERY.vbs
に書き換え。

なんだろう?



0 コメント | コメントを書く | コメントの表示
2008年5月9日金曜日
SET

せっかくなので、バッチファイルについて、もう少し。
正直、今更な話だけど、案外探すのが面倒なので、とりあえず自分用にここへ。

対話形式でなにかやろうとすると、コマンドプロンプト/MS-DOSって、どーしてもSETコマンドに頼らざるを得ない。
そんなときは

@ECHO OFF
SET /P TESTMSG=ここに何か入力してください。:
ECHO %TESTMSG%

として、バッチファイルを実行すると…
C:\>test.bat
ここになにか入力してください。:

で入力待ちになるので、なにか入力してエンターを押すと、入力された文字列がTESTMSGに格納される。
ECHOでそのTESTMSGを表示しておしまし。
C:\>test.bat
ここになにか入力してください。:テストメッセージ
テストメッセージ
C:\>


この場合、事前にTESTMSGになにかセットしておいても、入力で上書きされる。ただし何も入力をしないで、エンターを押すと、なにも格納されない。
なので、
@ECHO OFF
SET /P ANSWER=よろしいですか?[Y/N]:
IF /I %ANSWER% EQU Y (
ECHO 了解いたしました。
)

とかやると、何も入力しない場合にはANSWERは空のまま。IF文でエラーになってしまう。
C:\>test.bat
よろしいですか?[Y/N]:
Yの使い方が誤っています
C:\>

対策するなら、「"」で括るか、
@ECHO OFF
SET /P ANSWER=よろしいですか?[Y/N]:
IF /I "%ANSWER%" EQU "Y" (
ECHO 了解いたしました。
)

あらかじめ、なにか値を入れておくしかないのかな?(ここではデフォルトでNを入れてみた)
@ECHO OFF
SET ANSWER=N
SET /P ANSWER=よろしいですか?[Y/N]:
IF /I %ANSWER% EQU Y (
ECHO 了解いたしました。
)


こうやってSET /Pだとその値を変更/更新することができるんだけど…

うーん…
こうして書いてみると、なにか忘れてることがある気がしてならん。

あぁ、そうそう、このSETコマンドはやはり環境変数の操作を行うものだから、バッチが終わっても有効なのだな。
なので、処理の最後で
SET 変数名=
で解放するか、処理の最初で初期化(解放と同じ)する必要があるね。

さっきの「よろしいですか?[Y/N]」のバッチだと、1回目にYと入力したあとすぐ2回目を実行し、空エンターで再度IF文に入るのだが、1回目に格納したYが未だ入ったままであるため、IF "入力" == "Y"が有効になってしまう。


…まぁ、とりあえずこんなカンジで書いていこうかと思ってる。
備忘録代わりってことでさ。



0 コメント | コメントを書く | コメントの表示
2008年4月16日水曜日
フォルダ(ディレクトリ)が空かどうか

客先によっては、自分なりの環境を整えるのが難しいところがある(最近は多い)。
なので、バッチファイルって意外と重宝する。

でもって、気になって調べてみると、今更ながら情報って少ないねぇ。
なんつーか、探しきれてないのだろうけど。

で、ここ数日悩みのタネだったのが、タイトルにあるとおり、フォルダの中身の調査。
何故必要かはおいといて、調査結果を…

基本、2ch情報だけど、こういうのがあった。

ユーザー必読!コマンドライン(DOS Pt.6)
http://pc11.2ch.net/test/read.cgi/win/1176558776/124-125

124 :名無し~3.EXE:2007/06/16(土) 19:02:59 ID:CXEmvWRn
DIR /B "C:\hoge" | FIND /V "" > NUL で ERRORLEVEL=1 なら空。
ってのは強引?

125 :名無し~3.EXE:2007/06/18(月) 01:45:27 ID:H6wUdAfo
読みやすさ優先ならfor /r と set /a ってなところだろうけどねぇ


124のは単純だね。DIRで取得した結果が空じゃなければERRORLEVELは0だから。
あとはIF文をどうするかってことだね。

ってことで、125のやつ。
これは、FORでフォルダ内部のファイルを列挙して、SET /Aで数を数えるってことかな?
@ECHO OFF
SET /A CNT=0
FOR /R パス %I IN (*) DO (
SET /A CNT=CNT+1
)

これでCNTがゼロでなければファイルはあることになるので、フォルダは空じゃないと…

しかし、SETで計算できるの知らなかったな。
もう少し、修行が必要かな?


2008/05/01 - 追記
バッチファイルなら、%を重ねないといかんなぁ。
ケアレスミスです。
で、ECHOしてみた。
@ECHO OFF
SET /A CNT=0
FOR /R パス %%I IN (*) DO (
SET /A CNT=CNT+1
)
ECHO %CNT%

こういうのを知ってると、結構使える場面が… ないか。



0 コメント | コメントを書く | コメントの表示
2008年4月4日金曜日
Webメールクライアント - Windows Live メール

常駐先より、帰還してまいりました。
ぼちぼち再開ってことで。

久しぶりに、新しいソフトを入れてみた(Lunchyの記事も書こうかな?)。

WebメールとしてはHotmailとGmailを使ってるんだけど、メインのメールクライアントはBecky!なんで、ちょっとWebメールとは連携がイマイチ。
プラグインもあるんだけど、Hotmailは受信のみだったりして、ちょっと使い勝手が悪い。
そこで、色々と探した挙句、Windows Live メールというのを使ってみることにした。

ダウンロードはここから↓
Windows Live メール - 概要

さて、システム要件ですが、XP(SP2)にVistaってことで、自宅PCからは利用不可(Windows 2000ですから)。
仕方ないね。

でもって、インストールしてみた。


起動してみると、Becky!に登録してあった2つのアカウントのうちひとつだけがインポートされてた。
Becky!もあるし、とりあえずこれは削除。

でもって、右上に「サインイン」が。

クリックしてサインインすると、そのアカウントのHotmail(今はWindows Live Mailか)が登録されるみたいなんだけど、複数のアカウントを登録するには、このアイコンから

「すべてのメニューを表示する」にチェックを入れて、通常の「ファイル」「編集」「表示」などのメニューバーを表示させる必要がある。
で、その「ツール」からOutlookと同じようにアカウントを追加できる。
勿論、Hotmailだけじゃなく、Gmailも(GmailはGmail側でPOP許可設定に変更する必要がある)。
最初からHotmail、Gmailに対応してるだけに、アカウントを入れるだけで、きちんと設定できるので、便利。

基本的には、一旦ダウンロードする必要があるので、サーバ側との連携がどうなのかちょっと気になるところだけど、しばらく使ってみよう。

ソフトとしての使い心地は、Outlookと同じかな?
細かい動作なんかは、Hotmailのサイトと同じなので、受信拒否の送信なんかもできるみたい。

常駐先じゃ、Webメール禁止なところが多いから、使用頻度が減ってるので、あまり複雑なことしないからね。
単純に一括管理用だから。いちいちブラウザひらいてログインしてっていうのをいくつも繰り返すよりははるかにマシです。
ま、基本Becky!だし、出社時と退社時にチェックする用ってことで。



0 コメント | コメントを書く | コメントの表示
2007年10月21日日曜日
Windows XP の検索犬

常駐先でPCを渡されるたび、いつもイライラするのは、Windowsで検索するときに登場するあの犬。
いや、別に犬のアニメーションはどーでもいいんだけど、あの検索ってやたらと使いにくい。
なので、消す方法を。

まぁ、検索すりゃあいくらでも出てくるんだけど、毎回探すのもなんだから、ここに書いておく。
そのためのblogだからね。

レジストリに以下の値(文字列値)を追加する。

HKEY_CURRENT_USER->Software->Microsoft->Windows->Current Version->Explorer->Cabinet State->Use Search Asst : no

これで消える。



0 コメント | コメントを書く | コメントの表示
2007年9月3日月曜日
一発でウィンドウのリサイズ - SIzer

これはどこで見たのか、完全に忘れてしまった。

ウィンドウの端で右クリックすると下の画像のような窓が現れて、一発でサイズ変更してくれるソフト。



設定画面はこんなカンジ。



サイズ変更とともにウィンドウの場所も指定できるみたい。

少し前の仕事だったら、ウィンドウをいくつも渡り歩く必要があったので、朝の準備にこういうのはよかったかも(でも、ウィンドウのサイズや場所って覚えてるんだよな。そのときはバッチファイルでウィンドウ4つとプロンプトを開いてたけど)。

タスクマネージャ上では4,920Kと、まぁ、わりと軽いね。

Sizer
http://www.brianapps.net/sizer.html



0 コメント | コメントを書く | コメントの表示
2007年8月31日金曜日
Taskbar Shuffle

基本的にはウィンドウはたくさん開かない。
まぁ、以前はスペックの低いマシンを使っていたってこともあるし、自宅じゃせいぜいアプリひとつ(例えばブラウザ、メディアプレイヤくらい)とエクスプローラくらいだから。
ひとつのことしかしないからね。

仕事でも出来る限り不要な窓は開かない方針なんだけど、あれこれやってるとそうはいかない時もある。

窓の切り替えは「Alt + Tab」なんだけど、マウス使ってる時はやっぱりタスクバーをクリックする。
そんなとき、一番使うのが一番奥(左端)にあったりして、ちょっと…
窓を行き来する時に、隣同士になかったり…

そんな時の強ーい味方がコレ。

Taskbar Shuffle

このblogで紹介されてて、早速入れてみた。
タスクバーの中ならフツーにドラッグ&ドロップで入れ替え可能。


タスクトレイは「Ctrl」を押しながらで移動が可能。まぁ、こちらはそうそう動かす必要はないと思うけど。


ここでCtrlを押しながら、ドラッグすると…




これを入れた頃には、仕事が落ち着き、動かす程も窓が開いていないという…

ちなみにタスクマネージャで見てみると、メモリは6,356K使用。
どうなでしょ?


参考URL
タスクバーやタスクトレイで並べ替えができる無料ツール『Taskbar Shuffle』 | P O P * P O P
http://www.popxpop.com/archives/2007/07/taskbar_shuffle.html


home of the nerd cave | taskbar shuffle and more
http://www.freewebs.com/nerdcave/taskbarshuffle.htm



0 コメント | コメントを書く | コメントの表示
2007年8月20日月曜日
cal

やっと…

やっとCygwinでcalが使えるようになった。
Cygwinを入れた目的の数%はcalを使いたかったってのもある…ってゆーのは大袈裟だけど。

「util-linux」というパッケージを入れなきゃならんとは、気が付くかよ。

JFのサイトだけど、一応参考までにリンクを。

Util-linux
http://www.linux.or.jp/JF/JFdocs/LFS-BOOK/appendixa/util-linux.html


元記事
HOMEGROWN | cal
http://homegrown.jugem.cc/?eid=241



0 コメント | コメントを書く | コメントの表示
Cygwin 環境設定(3) - lessの文字化け

最初、全然気がつかなかったんだけど、そのままじゃ less が文字化けするのね(接続したサーバによっては新しいものが取得できるかもしれないけど)。

色々検索すると、どうやら Cygwin JE で日本語対応の less が入手できるらしい。
このURLにアクセスして、
http://cygwin-je.sourceforge.jp/cygwin_je/release/less/
ブツをダウンロードする、と。
僕が見たときは「less-358_iso254-3.tar.tar」だったけど、今見たら「less-358_iso254-3.tar.bz2」になってるね。なんでだろ?

まぁ、ダウンロードしたtar(tar.bz2)を展開して… 「/」に置いて展開したら、適当なディレクトリに入れてくれたので、特に気にすることもなかったんだけど。一応、「/tmp」かどっかで試した方がいいかもね。

これでCygwinからは less も問題なく使えるんだけど…


(追記)
結局は、「setup.exe」の「other site」に「http://cygwin-je.sourceforge.jp/cygwin_je/」を放り込んどきゃよかったって話かな?

参考URL
Using Cygwin. Compiled package
http://sohda.net/cygwin/#compiled


(追記2)
ためしにコマンドプロンプトでlessを使ってみた。
コマンドプロンプトから、例えば

dir | less

としてみると…
<83>

とかがズラッと。

そもそもコマンドプロンプトで使うなよって話なんだろうけど、Cygwinはちょっと起動が遅いし、Poderosaのようなのを起動させるのもなぁ…と思うと、「win+r」で「cmd(.exe)」を叩いた方が早いなぁ、とか思っちゃう。

基本的にはmore派だからいいんだけど、問題解決はしておきたい。

…と、よく考えてみたら、これってHeartache Reborn: lessの不思議で書いた内容と同じじゃんか。

直接入力するのなら、
dir | less -r

で解決する問題だった。
やっぱりWindowsにもaliasが欲しいけど…

元記事
HOMEGROWN | Cygwin 環境設定(3) - lessの文字化け
http://homegrown.jugem.cc/?eid=214



0 コメント | コメントを書く | コメントの表示
Cygwin 環境設定(2) - viで日本語を使う

ようやく、Cygwinのviで日本語を使う方法が判明。
ホームディレクトリに .vimrc を作って…

set encodin=japan
set fileencodings=sjis


を書き込む。

マァ、フツーに.vimrcだったね。
これですっきりした…

元記事
HOMEGROWN | Cygwin 環境設定(2) - viで日本語を使う
http://homegrown.jugem.cc/?eid=213



0 コメント | コメントを書く | コメントの表示
Cygwinの環境設定

一応、参考にさせてもらったサイト
etc #020 ≪cygwinで日本語入力をする方法≫
http://www.nurs.or.jp/~ppoy/access/etc/etc020.html
ログインユーザのホームディレクトリにある「.inputrc」を編集します(無い場合は作成)。
以下の内容を追記する。

set kanji-code sjis
set convert-meta off
set meta-flag on
set
output-meta on

ま、viが入っていれば、立ち上げたCygwinから「vi .inputrc」で開けばいい。
これで日本語の入力ができるらしい。

…が、日本語名で「touch」しても、「ls」で文字化けしてる。

でもって、今度は表示の方。
これは「.bashrc」を編集する。
export JLESSCHARSET=japanese-sjis
alias ls='ls --show-control-chars'

※JLESSCHARSETのパラメタって、よく判らないね。
「source .bashrc」で再度読み込ませてもいいんだろうけど、一旦ウィンドウを閉じて、Cygwinを再度起動させた。
…と、正常に日本語が扱えるのを確認できました。
meta-flagを忘れてたけど、正常に動いたなぁ

続いて参考にさせていただいたのは、ここ↓
【特集】Windowsユーザーへ贈るUnixへの架け橋 - Cygwinを使いこなそう (MYCOMジャーナル)
http://journal.mycom.co.jp/special/2002/cygwin/menu.html
ここの中に、Cygwinを起動しなくても、UNIXコマンドを使う方法が載ってた。
【特集】Windowsユーザーへ贈るUnixへの架け橋 - Cygwinを使いこなそう (5) 環境設定と簡単な使用方法(1) (MYCOMジャーナル)
http://journal.mycom.co.jp/special/2002/cygwin/004.html
一言で言うなら、「PATHを通す」ね。
「マイコンピュータ」→「プロパティ」→「詳細」→「環境変数」で、ユーザかシステムの環境変数の「PATH」に「c:\cygwin\bin」を追加するだけ。
こちらはUNIX系OSと違って、読み込み直す必要はないので、「ファイル名を指定して実行(win+r)」あたりからプロンプトを起動させて、「ls」とかしてみると…

日本語表示できねーじゃんか!
よく考えてみれば、コマンドプロンプトからのlsはエイリアス設定が効いてない。
Cygwinからだとlsはls --show-control-charsに置き換わるワケだけど、コマンドプロンプトからじゃ、lsはlsのまま。
試しにls --show-control-charsを実行すると正常に日本語が表示される。
んんー、どうしよう。
中途半端な。

元記事
HOMEGROWN | Cygwin 環境設定
http://homegrown.jugem.cc/?eid=205



0 コメント | コメントを書く | コメントの表示
Template Design: © 2007 Envy Inc.