したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

ファンレターボックスの設計に関するスレ

1arakawa77 ◆LAS....VNE:2008/04/27(日) 13:35:20
ファンレターボックスの設計に関するスレです。
作成者は全くと言っていいほどCGI/Perlに関する知識がない為、
機能追加に関しては極めて困難な状況です。

初っ端から弱気全開ですが出来る限りの事はやっていきたいと思います。

2名無しさん:2008/04/27(日) 17:52:17

【設置サーバ情報】
 プロバイダ: さくらインターネット レンタルサーバ <スタンダード>
 OS: FreeBSD 6.1-RELEASE-p21 i386
 Webサーバ: Apache/1.3.39 (Unix)
 使用可能容量: 1GB
 コマンドパス
 Perl 5.8 :  /usr/bin/perl

【設置CGI情報】
 アプリ名: ヒロ・データベース(http://www.hero.ne.jp/~db/
 ディレクトリ構造:
 
 ディレクトリ構成例 [パーミッション] <備考>
herodb    
  |    
  |-- img        [755]  
  |   |-- edit.gif  [644] <その他画像あり>
  |    
  |-- sample      [777]  
  |   |-- bin      [777]  
  |   |-- bin_del   [777]  
  |   |-- csv     [777]  
  |   |-- lock     [777]  
  |   |-- config.pl  [644] <表示設定>
  |   |-- rec.dat   [666] <テーブルデータ>
  |   |-- rec_del.dat [666] <削除データ>
  |   |-- table.def  [644] <テーブル定義>
  |    
  |-- cgi-lib.pl     [644]  
  |-- hero.pl       [644]  
  |-- herodb.cgi     [755] <本体>
  |-- jcode.pl      [644]

3名無しさん:2008/04/27(日) 18:19:55
【現状の課題】

1.新規登録時
 ①半角カナのみで入力すると文字化けする
  ただし、1文字でも全角が含まれていた場合は、全文字列が全角カナに変換されて登録される。

  例)(´;ω;`)ウッ…P   −>   (´;ω;`)ウッ…P

 ②宛先、投稿者、内容を3項目合わせた状態で1文字も全角文字が含まれていないとエラーする。
  (「投稿データに全角文字を使ってください。」と表示される)

2.検索時
 ③全文検索では全角半角、大文字小文字が区別される
   これにより検索時にうまく引っかからない可能性がある。

【現状の対応予定】
 ①半角カナのみのP名、投稿者は恐らくないので投稿フォームの近くに注意文の掲載で対応する。
 ②実際の運用では、3項目合わせて1文字も全角文字がない事は考えにくい為対応せず。
 ③なんとかして書き込み時にアルファベットだけでも強制的に半角にする方法を検討する。
  その他に注意文を掲載する。

4<削除>:<削除>
<削除>

5arakawa77 ◆LAS....VNE:2008/04/27(日) 19:07:58 ID:???
方向性がおかしいPに教えて頂いた半角変換の方法のテスト結果

hero.pl 無編集状態の748行目、

print "<input type='text' name='$name' size='$size' value='$value' class='$ime' maxlength='$len'>";

