ネタバレや腐臭発言が混じるらくがきメモ

2008年11月28日(金) nicky改造日記

これまでの危険行為まとめ→
色々直したりした。前にいじったところを見てなんだこりゃと思うのは成長した証かしら。今日は日記内検索にまた新しいコマンドを追加してた。「tt」と入れるとタイトル検索になる。これで12個目です。ほんと何やってんのまじで

2008年11月28日(金) nicky改造日記。下書き機能編

昨日下書き機能ついたバンザーイと喜んだんですが、あれだめでした。
件数表示だとナンバリングがずれてしまうので、下書きが1つあると1ページ目の一番下のやつが2ページ目の一番上にもある状態になってしまうのです。ちくしょう。やっぱりファイル名を変えないとだめなのか…といじろうとしたけどそんなの無理に決まってました。だがこんなことではくじけない。でも知識がないから正面から解決することができない。色々やってるうちに結局微妙な感じのやり方でなんとかなった。なったんじゃないかな。

昨日とはまたちょこちょこ変えて、全部まとめてこんな感じに
つまり下書きボタンを押すと1000年後の日付で投稿されるが、西暦2900年以降の日記はログインしてる人にしか見えない、みたいな感じ。見かけは2008年に見えるけど実質は3008年の日記なので、下書きは常に一番上に表示される。こないだのはなくそはもう消しました。さあ今度は大丈夫か?

いないと思うけど、これ自分でやってみて何かまずいことがあっても私まったく責任とれません……いやここまでの経緯を読んでる人なら恐ろしくてそんなのとてもできないとは思うけど、nickyの非公式マニュアル見たら下書き機能が要望アンケートの一位だったので不安になった。公式で追加されるといいなー。自分の改造なんて心配すぎるよ。

5/23 お恥ずかしいとこ少し修正(書き換え内容は変わってません)

2008年11月27日(木) nicky改造日記

人の欲望は果てしないので下書き機能が欲しくなった。
もともとnickyはタイトルと本文が両方空だと、ログインしてる人にしか見えない空の日記がある状態になるので、そのあたりをいやらしい目で見つめることでなんとかなるんじゃないかな? と思ったのです。長いのでたたみます
・まず
next if(!$Title && !$Message && (!$Admin || $mkHTML));
という行(2回出てくる)の下に、
$Message =~ s/^(<nicky_sitagaki>)/$1※この記事は投稿されていません<br><br>/;
next if(($Message =~ /^<nicky_sitagaki>/) && (!$Admin || $mkHTML));
という2行をそれぞれ追加。

・次に
next if( !$Title && !$Message );
という行(3回出てくる)の下に、
next if($Message =~ /^<nicky_sitagaki>/);
という行をそれぞれ追加。

・そしてボタン作り。
$ITS"KAKUNINH" value="ヘッダをつけて確認">
の行の下あたりに
$ITS"SWRITE" value="下書き">
という行を追加。

・「指定された日時の記事を編集する」(sub NickyEdit)の中の
&GetNickyFile($NickyFname);
という行の下に、
$Message=~s/<nicky_sitagaki>//g;
という行を追加。

