オークション

くもりのち晴れ仕事が終わって家に帰ってきて、妻とインターネットでマタニティーウェアを探していた。
普通のお店は種類も少ないし値段も高い……
「オークションでもいい」というので、ひさびさにヤフーオークションのページを開いた。 で、探す。
やっぱり数がすごい。 質はどうだかわからないけれど……

何個か気に入ったのがあったので、試しに入札してみた。 商品入札金額と送料・振り込み手数料が同じという悲しいオークションの宿命… 送料とかがどうにかなったらいいのになぁ……

OpenPNE

晴れ今日は会社でOpenPNEというものの設置をしようとした。 これはmixiみたいなSNS。 それのPHPで動作するフリーのもの。
最新版を設置したけれど、どうもログインできない。 安定バージョンを設置してみるがこれも同じ症状……
なんでだろう……

家で自分の借りてるサーバーに入れてみた。 そしたら普通に動いた……
サーバーの問題!?
OpenPNE

PHPカレンダー

晴れPHPでカレンダーを作ろうとしている。
どうやって考えればいいのかよくわからなかったので、他所から当月と指定した月日の日付と曜日を表示するPHPスクリプト(http://ponk.jp/php_time/index.php?page=4)を借りてきて、
それをアレンジ。

テーブルを使ってカレンダーっぽい表示にはなった。 日曜日には色をつけた。
過去と未来にどこまでさかのぼれるのかやってみた。
すると、過去は1902年1月が限界。 1901年12月を表示すると乱れる。
未来は2037年12月が限界。 2038年1月を表示すると乱れる。

過去は105年前も表示する必要がないからいいとして、問題は未来。
どうやらこれは「2038年問題」というらしい。
コンピュータ上で日付の計算方法が、1970年1月1日0時0分0秒からの累計秒で計算されているらしい。
32ビット符号つき整数を使ってあらわされてる場合がほとんどなので、上限値は21億4748万3647らしい。
そして1970年1月1日0時0分0秒から21億4748万3647秒後は2038年1月19日12時14分8秒(日本時間)を超えると値が負の値になって狂うらしい。
同様に負の値も-21億4748万3647までなので、1902年1月までしか表示できない。
まぁとても気の遠くなるような桁数の話だけど……

だけどこれが現実的なコンピュータの問題として浮き彫りになってる。 2000年問題の時は、直前になって騒がれていたような気がしたけれど、これはまだあと32年もある。 それまでにきちんと対処されるんだろうね、きっと。
対策として64ビット整数型で秒をあらわせばいいらしい。 そうすれば西暦3000億年までカウントできるらしい。
64ビット整数型にするのがものすごい大変なことなのかどうかはわからないけれど……

というわけで、2037年12月までしか表示できないカレンダーの完成。
あとは祝日の表示。

1月1日 元旦
1月第2月曜日 成人の日
2月11日 建国記念日
3月23日ごろ 春分の日
4月29日 みどりの日
5月3日 憲法記念日
5月4日 国民の休日
5月5日 こどもの日
7月第3月曜日 海の日
9月第3月曜日 敬老の日
9月23日ごろ 秋分の日
10月第2月曜日 体育の日
11月3日 文化の日
11月23日 勤労感謝の日
12月23日 天皇誕生日

2006年の段階での祝日はこれだけ。
2007年から4月29日が「昭和の日」となって、5月4日が「みどりの日」となるらしい。
春分の日は3月21日、秋分の日は9月23日というイメージを持っていたのだけど、これも確定された日にちではないらしい。 天文台の計測によって毎年変わるらしい。

春分の日は、2008年、2009年、2012年、2013年、2016年、2017年、2020年、2021年、2024年、2025年は3月20日らしい。 それ以外の年は3月21日。
秋分の日は、2012年、2016年、2020年、2024年、2028年、2032年、2036年、2040年、2044年は9月22日らしい。
それ以外の年は9月23日。

さらに知ったこと。
国民の祝日というものについて。
5月4日は「国民の休日」となっている。 これはこういう名前の休みの日かと思っていた。 だけど実際には定義があるらしい。
祝日Aと祝日Cに間を挟まれた祝日Bを国民の休日というらしい。
5月だと、5月3日が祝日A、5月5日が祝日C。 そして5月4日は普通の日。 だけど、国民の休日の法則にのっとると、
5月4日が国民の休日になる。 ただし、5月3日が日曜日、5月4日が日曜日の場合は国民の休日にはならないらしい。

ハッピーマンデー法で9月第3月曜となった敬老の日。
年によって日付が変わる秋分の日。
たとえば2009年。 予定では9月21日が敬老の日。 そして9月23日が秋分の日。 間に挟まれた9月22日が、国民の休日となるらしい。 5月4日以外では初めてのケースだって。 これと同じことが2015年にも起こるらしい。

そんなこんなで、カレンダーの祝日を入れるのに一苦労。
普通の祝日は入れることができたけれど、国民の休日、1992年以前の春分の日、秋分の日、振り替え休日はまだできてない。 むずかしすぎ!

サンプル
ソース

PHP掲示板その17

くもり今日は仕事休み。
8時半くらいに起きてきた。

昼に坂出まででかけた。

頭を悩ますPHP掲示板
本文中のURLにリンクを張るのはいいのだけど、そのおかげで検索のときにすっごい頭を悩ませている。
<a href=”http://urlurl.urlurl.com/” target=”_blank”>http://urlurl.urlurl.com/</a>
この部分が検索されてしまう。 そして色を変える為に<font>タグも組み込まれて表示がめちゃめちゃになる。

(<a hrefx3dx22.*x22
targetx3dx22_blankx22>)(.*)(</a>)

こんな正規表現を書いたんだけど、これがログ内で見つかったら、前半部分を<z>に後半を</z>に置き換えるという風にやってみた。
すると <z>http://urlurl.urlurl.com/</z> となった。
先日やった<br>を対象からはずすのと似たような正規表現で、<z>と</z>をはずすようにした。

これで表示は一応できたのだけど条件がある……

まず本文中に書かれているURLが1つの場合。 これだときちんと表示できると思うのだけど、2つ以上になると動作がおかしくなる。 一番最初に表示される<a から 一番最後の閉じるところまでが一気にまとめられちゃってるのかなぁ?
うーん、むずかしい。

それと検索されたものを表示するところで、
<a href=“http://urlurl.urlurl.com/” target=_blank“>http://urlurl.urlurl.com/</a>
この青の部分も検索されてしまう。 色こそは変わらないので表示はおかしくならないのだけど、本文中に含まれてないのに表示されてしまうのも……
<z></z>の復元を表示の場所でやればいいのかな~
あと/で検索すると表示が狂う。
で検索するとエラーがいっぱいおきる。
“で検索すると強制的にに変換される。
>を表す$gt;のgやtで検索すると表示が狂う。
↑の引用符の<font>タグの部分はまだいじってない。

というか、背景に色をつけるのをやめたい気分(笑)

サンプル
ソース
管理モードのパスはaaaa

PHP掲示板その16

晴れ今日は屋島で仕事。 7時15分~17時20分まで。 最近7時過ぎ集合ばかりで楽チン♪

今日はドラえもんを見た。 去年の4月だっけ? ドラえもんの声優が変わったときに、絵も一緒に変わってしまった。 それ以来ドラえもんに違和感を感じていた。
子供と一緒に「ドラえもん のび太のドラビアンナイト」という映画を見た。 この映画は10年くらい前の映画なので声優はオレの知っている頃のまま。
やっぱりこっちのドラえもんの方が落ち着く(笑)

PHP掲示板
検索でbrやbやrと打ち込むと改行の<br>まで検索されていた。 とりあえずそれを直した。 これで検索されなくなったはず。 正規表現で
<b?<font classx3dx22search[0-9]{1}x22>(br|b|r)</font>r?>
とやった。
<br>が検索されて文字の背景色を変えたら
<<font class=”search0″>br</font>> となり <br>や<br>や<br>
と表示されていた。
これが直った!
昨日やったのはbr対応だけ、今日はbとrにも対応。

だけど本文中には引用符の<font>もあるし、URLリンクの<a href>もあるし…… これらもfやaで検索すると表示されてしまう。
<br>は決まっていたからすぐに出来たけど、URLリンクとか文字が決まってないから難しそう……
日記書くとき各ページにリンクを張るのが面倒だから、メインの掲示板からリンクを張った。
PHPスクリプト内でHTML書くときは”を'に置き換えていたけど、それを全部”に直した。
管理モードでセッションとif文の不具合があったので直した。
検索ワードが、結果ページでも保持されるようにした。
だけど、名前、題名、本文の選択部分を保持する事が出来ず…… 検索ページを表示したとき、全部のチェックがはずれてる状態なら保持ができたのだけど、全部のチェックがついてる状態だとできない…… これも考えなくては。
表示件数は1ページ目だけ動作します。
結果が指定した件数以下ならその件数を表示。 たとえば5件表示で結果が7件あったら、最新5件を表示。 次の5件というボタンを作ってないので残りの2件が見れません…… 5件なら、5件表示したあと、6件目があるかないかの判断方法で悩み中。
サンプル
ソース
管理モードのパスはaaaa

牟礼

晴れ今日はひさびさの仕事。 牟礼でL型キッチン。 7時15分~17時。

昨日から妻が風邪をひいてしまった。 妊娠してるので薬も飲めない……かわいそう。
元気をつけてもらおうと思い、「食べたい」と言っていたキノコスパゲッティを作ったのだけど、これが見事に失敗。 すごいしょっぱい醤油スパゲッティになってしまった…… おいしいの作れなくてごめんね。

PHP掲示板その16
検索でbrと検索すると、改行の<br>まで検索されてしまっていた。
これを検索しないようにした。 それだけしかやってない…… 今月も残り5日。 もうじき11月。 あ~楽しみ♪
サンプル
ソース
検索

結婚式場

晴れときどきくもり今日も仕事がおやすみ。 ゆうべ社長から電話があって、明日も休みになった…… あ~やっぱりビッシリ仕事がある月が全然ないなぁ。

今日はちょっと用があって結婚式を挙げた系列のホテルに行った。 いろいろと長いお話をした……

PHP掲示板
検索モードのチェックボックスを機能するようにした。 検索対象を「名前」「題名」「本文」から選べる。
相変わらず半角スペースはorモード。 表示件数は機能していません。
サンプル
ソース
検索

PHP掲示板その15

くもり今日はおやすみ。 8時過ぎに起きてダラダラ過ごす。
PHP掲示板でもやるかな~

今日やることは検索機能をつける。
マルチバイト正規関数というのを使って一致するかどうか調べる。
で、ログ内から見つかったものをリストアップする。 さらに、表示するときに一致した文字の背景に色をつける。
Googleのキャッシュ検索の表示みたいな感じのやつ。
ここまではすぐ作る事が出来た……
ただ、ここからが……
検索するときに半角スペースをあけるとor検索になるようにする。 たとえば「こんにちは おはよう」と入力したら「こんにちは」「おはよう」のどちらかが入ってる文章が検索されるように。
半角スペースはホントは&検索なんだけど、それはあとで修正しよう……
入力されたものを半角スペースか全角スペースで区切って配列に代入した。
まずは背景色をつけるところから。 今の検索対象は「本文」のみ。 本文中から配列[0]に入ってるものがあるかどうかチェック、あれば<font>をつけて色を変える。 それの繰り返し。
そしてここからがすっごい悩んだ。 表示の部分。

同じように配列[0]に入ってるものが本文中にあるかチェック。 あれば出力、そして配列[1]にに入ってるものがあるかチェック。 あれば出力そして配列[2]に行く。 という繰り返しをやっていたのだけど、本文中に「こんにちは」「おはよう」の両方があると、同じ記事が2つ出力されてしまう。
表示された記事番号を新しい配列に当てはめて、それのみを出力して試してみた。
検索のorを増やせば増やすほど、重複する。 そして「8,8,7,6,5,5,5,4,3,3,3,2,1,1」のように、同じ記事が複数回出力されてしまう。
どうやって直せばいいんだ~~~
「8,8,4,6,5,5,5,4,3,3,3,2,1,1」の配列から重複したものを削除しようとした。
関数でarray_uniqueというのがあったから使ってみたけど。
重複したものを削除するのだけど、やってみたら
[0] = 8
[2] = 4
[3] = 6
[4] = 5
[7] = 3
[10] = 2
[11] = 1
というふうに、重複したところが削除された。 だけど希望としては削除されたところを前につめてほしかった……
判れば出来るのかもしれないけれど、オレはそれが思いつかなかった。
なので元の配列をforとifで1つずつ順にチェックしていって重複しないように新しい配列に代入して行った。

だけど、今度はこれをどうやって使うのかわからなかった……

そんなこんな悩んで、どうやっても進まなくなった……

どうしてもできなくなって、PHPの本を読んでいた。 すると「break;」というのを見つけた。
これをforの中に組み込めば、そこでループが終わる!
さっそくやってみた。 そしたらできた!
こんな単純なことだったとは…… 悩んだ数時間がいったい……

サンプル
ソース
検索

ちなみに検索のチェックボックスと表示件数は飾りです。 まだ動作さしない……