print "<input type='text' name='$name' size='$size' value='$value' class='$ime' maxlength='$len' onblur="this.value=(function(str){for(var i=0,s='',_;i<str.length;i++){s+=(_=str.charAt(i)).match(/[!”#$%&’()*+,−./0-9:;<=>?@A-Z[¥]^_‘a-z{|}]/)?String.fromCharCode(_.charCodeAt(0)-'!'.charCodeAt(0)+'!'.charCodeAt(0)):_;}return s;})(this.value)">";

<結果>
500 Internal Server Error となる。

<確認した事項>
①上記原文をそのままテスト …NG
②バックスラッシュを"\"に置き換えてテスト …NG
③使用ブラウザ(Sleipnir2.7.0)のツール→オプション→セキュリティ
  →「JavaScriptの実行を許可」にはチェック済み。
④インターネットオプションのセキュリティにある「レベルのカスタマイズ」において
  それっぽいところは全て有効になっている。
⑤パーミッションの設定は644で特に問題なし

6arakawa77 ◆LAS....VNE:2008/04/27(日) 19:12:30 ID:???
教えて頂く前に素人考えでここかな?と思っていたところ。

herodb.cgi (ttp://nicomasfan.sakura.ne.jp/sampletxt/herodb.txt)
の632〜642行目にあるこの部分がデータ書き込みと思われるので
ここに別サイトで見つけた点線内のあたりの処理を追加すれば出来る?

# 書き込み
$addrec = &make_rec( $masterpass );
                          # レコード生成
&hero'post_wall( $addrec );         # 投稿制限
&jcode'convert(*addrec, "euc", "", "z" );
push @rec, $addrec;              # 新たに追加
$reccount++;
&write_allrecs( $datafile, $deldatafile );
                          # 全レコード書き込み
$cookvalue = "pwd<>". $in{'PASS'};
&hero'set_cookie( "HERODB", $cookvalue );

−−−−−−−−−−−−−−−−−−−−−−−−
参考サイト様の一部抜粋
ttp://us.geocities.com/diddle2do/faq2.html#z_h

Q:全角英数を自動的に半角に変換する方法は?
A:以下のサブルーチンに文字列を通してください。EUCだと簡単このまま。
SJISはこのままだとA-Zと0−9の変換であちこち妙な置き換えをしますので、
この個所はs///とかでちくちく直す必要があります。 _ とかもヘンに化けます。

sub change {
  $value = @_;
  &jcode'tr(*value, "!”#$%&’()*+,−./","!"#$%&'()*+,-./");
  &jcode'tr(*value, ":;<=>?@",":;<=>?@");
  &jcode'tr(*value, "[¥]^_`","[\\]^_`" );
  &jcode'tr(*value, "{|}〜","{|}~" );
  &jcode'tr(*value, "0-9","0-9" );
  &jcode'tr(*value, "A-Z","A-Z" );
  &jcode'tr(*value, "a-z","a-z" );
  return $value;
}

 ※変換したくない文字は適当に抜いてください。
−−−−−−−−−−−−−−−−−−−−−−−−

7arakawa77 ◆LAS....VNE:2008/04/27(日) 19:55:39 ID:???
方向性がおかしいPに頂いたコードを私のテキストエディタ(EmEditor Pro V7.00.1)
で見ると、

print "<input type='text' name='$name' size='$size' value='$value' class='$ime' maxlength='$len' onblur="

までと、それ以降で色が違っている…。

ひょっとして複数ダブルクォーテーションが出てくるから途中を文字列として認識していないのだろうか。
Perlの文法がさっぱりわからない俺は隙だらけだった。

ネットで調べて試しに onblur=" を onblur=\" にしてみる。末尾も ">"; から \">";  にした。
今度は500 Internal Server Errorは出なくなったが、入力してみても半角にはならなかった。
/と\の両方を試したが同様の結果だった。
無闇にいじってしまったのでコードが無効化してしまったのだろう。道は果てしなく長い。

8arakawa77 ◆LAS....VNE:2008/04/28(月) 00:17:44 ID:7EVXT8ww
記載忘れ。

250文字のデータを5万件分入れてテストした結果
新規登録及び検索動作に問題なし。
2chスレに換算して50スレ分はOKと思われる。

rec.dat 25,782KB (内容250文字×5万件分)

ヒロ・データベース公式サイトにも、検索に掛かる時間は
レコード数ではなく総データ容量に関係すると記載があるので
26MBでもとりあえず大丈夫ということかな。

9方向性が(ry ◆z7Pkbaa53Q:2008/04/28(月) 06:47:35 ID:FE5Y1evo
あら、入力ミスったかな? 「秘密」にしたのが災いしたかw
(もしかしたらブログのコメ欄に半角バックスラッシュ記号のエスケープがあるのかも・・・?)

print "<input type='text' name='$name' size='$size' value='$value' class='$ime' maxlength='$len' onblur=♥"this.value=(function(str){for(var i=0,s='',_;i<str.length;i++){s+=(_=str.charAt(i)).match(/[!”#$%&’()*+,−./0-9:;<=>?@A-Z[¥]^_‘a-z{|}]/)?String.fromCharCode(_.charCodeAt(0)-'!'.charCodeAt(0)+'!'.charCodeAt(0)):_;}return s;})(this.value)♥">";

変更箇所は前のやつと同じです。( ♥ を半角円記号に変えてね♥)

10方向性が(ry ◆z7Pkbaa53Q:2008/04/28(月) 06:59:56 ID:FE5Y1evo
>>8
しまった、見落としてた...orz
うん? それでうまくいかないのか。
あれー?

上を適用した状態でF@nletterページを開いて、「ソースの表示」、
30行目「宛先」の先にある input タグ
<input type='text' name='WHO' ... >
のコピペをいただけますか? その部分が
<input type='text' name='WHO' size='50' value='' class='active' maxlength='512' onblur="this.value=(function(str){for(var i=0,s='',_;i<str.length;i++){s+=(_=str.charAt(i)).match(/[!”#$%&’()*+,−./0-9:;<=>?@A-Z[¥]^_‘a-z{|}]/)?String.fromCharCode(_.charCodeAt(0)-'!'.charCodeAt(0)+'!'.charCodeAt(0)):_;}return s;})(this.value)">
であれば機能する、はず。たぶん。いや、かもしれないw

11方向性が(ry ◆z7Pkbaa53Q:2008/04/28(月) 07:28:45 ID:FE5Y1evo
>>7
その通りです。
500エラーの原因は大抵 Perl スクリプト内のシンタックスエラーです。

>EmEditor Pro V7.00.1
ぎゃあ、これは結構なエディタをお使いで(大汗
Perl のスクリプトを扱うには問題ないエディタだと思います。
上に書いた「ソースの表示」の際のエディタが「メモ帳」だった場合は
Crescent Eve (これもエディタです)を入れてみてもいいかも。
http://www.kashim.com/eve/index.html
特に HTML や CSS をエディタで編集する際はこれがオススメです。
デフォルトの設定でほとんど迷うことなく使えると思います。
ちなみに機能は弱いですが、これも Perl スクリプトが扱えます。(私はこれ)
エディタは「好み」と「慣れ」への依存度が高いツールですが、
今のところ個人が趣味レベルで使うエディタとしてこれ以上のものを見つけることができません。
とまあ、これは蛇足。参考までに。

12方向性が(ry ◆z7Pkbaa53Q:2008/04/28(月) 07:39:40 ID:FE5Y1evo
テスト用で
herodb_test    
  |
以下(ディレクトリ名はなんでも構いません)に変更したスクリプトを
ミラーしていただければこちらでも確認できるのですが。
これは、できましたら。

一番手っ取り早いのはてんじゃPに見ていただいt(ry
いや、なんでもないですw

13方向性が(ry ◆z7Pkbaa53Q:2008/04/28(月) 22:14:03 ID:FE5Y1evo
ああ、なんというボーンヘッド。
↑、間違えてます。現在対策中。

14方向性が(ry ◆z7Pkbaa53Q:2008/04/28(月) 23:19:41 ID:FE5Y1evo

print "<input type='text' name='$name' size='$size' value='$value' class='$ime' maxlength='$len'>";

print "<input type='text' name='$name' size='$size' value='$value' class='$ime' maxlength='$len' onblur='this.value=(function(str){for(var i=0,s=String(),_;i<str.length;i++){s+=(_=str.charAt(i)).match(/[!#$%&()*+,−./0-9:;<=>?@A-Z[]^_a-z{|}]/)?String.fromCharCode(_.charCodeAt(0)-65248):_;}return s;})(this.value)'>";

コレダ! たぶん。

15arakawa77 ◆LAS....VNE:2008/04/28(月) 23:21:38 ID:bFw8a/8E
方向性が(ryP、時間がある時で全然OKですよ!みんな忙しいでしょうし。

私は初心者で右も左もわからない状態なので、理解が遅くて・・・。
最悪Ver1.0としてこのまま出すのもありかと思っています。
70点ぐらいでスタートして次期Verで可能なら盛り込むとか。

最悪一定期間毎に生データを抜き出してテキストエディタ上で全角アルファベットを
半角に置き換えて元に戻すなんて方法もありますので。

あと私のコピーの仕方がまずい可能性もまだまだあります。
余談ですが以前私の仕事場で、先輩がファイルをコピーするバッチファイルを組んだ際に、
見た目は全然おかしくないのに動かないので、バイナリエディタで見たら
正常ファイルと違い、全文字で2バイト使っていた(文字コードが間違い?)
こともあったので、その辺も含めてもう少し調べようかと思っています。

バックスラッシュ1つとってもネットで調べると色々書いてあって難しいw
Perlで使うEUC-JPでは「\」で表示されるとあるので、バックスラッシュは\に置き換えて良さそうですね。

>>12のテスト環境は別に作成予定です。

16arakawa77 ◆LAS....VNE:2008/04/28(月) 23:22:23 ID:bFw8a/8E
リロードはするべき。
>>14有難うございます試してみます。

17方向性が(ry ◆z7Pkbaa53Q:2008/04/28(月) 23:37:03 ID:FE5Y1evo
○仕様
全角英数文字(大文字、小文字)及び次行の全角記号文字を
テキストボックスからフォーカスが外れたときに半角文字に変換します。

[!#$%&()*+,−./:;<=>?@[]^_{|}

○問題点
・クライアント側のブラウザ設定で JavaScript を無効にしていた場合は機能しない
・一部の半角に存在する文字を変換できない(”’‘¥)
※2点目はその気になればなんとかなりますが、改造部分がさらに長ーくなります。

あと、 >>3 の②ですが、これはスパム対策かと思われます。
herodb.cgi 内の設定部分にそれらしき箇所が。(121行目)

18arakawa77 ◆LAS....VNE:2008/04/28(月) 23:37:05 ID:bFw8a/8E
やった!やりましたよ!方向性が(ryP!
宛先、投稿者、検索文字列に入力されたアルファベットがフォーカスが外れた際に半角になりました!

テスト環境
http://nicomasfan.sakura.ne.jp/herodb_test/herodb.cgi?table=letter

19arakawa77 ◆LAS....VNE:2008/04/28(月) 23:38:05 ID:bFw8a/8E
>>17
はい、確かに②は仕様でしたw もっとよく読め私。

20方向性が(ry ◆z7Pkbaa53Q:2008/04/28(月) 23:38:53 ID:FE5Y1evo
リロードは(ry

ドモ、オンタイムでははじめましてw

21arakawa77 ◆LAS....VNE:2008/04/28(月) 23:42:03 ID:bFw8a/8E
>>20
こちらこそ始めまして!ガバッ

22方向性が(ry ◆z7Pkbaa53Q:2008/04/28(月) 23:48:26 ID:FE5Y1evo
ソース確認してきました。
「宛先」「投稿者」、あと「検索文字列」でも変換されますね。
まあこれは問題ないかと。
上の「問題点」の1点目、これについては注意書きを入れたほうがよさそうです。
ニコ観ておられる方は大抵大丈夫なのですが、中には用心深い方もw

23arakawa77 ◆LAS....VNE:2008/04/28(月) 23:52:59 ID:bFw8a/8E
>>3 で書いた①の場合ですが、検索が難しいかも知れないですね。レアケースですが。

【元のP名】
(´;ω;`)ウッ…P

【宛先に入れてフォーカスが外れると↓】
(´;ω;`)ウッ…P

【に変換されるが書き込み時に①が適用されビュー上では↓になる】
(´;ω;`)ウッ…P

【検索文字列欄では↓になるので検索時にはひっかからない】
(´;ω;`)ウッ…P

ただし (´;ω;`) で検索すればもちろんOK。

24方向性が(ry ◆z7Pkbaa53Q:2008/04/28(月) 23:54:51 ID:FE5Y1evo
>>15
>生データを抜き出して
これはどうかな?
恐らく問題ないと思いますが、配布元のBBSチラっと見たら
ログは結構ややこしい設定になってる、みたいな書き込みがあったような、なかったような。
マズい部分があるときは web から管理者権限で修正したほうが安全かもしれません。

25arakawa77 ◆LAS....VNE:2008/04/28(月) 23:54:58 ID:bFw8a/8E
>>22
そこは注意書きに入れましょうか。JavaScriptはデフォルトでは有効だったような気もしますし。

26arakawa77 ◆LAS....VNE:2008/04/29(火) 00:00:18 ID:bFw8a/8E
>>24
そこは実際5万件テストの際にやってみたので、たぶん出来そうです。

実際はカンマの変わりに<>でフィールドが区切られているので
CSVとほとんど変わりませんでした。

<ご参考>
今のテスト環境に入っている生データです。EUC-JPで開くと正常に表示されます。
http://nicomasfan.sakura.ne.jp/sampletxt/rec.dat.txt

27方向性が(ry ◆z7Pkbaa53Q:2008/04/29(火) 00:04:53 ID:FE5Y1evo
お願い致します。
半角カナについても使用を控えていただくようお願いしたほうがいいかも、です。
半角カナ文字は何かと問題多いのです。

28arakawa77 ◆LAS....VNE:2008/04/29(火) 00:05:52 ID:bFw8a/8E
>>27
了解!確かに半角カナはこういうシステムだと色々不具合が出るケースがありますよね。

29方向性が(ry ◆z7Pkbaa53Q:2008/04/29(火) 00:08:08 ID:FE5Y1evo
>>26
あー、あれは最後の暗号みたいな文字列のことだったのかな。
あそこに全角文字はなさそうですね。
うん、問題ナシ。

30方向性が(ry ◆z7Pkbaa53Q:2008/04/29(火) 00:11:45 ID:FE5Y1evo
錯綜してきたw

とりあえず今日は朝までネットにおりますので、
何かありましたら例の雑談スレにでも書き込みくださいまし。

それでは、おやすみなさい(でいいのかな?)

31arakawa77 ◆LAS....VNE:2008/04/29(火) 00:14:37 ID:bFw8a/8E
>>30
今日は有難うございました!予想以上の機能アップで感謝感激です。
もうお世話になりっぱなしですね。おやすみなさい!

32arakawa77 ◆LAS....VNE:2008/04/29(火) 01:18:59 ID:bFw8a/8E
本番環境にも実装完了。一緒に注意文も入れてみる。

33方向性が(ry ◆z7Pkbaa53Q:2008/05/01(木) 08:13:52 ID:FE5Y1evo
追記。
以下のブラウザで動作チェック。
IE6, FireFox2, Opera9, Safari3
すべてWindows版、IE以外は最新安定版。
問題ないようです。
Macは持ってないので不明、ですがFFとSafariで動くので大丈夫ではないかと。

こちらをご覧のMacユーザーの方、
いらっしゃいましたら動作報告いただけると助かります。
あと、Linux・・・はさすがにいねぇだろうなぁw

34arakawa77 ◆LAS....VNE:2008/05/01(木) 20:55:44 ID:noXzMg6Y
おお、なんと動作確認まで有難うございますm(_ _)m
IE7とSleipnir2.7.1の動作確認は私の方で完了しました。
たぶん大丈夫そうですね。

一応サイトについての説明もとりあえずファンレターボックスにリンク貼りましたので
機能等についてはこれで一旦リリースしようかと思います。
ただ伊織誕生祭があるのと私が5/3〜5/6まで帰省してしまう為、
それが終わった5/8に公開を予定しております。

最初はフィールドテスト的な部分もあるので、従来どおりスレでの宣伝、
Wikiでの告知、などで少しずつ人を集めて、行けそうであれば(大丈夫な筈ですが)
CMを作成してニコ動から人を呼びればと思ってます。

慣れた職人にとっては短い時間の紙芝居動画なんて寝ながら作れそうな
気がしますが初心者にとっては動画作成自体が敷居が高いです。
俺に作れるかな…。

35arakawa77 ◆LAS....VNE:2008/05/01(木) 20:58:49 ID:noXzMg6Y
>>33
Macユーザーはかなりいそうですね。でもそんな複雑な設計ではないように思うので
根拠はないですが大丈夫だろうと楽観的に構えております。
あとLinuxを使ってるようなユーザーでしたら何かトラブルがあっても自分で解決できるでしょうw

36ななせ:2008/05/08(木) 23:04:14 ID:XrTFl9p2
こんばんは、お久しぶりですw
こんな企画があったとは!
お手伝いでもできれば… と思いつつも、Perlは解からないんで…
で、勝手にRSSとか取得するような感じにしてみたんです。
試しにサンプルと称して貼ってみますが、不要であれば削除します。

http://musica.secret.jp/rss/rss.php

RSS対応が必要なようであれば、ソースごとお渡しいたします。
さくらはphpも使えるようですし。

37arakawa77 ◆LAS....VNE:2008/05/09(金) 02:10:20 ID:isSrSn7U
>>36
おお!ななせさんご無沙汰してます。
なんとRSSフィーダ?を作って頂いたのですか!?素晴らしい!
ぜひ有り難く頂戴したいと思います。
ちなみにファンレターサイトに移植する場合はソースファイルを所定のディレクトリに入れて
ファンレターページにリンクを貼る形になるのでしょうか。たぶんそうですよね。
今までホームページ作成なんてやったことのないど素人なので
全てが新鮮な感じです。PHPとxmlか、また新しい分野が現れたぞ!

38ななせ:2008/05/10(土) 09:04:11 ID:DbYkR9co
お待たせしました。RSS用のphpを↓に。

http://imas.ath.cx/~imas/cgi-bin/upload.cgi?mode=dl&amp;file=20458

解凍すると、rss.phpと設定のためのReadme.txtがありますので、
何となく設定してみてくださいw
わからない場合はお問い合わせを。

39arakawa77 ◆LAS....VNE:2008/05/10(土) 20:45:14 ID:YZU1RroY
>>38
ありがとうございます!

ちなみにDLLのパスは何になりますでしょうか・・・。
いくつか試してみたのですが駄目でした。

40ななせ:2008/05/10(土) 21:00:06 ID:DbYkR9co
!!!!!!!!!
わ、わたしとしたことが、
ぽっくりパス書くのを忘れてました… すみません!!
mirusen になります。失礼しました〜

41arakawa77 ◆LAS....VNE:2008/05/11(日) 21:17:01 ID:QAqBjFmI
>>40
ななせさん有難うございます!!!
出来ました。お陰さまで先程ファンレターボックスもRSS対応になりました!

Readmeも丁寧に書いていただき感謝感激です。
教えていただいた通りのやり方で簡単設置でした。
(ログファイルの位置もデフォルトどおりだったので変更なしでした)

こうやって色んな方に助けて頂けるのは嬉しいですね。

42arakawa77 ◆LAS....VNE:2008/05/17(土) 22:51:04 ID:ZBMFDJBs
投稿者の方から連絡のあった不具合を修正。

【現象】
PASS未設定で投稿した場合は、誰でも編集・削除が出来てしまう。

【対応】
herodb.cgiを修正し、新規投稿時及び既存レター編集時の両方で
パスワードが入力されていない場合にはエラーメッセージを返すよう修正。
これにより既に登録された89件のうちでPASS未設定のものがあった場合
編集不可になりますが、恐らく大丈夫でしょう。

先人のノウハウにひたすら感謝。私にこの修正はできなかった。

43arakawa77 ◆LAS....VNE:2008/06/07(土) 18:24:31 ID:P1jeXKiM
テスト

http://www.nicovideo.jp/mylist/2085186

44名無しさん:2008/06/10(火) 04:49:32 ID:OVMNP9jI
>>42
ずいぶんと遅くなりましたが、対応ありがとうございました。
悪用されなくてよかった。

ちょいと要望を。
①「Pass」の表示に「*」を付加する。現在パス入力も必須になっているので。
②現状、エラーメッセージ等が発生してブラウザで戻る際、書いた内容が全部消失してしまっている。
 ブラウザで戻った際も、書いた内容が保持出来る様にならないか?
③動画のURLを貼る欄を設ける事が出来ないか?貼ったURLは「投稿者」の右側あたりに表示。
 (他の投稿者の意見を参考にしました)

45arakawa77 ◆LAS....VNE:2008/06/10(火) 22:27:19 ID:kFS5jp4c
>>44
すまない。①②については私の実力ではできないんだ。
大変申し訳ないですが、そこは運用でカバーして頂きたいと思います。

③については検討しますので少しお時間を頂ければと思います。

46名無しさん:2008/06/13(金) 12:49:25 ID:OVMNP9jI
>>45
了解です。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板