Jump to navigation
| 1 |
2006年 9月 04日 (月曜日)
- Events on miau's blog?
2006年 9月 05日 (火曜日)
- General on miau's blog?
結構前のことですが。
ある Web フォームで submit を行った後、ブラウザの「戻る」ボタンで入力画面に戻るとフォームの内容が消えてしまう、という指摘を受けたことがありまして。
手元で確認してみると、確かにその通りの現象が。
んー・・・?普通「戻る」ボタンを押した場合、入力値とかはブラウザにキャッシュされるわけで。そういう現象は起こり得ないような。
no-cache とかそのへんの問題かなー?
と色々調べてみたんですが、解決の糸口が見つからず。
仕方ないのでぼーっと画面をいじってると、「戻る」を二回押すとフォームの値が復活するっぽいことが判明。
で、ふとフォームの入力に bookmarklet 使ってることを思い出しまして。
ためしに bookmarklet を使わずに入力してみると、「戻る」一回でちゃんと値が入力されてました。
よくわからないけど、bookmarklet の URL もちゃんと history に残ってるみたい。で、bookmarklet の URL ではフォームの値は保持されない、と。
知ってたらどうってことなかったんだけど、知らなかったのでやたら時間かかりました。
ちなみに Firefox ではそういう現象は起きないっぽい。
今家で動作確認すると、IE なんだけど bookmarklet の URL でもフォームの値が消えたりはしないみたい。IE7 のせいかなんなのか。
2006年 9月 07日 (木曜日)
- General on miau's blog?
Google Code Jam 2006
また Qualification Round で撃沈しました。
とりあえず軽くレポートでも。
[Read More!]
- General on miau's blog?
改行コード変換ツールとか - miau's blog?
以前このアイテムを書いたときに、KanjiTranslater 1.3 というのを紹介しました。インターフェイスは気に入ってるんだけど、何やらエラーが出て使えなかったわけですが。
その後も文字コード変換で困ったりしてて、職場の人に「いいツールありますよ」と紹介されたのがこれだったり。どうやらバージョンアップしてて、このエラーが解消されているようで。
# いつの間にか ter が tor になってるし。
文字コード変換ツール「KanjiTranslator」
そんな感じでお薦めです。
あとは文字コード指定で「変換しない」とか選べたらなお嬉しいんだけど。
2006年 9月 08日 (金曜日)
- General on miau's blog?
思い切り誤解してた。
マニュアルに、
Similar to Pear DB's quote it will escape a value, without the quotes,
so it can be used with a LIKE query.
って書いてるんだけど、LIKE で使う「%」や「_」はエスケープしてくれない。
自前でエスケープするしかないっぽい。
(追記)
さらに誤解してた。
PostgreSQL では LIKE のエスケープ文字がデフォルトで「\」になってるので、わざわざ ESCAPE '〜' とか書かなくていい。つまり、「%」を検索するには hoge LIKE '%\%%' と書けばいい、と。ここまではマニュアルでちゃんと読んでた。
でも、「\」自身を検索するには、hoge LIKE '%\\\\%' と「\」を 4 つ繰り返す必要があるらしい。ここ、ちゃんとマニュアルに書いてたんけど、見落としてた。(テストのときに初めて気づいた)
よく考えると、シングルクォート文字列の解析フェーズと LIKE パターンの解析フェーズが別なので、二回エスケープが必要に決まってる。
そんなわけで、
$hoge = mb_ereg_replace('\\\\', '\\\\', $hoge);
$hoge = mb_ereg_replace('%', '\\%', $hoge);
$hoge = mb_ereg_replace('_', '\\_', $hoge);
$tbl->whereAdd("hoge LIKE " . $tbl->escape($hoge) . ");
みたいな処理になる、と。
'\\\\' を '\\\\' に置換してるように見えるけど、ここも第1引数がパターンを表すのに対して、第2引数が普通の文字列を表すからこうする、と。ここもハマった。
2006年 9月 13日 (水曜日)
- General on miau's blog?
ちょっと前に出た問題。
先日 Web サイトのリニューアル案件があったんだけど、旧コンテンツからの Cookie を引き継ぐ必要がありました。
ちなみに Cookie の名前は「www.example.com.hogecode」とか。わざわざ名前にドメイン名入れてるってことは Cookie の仕組みわかってないんじゃないかなー、なんてことを思いつつ、新サイトでも同名の名前で Cookie を使おうとしたんですが。
setcookie("www.example.com.hogecode", "hoge");
としたものが
$_COOKIE["www.example.com.hogecode"]
でなぜか取得できない。
[Read More!]
- General on miau's blog?
Shebang (Unix) - Wikipedia, the free encyclopedia
先日ミーティング中にこれについて説明しようとして。
「えーと・・・あの一行目に書くやつ。英語ではしぇばん?とか書くんですけど日本語では何ていうんでしょうね?というか読み方『しぇばん』でいいんですかね?まぁシャープびっくりで始まる行・・・」
みたいなしどろもどろな説明になって恥ずかしかったので、調べてみた。
#!を何と読む - いなた屋 - livedoor Wiki(ウィキ)
色々あるっぽいけど、発音聞いた感じその他で「シェバング」を個人的に採用。日本語で説明する場合も「シェバング行」でいいや。
2006年 9月 14日 (木曜日)
- General on miau's blog?
ffftp quick hack をさらに hack - miau's blog?
これ作ったときに、さらに追加したい機能として
○最後の n byte を表示
巨大なログファイルの末尾だけを見たいような場合に。
レジューム周りの機能をうまく流用すればできないかな、とか。
というのを書いたんですが、仕事中待ちが発生したので試してみました。
インターフェイスをいじるのは面倒だし、まずは「ビューワ2でリモートファイルを開いた場合、先頭の n バイトをスキップしてダウンロードする」という処理にしてみよう。
これだけならかなり簡単で、main.c の 1740 行目付近?を
if (App == 1) {
MainTransPkt.Mode = EXIST_RESUME;
MainTransPkt.ExistSize = 1;
} else {
MainTransPkt.Mode = EXIST_OVW;
MainTransPkt.ExistSize = 0;
}
に書き換えるだけ。
で、実際に動かしてみると・・・
FFFTP:エラー
このホストはリジュームをサポートしていません。
上書きしますか?
とか言われた。メインの開発機で使えないなら実装してもあまり意味ないな。やめ。
2006年 9月 20日 (水曜日)
- General on miau's blog?
以前メモったつもりが忘れてたみたいなので。
イメージの作成には EasyVMX! を使うと楽。
EasyVMX!: Create Virtual Machine
OS の bootable CD があれば特に .vmx いじらなくてもすぐにインストールできる。
でも CD ドライブが複数ある場合(Daemon tools を使ってる場合も)、CD-ROM ドライブとして別のドライブが認識されたりしてハマることが。
ide1:0.fileName = "F:"
ide1:0.autodetect = "FALSE"
みたいな感じでドライブを明示的に指定すれば OK、と。
早速 VMware Server 使えとツッコまれた。そういえばそういう記事も見覚えあるような無いような。
情報収集怠ってるのがバレバレですね。
2006年 9月 22日 (金曜日)
- General on miau's blog?
今メインの開発機は Solaris なんですが、今まで AIX とか Linux とか半端に勉強してるもんで、コマンドが色々わからなくて困ったりします。先日も top コマンドが無くて困ってたんですが、ググったらすぐ発見できた。
Solaris Workshop
「なんで Solaris には "top" が無いんだよ!!」という分かりやすいタイトルがなんとなく気に入りました。
他にも「Linux で言うところの○○コマンドって無いのかな」みたいな機会は多いので、いいページを探してたんですが・・・それっぽいの発見。とりあえずメモメモ。
Unix Porting - Unix Cross Reference
ついでに Sleipnir の履歴にいつまでも残ってたこれも貼っとこう。
各ディレクトリの役割を知ろう(ルートディレクトリ編)(1/2)
Solaris どうとかじゃなくて *nix 全般に弱すぎな気が。情報処理試験が終わったら LPI でも受けるかな・・・。
2006年 9月 23日 (土曜日)
- TextEditor on miau's blog?
【萌える】 萌ディタ スレッド part2【エディタ】 を眺めてると、こんなレスが。
170 :名無しさん@お腹いっぱい。:2006/09/14(木) 14:42:22 ID:BqLw+oOq0
認識能力が貧弱なんじゃなくて
実は英語の生asciiコードみたいに、sjisかeucかく別が付かないとき不便
わかんないならとりあえずsjisなんだろうと思って開いて、間違っていたとき
にeucで開きなおせるとかの法がいいかな
utf32対応とか縦書きとかの贅沢機能以外は、ほぼ完成しているように見える
からデバッグとUIの改良かな必要なのは
家では萌ディタをメインのエディタとして使ってるけど、確かにその通り。
でも「どちらともみなせる場合自動的に Shift_JIS にする」くらいなら簡単に改造できるんじゃない?と思ったのでやってみた。
[Read More!]
2006年 9月 24日 (日曜日)
- TextEditor on miau's blog?
patch for PerlScript 5.8.7.813 - miau's blog?
以前こんなパッチ作りましたが、最後に追記してあるように 5.8.7.815 とか 5.8.7.817 とかだとパッチ適用に失敗します。変更箇所は同じなんですけど、CRC チェックに引っかかるのが原因。
今日 WDiff 触ったので、ついでにこのパッチの CRC チェックを解除しようと思ったんですが・・・「CRCエラー発生時」を「中止する」から「無視する」に変更した場合って単純に処理がスキップされるんですね。「CRC が違っても無視してパッチ当てる」意味かとばかり。
じゃあ WDiff 以外の方法でパッチ作るしか・・・というところでふと思ったんですが、ファイル中のバイナリ値を置換するだけなら Perl でやればいいですよね。コマンドラインから
cd /d C:\Perl\bin
perl -Mopen=IO,win32 -pi".OLD" -e"s/\xFF\x74\x24\x18\xFF\x15\xE8\x90\x1C\x28\x59\x8B\xF0\xFF\x74\x24\x10\x8B\xCB\x8D\x46\x02\x50\xE8\x64\xFF\xFF\xFF\x8B\xF8\x85\xFF\x74\x14/\x57\x57\x57\x57\x6A\xFF\xFF\x74\x24\x2C\x57\x57\xFF\x15\x74\x90\x1C\x28\x8B\xF0\x57\x8B\xCB\x40\x50\xE8\x62\xFF\xFF\xFF\x8B\xF8\x90\x90/" PerlSE.dll
こんな感じで実行。旧ファイルが PerlSE.OLD にバックアップされるので、そこそこ安全なはず。
改行コードが勝手に変更されるのを防ぐのに use open IO => ':win32' っぽいことやってるけど、本当にこれでいいのかちょっと自信なし。間違ってたら教えて下さい。>詳しい方
ちなみに
・ActivePerl 5.8.7.817
・ActivePerl 5.8.8.819
・ActivePerl 5.8.8.820
では動作確認済み。気が向いた方は他のバージョンでの確認もお願いします。
検証用スクリプトはこんな感じ。
# ああああああああああああああああああ
# ああああああああああああああああああ
# ああああああああああああああああああ
MsgBox('PerlSETest - OK');
PerlSETest.pls とかいう名前で保存して、Explorer から実行してください。
メッセージボックスが出たらパッチがちゃんと当てられてる感じ。パッチ当ててない場合は、たぶん何も起きない。(変なエラーになる可能性もあるけど)
(2007/01/30 追記)5.8.8.820 でも動くっぽい。
(2007/09/29 追記)
もっと楽に実行できるバージョンも作ってあります。
patch for PerlScript 5.8.x.xxx(PerlScript版) - miau's blog?
2006年 9月 25日 (月曜日)
- W41CA on miau's blog?
どうでもいいメモ。PCサイトビューアで eval() する場合、その文字列長は 2^18 = 262144 付近まで OK。
今作ってる bookmarklet の動作がおかしくて、eval() に文字数制限があるのかと疑ったけど・・・これだけ長い文字列を eval() できってことは違うっぽい。
(2006/09/26 追記)
原因判明。どうも eval() 内でループ用変数を置き換えてるのが問題っぽい。
(function() {
var l = document.scripts.length;
for (var i = 0; i < l; i++) {
eval(document.scripts[i].text);
}
})()
みたいなことをやってたんだけど、eval 内部で l とか i とかが変更されていた、と。
(function() {
var l = document.scripts.length;
for (var i = 0; i < l; i++) {
Function(document.scripts[i].text).apply(window);
}
})()
こんな感じでよさげ。
window は省略できそうだけど、まぁいいや。
2006年 9月 26日 (火曜日)
- W41CA on miau's blog?
またどうでもいいメモ。PCサイトビューアで使える URL の文字長は 1024 文字までっぽい。そろそろブックマークレットの限界が見えてきた。
ちなみにクリップボードは 234 文字くらい?
2006年 9月 28日 (木曜日)
- General on miau's blog?
気がついたら
ctags日本語対応版 が更新されてた。
ctags5.6J1 (2006/06/12)
・5.6対応リリース
何が変わったんだろう?ということで、
Change Notes 見てみると・・・大して仕事には影響なさそう。でも、
* Fixed incorrect tag for first field of table [SQL].
の一文が気になった。
へー、SQL もタグ生成できるんだ。ちょっと試してみよう。
[Read More!]
| 1 |