・さらにずっと下、「Modeに従って実行」(sub NickyExec)の中の
}elsif( ($Mode eq "WRITE") && ($Admin) ){
という行を、
}elsif((($Mode eq "WRITE")||($Mode eq "SWRITE"))&& ($Admin) ){
に変更。
そしてその数行下の、
$Category=$nCategory;
という行の下あたりに、
if($Mode eq "SWRITE"){
$Message=~ s/^(.)/<nicky_sitagaki>$1/;
}
という3行を追加。

追記。sub MakeNickyLastの
if( !$flag_new_hit && ($Mode eq "WRITE") ){
の行を
if( !$flag_new_hit && (($Mode eq "WRITE")||($Mode eq "SWRITE")) ){
に変えないと投稿した後の#tgtのアンカーがきかなくなってしまう様子

おー。できたかな。どうかな。
私の目にはこの記事の下にもう1つこういう記事↓が見えるけど、他の人に見えなければひとまず成功ー。

テスト

なんかとんでもないことしてないといいんですが。最近ちょっと無茶しすぎです

追記。これだとだめだった

2008年11月26日(水) ドラクエ3

グプタニア

グプタとタニア。ゲームスタート時の2年くらい前。グプタ19歳、タニア16歳。
グプタは黒胡椒屋の従業員。子供の頃からあの店で働いていて、成長するに従ってその有能ぶりを発揮。店主のおじいちゃんからすれば「わしが育てた」みたいな自慢の店員なんだけど、有能なだけに他店から好条件での引き抜き話がたくさんあることを知ってしまって不安になった。グプタのことは気に入ってるし、もともとグプタとタニアは仲いいし、結婚てどう? 問題ないだろう、推奨します、という感じで押してくる。この後2人は婚約した。「タニアさん」から「さん」が取れるのに1年くらいかかった。

「わしは ふたりを けっこんさせようと おもったのに…」
前にちょっと書きましたが、グプタとタニアは「おじいちゃんが結婚させようとしている」というのが萌えポイントだと思うんです。店主の孫娘と(多分)店員。で店主がお気に入りの店員に孫娘をめあわせた。婚約はしてるけどタニアとしては「グプタは本当に私のことが好きなのかな…」みたいなね。でもタニアがカンダタにさらわれたと聞いたらグプタは危険を顧みず飛び出してっちゃう。何だものすごい愛し合ってたんじゃないの!というこの美しい流れですよ。
ここのカンダタはタニアをさらわないです。タニアは昔孤児院にいたことがあって()その時世話になったりした関係で自分からカンダタのとこに行ってしまうんですが、グプタが心配して駆けつけるのは同じ。勇者とカンダタとの第二戦は町の人々が見る中での八百長試合、というのを以前()書きましたが、ここの芝居にタニアとグプタも参加する。
「かえったら けっこんしよう!」「あなた!」
このセリフは勇者が頼んだわけではなくて自分たちで入れた。結婚イベントを入れることで事件が丸く収まった感が増すという寸法

2008年11月25日(火) nicky改造日記。個別記事リンク編

日付頭の■をクリックするとその記事に飛びますが、その時に該当記事しか表示しないようにしました。過去の日記によくリンク張るのでそのたびに他の記事が見えるのが、なんかこう、なんか…
でも元のやつみたいにアンカーで指定するのも好きなのでこれはとても迷いどころです。■でリンクしなくなっただけで使おうと思えば使えるからいいかなー

またnicky.cgiに直接書きこんじゃった…。これはすぐできた。多分できた。長いけど他のとこの記述をつぎはぎしただけ。日記内検索を経験した私に死角はなかった。こんな感じ
変な挙動を起こしたりしないといいなー

5/23追記。前へと次への間には、「初期設定」の「過去ログNewとOldの間の表示」で設定されてるものが入るようになってます。初期設定でチェックが入ってなくても使われる有様
6/6。最新記事に載ってる記事だったら個別表示+「過去ログにコメントフォームを表示しない」設定でもコメントフォームが出るように変更

2008年11月25日(火) 日記内検索日記 解決編?

あらすじ。日記内検索をカテゴリ代わりに使いたいと思ってCGIに色々書き加えてみたら、変な機能は色々ついたが重くなってしまった。PHPはPERLのCGIより軽いと聞いたので、試しにPHPで同じ動きをするものを作ってみようとしたのだが…?

右も左もわからないPHP、設定ファイルの読み込みとかもよく分からないのでそういうのは全部ファイルに直接書き込んで、とりあえず似たような動作をするものを途中までなんとか作ってアップしてみて、さて重さは? とアクセスしてみたら……あまり変わりませんでした。残念。
しかしまあ重いのは当然といえば当然の話で、まず全ファイルを開いて検索して、ヒットした記事の数を数えて検索結果○件というのを表示して、ヒットしたファイルをもう一度開き直して内容を表示……つまりファイルを2回ずつ開いているんです。最初に開いた時に表示もしてしまえば軽くなるかもしれないけど、そうすると「検索結果○件」というのが記事の下に表示されることになってしま……CSSで上に表示すればいいんじゃないの? やってみた。できました。もう馬鹿。馬鹿。こういうことやってると自分の頭がどんどん心配になる。大原部長にバカにターボがかかってきたって言われるレベル
というわけで軽くなった気がします。これでカテゴリ代わりに使える。かな

PHP版。表示のレイアウトが2種類しかなかったりハイライト機能が使えなかったりする。途中で↑に気づいて最後までがんばる気力を失った。こっちもファイル開くの1回にしてみたけど、やっぱりそんなに重さは変わらないと思う。PERLのCGIより軽いというのはきっとこういう時の話ではないんだろうな
それにしてもPHPはほぼ未体験ゾーンでまだ全然馴染んでませんが、便利関数が山ほどあるのにびっくりした。「strip_tags」と書くだけでタグが全部消えるとかにはまだ「ふーん」くらいでしたが、「urlencode」だけでエンコードできたり「mb_convert_kana」だけで半角全角変換とかを知るにつけ「おいおい」と思うようになり、一番びっくりしたのが「getimagesize(画像)」てやったら$○○[3]が「width="△△" height="××"」になるやつ。何このいたれりつくせり。高級ホテル? 人間がだめになるとか余計な心配してしまう。でも面白そうなのでいつかまた何かやりたい

2008年11月24日(月) 日記消した日記

今年の日記を間違えて全部消してしまった。でも最近毎日のようにローカルでテストしてて、その際にファイルとかもいちいちダウンロードしてたおかげで大丈夫でした。おかげでというかそのせいでうっかり消したんだけど。

ただ問題はローカルのファイルをそのままアップしたこと。タイトル「テスト」本文「うんこうんこうんこうんこうんこ」みたいなのが過去の日記に相当数まぎれこんでしまった。多分全部消せたと思うけど、もし見かけても気にしないでください。ただのうんこですから

2008年11月23日(日) マザー2

snormal1124012839.png 250×250 2K [再]

携帯ゲーム機で最後に買ったのはゲームボーイアドバンスSPで、据え置きだとスーファミ。ドラクエロトシリーズとの因果関係は特にない…と思う
マザー3、前に買ったような気がするんだけど、見あたらないところを見ると気のせいかなあ。いつでもやれると思ってずいぶん時が経ち、ポーキーのネタバレを読んでしまってからもずいぶん時が経ち、いざやろうと思ったらない。それが今です。店で見かけて買ったような気になってただけかなあ。さすがに買ってたらやってるか。

ところでマザー2です。あのゲームは本当に面白いし大好きだと何にでも誓って言えるんですが、ラスボス戦のあの演出だけは困ったことに苦手でした。あれは…あれだけは…どこかで回避フラグがあってくれてもと思ってしまう…。むしろ何らかのポイントをコンプリートしないとああならないくらいの隠し演出であってほしいと思ってしまう。あれ見て「まさにそうだ!」と拳を握る人より「…うわあ…」「やりやがった」「実はこういうことをやりかねない雰囲気を薄々感じていたので用心して別人の」みたいな人の方が多いんじゃないのか…。小説でも漫画でもゲームでもすぐ号泣の私ですら後者です。
後者は子供の心を失った哀れな大人、と見ることもできるかもしれないけど、本当の子供の場合は家族や友人が横で見てる環境でプレイしてることも多く、その際に「え?」「おお?」って言われてなんか顔が真っ赤になってくるという悲しい例を想像していたたまれない思いです(勝手に)。あんなに大好きなのに続編の3に飛びつけなかったのはそのせいもあるのかも。3ではああいうのがなければいいなあ。

2008年11月22日(土) nicky改造日記。日記内検索編

目標達成おめでとう〜
ボタンをリンクにできました。やったー
「nicky.cgi?SerchWord=○○」の後に「page=○○」みたいにして表示させるやり方が分からずしょんぼりしてたんですが、きみはじつにばかだな!分からないなら検索ワードの中に入れてしまえばいいじゃない!こんなにむやみにコマンド作りながらそれに気づかないなんて…
あと検索結果をカテゴリ的に使用するという目的の一環として、検索ワードと一緒に「d」と入れると「『○○』を含む記事何件…」というのが表示されない、というコマンド追加。検索結果っぽくない画面になるのでカテゴリ表示に使えるかなと。まあ使わないと思うんですが、やろうと思えばできるってだけでちょっと心が豊かになる気がするじゃないですか。へへへ…これで追加機能は11個だ…(そんなことしてなんになる!?)

結局sub NickySerchあたりはこんなことになりましたよ→
長すぎわらた。いつのまにこんなことになってしまったんだ…。もうほんとやめようこういうことは

5/23 tコマンドの検索が変だったのを直したのとiMode版についての追記とか。
ご指摘ありがとうございました!

2008年11月21日(金) 日記内検索日記

こんなの毎日書くなら休止してた方がいいような気がする日記。

検索です検索。マルチバイト文字の2バイト目と次の字の1バイト目が組み合わさって誤検出みたいになるあれ。「せ」(\xA4\xBB)で検索すると「気持ち」(\xB5\xA4\xBB\xFD\xA4\xC1)がひっかかってしまう問題。
あれってなんか本文も検索ワードも1文字(2バイト)ずつ区切った上で検索し、しかるのち元に戻す…みたいなことをしなればならないらしいですね。びっくりした。すごいなー! つまり検索エンジンとかはそういうことをしてると…! あの膨大なページの内容を1文字1文字区切ってると! うわー。それともそれはEUCだけなのかしら。でもはてなダイアリーとかEUCですよね。つまりはてな検索はきっと全ダイアリーを区切っている…一文字ずつ! すごいなー!

けどここの日記内検索でそれ実際やってみたら重くなったのでやめた。まあ1文字で検索しなければほぼないことだし、使うの自分だからいいよ(それ言ったら終わる)
でもハイライトをつけた時に文字化けするのはあれなので、ハイライトonの時だけそれにした。にしてもハイライトって面倒なものだったんだなあ。文字化けもそうだけど、全角アルファベットの大文字小文字が検索ワードと違う時にどうやってハイライトのタグを付けるのかという心からどうでもいいけど片づかないと気になってしまう問題に悩んだ今日でした。
結局本文の英数字を半角に変換して、変換する時にマークをつけておいて、検索してハイライトのタグをつけ、そしてマークのとこだけ全角に戻す、てやったけどこれ絶対間違ってるよね。こんな無駄なことをみんながしているわけがないもの。日記内検索のハイライトを担当する部分だけで、こんな長さに
sub NickySerchLight{
my($zha,$zhb,$zhc,$zhd,$hi);
($SWord[$_],$cword) = @_ ;

$zha = qr{(?<!\x8F)};
$zhb = qr{(?=(?:[\xA1-\xFE][\xA1-\xFE])*(?:[\x00-\x7F\x8E\x8F]|\z))}x;
$zhc ="<<z_h>>";
$zhd ="<<\/z_h>>";
$Message =~ s/$zha\xA3([\xB0-\xB9\xC1-\xDA\xE1-\xFA])$zhb/$zhc.pack("C", ord($1) - 0x80).$zhd/oeg;
$Message =~ s/$zhd$zhc//g;
$Title =~ s/$zha\xA3([\xB0-\xB9\xC1-\xDA\xE1-\xFA])$zhb/$zhc.pack("C", ord($1) - 0x80).$zhd/oeg;
$Title =~ s/$zhd$zhc//g;
$Title =~ s/([\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE][\xA1-\xFE])/$1\n/g;
$Message =~ s/([\x8E\xA1-\xFE][\xA1-\xFE]|\x8F[\xA1-\xFE][\xA1-\xFE])/$1\n/g;

for($hi = 0; $hi<$cword; $hi++){
$SWord[$hi] =~ s/([\x8E\xA1-\xFE][\xA1-\xFE])/$1\n/g;
$Message =~ s/($SWord[$hi])/<span class=\"hili\">$1<\/span>/ig;
$Title =~ s/($SWord[$hi])/<span class=\"hili\">$1<\/span>/ig;
1 while $Title =~ s/(<[^>]*)(<span class=\"hili\">)([^<]*)(<\/span>)/$1$3/ig;
1 while $Message =~ s/(<[^>]*)(<span class=\"hili\">)([^<]*)(<\/span>)/$1$3/ig;
$SWord[$hi] =~ s/\n//g;
}
$Message =~ s/$zhc<span class=\"hili\">/<span class=\"hili\">$zhc/g;
$Message =~ s/<\/span>$zhd/$zhd<\/span>/g;
1 while $Message =~ s/($zhc[0-9A-Za-z])([^$zhd])/$1$zhd$zhc$2/g;
$Message =~ s/$zhc([0-9A-Za-z])$zhd/pack("C*", 0xA3, ord($1) + 0x80)/eg;
$Title =~ s/$zhc<span class=\"hili\">/<span class=\"hili\">$zhc/g;
$Title =~ s/<\/span>$zhd/$zhd<\/span>/g;
1 while $Title =~ s/($zhc[0-9A-Za-z])([^$zhd])/$1$zhd$zhc$2/g;
$Title =~ s/$zhc([0-9A-Za-z])$zhd/pack("C*", 0xA3, ord($1) + 0x80)/eg;
$Title =~ s/\n//g;
$Message =~ s/\n//g;
}

ありえないよ。無知は悲劇、みたいなのを地でいくようなことをしてるんでしょうね
月別ログ
日記内検索機能

RSS

PaintBBS / spainter Shi-dow
Diary CGI  Nicky! + rssnicky