68user's page 掲示板

Prev< No. 2167〜2172> Next  [最新発言に戻る] [過去ログ一覧]
No. 2167 # 68user 2001/10/03 (水) 20:49:31
>>2165 けんじ
> ただ、perlやshではうまくいってくれるのですが
perl と sh と csh は全く別物ですけど、それは理解されてますか?

> 特になにも変更等していないのですが、、、、。
という文章は、sh で動いたものをそのまま csh でも動かそうと
しているように見受けられます。

> "ディレクトリースタックの番号指定が深過ぎます."
$d<=16 を d<=16 と書けばそうなります。


>>2166 かな
掲示板の一番上にある「使い方」を全く読んでいませんね。
# http://www.parkcity.ne.jp/~chaichan/qanda/qa1999.htm?01-10-03-19-11

No. 2168 # 2001/10/03 (水) 22:54:06
>>2158 68user
> print 文でデータを出力してみて下さい。そしたらどこで化けて
> いるかわかるでしょう。また、フォームが書いてある HTML の文字
> コードが何になっているかも調べて下さい。
やってみたら,どこで化けているかわかりました。
jcode::convert(\$str, 'euc');
で化けていて,これを削除したら化けなくなりました。
なぜでしょうか?
フォームが書いてあるHTMLの文字コードはeucにしています。
その場合は,コンバートする必要がないということでしょうか?
とりあえず解決したみたいなのですが(?),
気になるのでぜひ教えて下さい。

> $file1[9] が正しい、ってことでしょう。
あ,確かに。
本からそのまま写して問題なく動いていたので
全然気付きませんでした。
人に見せると恥ずかしいので,早速,修正しました。
ありがとうございました。

> その本は捨てましょう。
あはは(^^;
確かに,少なくとも私のような初心者は
正しい記述の本で勉強した方がいいでしょうね。
私でも気付くような間違いがあちこちにあることは確かです。
でも,プログラミングのアイデアというかミソというか
参考になる点もたくさんあって,結構重宝してます。

No. 2169 # ジュン [URL] [E-mail] 2001/10/04 (木) 01:33:36
とても初歩的な質問だと思いますが、教えて下されば幸いです。
掲示板を最近設置したのですが、サーバがアメリカにあるため
時差があるタイムスタンプをします。この時間を 16 時間早めたいのですが
どのような記述をすればいいのか、わからないのです。恐らく下記の一行が関係するのだと思います。

$TimeDiff = 0;

よろしくお願いいたします。また、過去ログを一応見ましたが既出の質問であった場合はお詫び申し上げます。

No. 2170 # 68user 2001/10/04 (木) 01:48:25
>>2168
> なぜでしょうか?
なぜでしょうね? 正確なところは各部分で
    s/([^-_a-zA-Z0-9])/sprintf("%%%02lX",unpack("C",$1))/eg;
として URL エンコードした結果を見ないとわかりません。

> フォームが書いてあるHTMLの文字コードはeucにしています。
> その場合は,コンバートする必要がないということでしょうか?
NN4, NN6, IE4, IE5 あたりなら、フォームの書いてある HTML と
同じエンコーディングで、フォームデータを送ってきますので、
フォームの書いてある HTML と、処理するデータのエンコーディングが
一致しているなら jcode::convert は必要ありません。

ただし、これは規格として明文化されているわけではないので、
あくまでも NN と IE がそういう挙動をする、ということです。
もし Shift_JIS や ISO-2022-JP で送ってくるブラウザがいた
場合は化けます。


>>2169 ジュン
> この時間を 16 時間早めたいのですが
言語は何ですか? 以下は perl だと仮定して…。

$TimeDiff をどのように利用しているのかわからないと
なんとも言えませんが、秒数なら $TimeDiff = 60*60*16、
時間なら $TimeDiff = 16 でしょうか。

localtime を使っているなら、その前の行に $ENV{TZ}='JST-9'; と
書いておけばうまくいくかもしれません。

No. 2171 # スナフキン 2001/10/04 (木) 01:59:50
> その本は捨てましょう。
う〜ん、ここは68userのボードなので構わないのですが、
なんか、2ch化しているようでちょぴりショックだなぁ(^^ゞ

多分typeでしょう、本当にその様に書くことを勧めているのであれば
68userさんと同じ意見ですが…
だけど、椎さんがコマンドの本来の項を読まずに、理解しようとしないで
コピーしているだけであれば、椎さんの手抜きでしょうけど(^^ゞ
まあ、自分もはじめはそうだったので人の事を言えませんが(笑)

ちなみに、テストの為にコンバートした短い文字列を表示していませ
んか?昔のネスケでの挙動ですが、短い文字列の場合はブラウザで文字
コードの判別がつかずに化ける場合があります。
その場合はそこそこの長文を表示すると、うそのように表示される場合
が有りました。
原因はSJISとEUCの文字コードが一部かぶる為です。(自分のスクリプ
トはSJISで記述の為)

あと、よくやるのがEUCでコンバートして出力していながら、CGIの他の
表示部分で違うコードを出力していたり(結構気付かなかったりします)
プログラマーな人は、この様な無駄なトラブルを減らす為にALL EUCで
作る人が多いようですね。

>プログラミングのアイデアというかミソというか
自分の場合は、他人のスクリプトを解析することでいろいろ覚えました。
リファレンス以外はこの手法が一番お勧めです。
無駄を省いたルーチンは誰が作っても大体同じようなものになるはずです。
この掲示板のソースだってかなり勉強になるはずですよ(^^ゞ

>>2166 かな
「使い方」を読むどころか、コピー文章ですね(^^ゞ
ここまで典型的なのもはじめて見ました(笑)


ところで、最近JAVAに嵌まっているようですが、JAVAはJavaScriptと
perlとどちらに近い印象でしょうか?>68userさん
敬遠していたJAVAも覚えた方がいいかなぁ、と思う今日この頃(^^ゞ

No. 2172 # /tk 2001/10/04 (木) 02:02:53
>>2168
> jcode::convert(\$str, 'euc');
> で化けていて,これを削除したら化けなくなりました。
> なぜでしょうか?
とりあえず, getcode 関数の戻り値を確認してみましょう。
http://www.mikeneko.ne.jp/~lab/kcode/jcode.html#h2-1
http://www.din.or.jp/~ohzaki/perl.htm#JP_Code

>>2157
>> スライス?
> すみませんが,意味がわかりませんでした。
ありゃ。すみません。
>>2158 68user
> $file1[9] が正しい、ってことでしょう。
という意味でしたが, 断言する自信が無いのと
もし, 意図的にやっている事ででしたら
その理由が聞きたかったもので…

ちなみにスライスについては
http://www.context.co.jp/perlnews/bn/perl-newsletter-0010.html
http://www.context.co.jp/perlnews/bn/perl-newsletter-0013.html
が参考になると思います。

Prev< No. 2167〜2172> Next  [最新発言に戻る] [過去ログ一覧]