今日は成合の西村ジョイの展示コーナーでお風呂撤去の仕事。 どうやら展示品が売れたらしい。 組み立てはあさって。 現地直行で7時50分集合。 お店が9時からなのでお客さんがくるまでになるべく撤去作業を進めて、邪魔にならないようにしなくては……
10時前くらいに撤去完了。 バラバラになったお風呂を近所にあるお客さんの家に持っていく。
今日は組まないけど、お客さんの家の庭にバラバラになったお風呂を置いて帰る。
11時くらいに仕事終了。
給料明細をもらった。
9月から日給が1000円アップしていた。 だけど、出勤日数が……たった15日。 4日は熱で休んだけれど…… 休みが多いな~ まぁ月初めに4連休、末にも4連休があったからなぁ。 それに比べて今月はすごいたくさん仕事がある。 今月は17日間のうち12日半仕事をした。 このペースだと22日くらい仕事があるのかな? 給料が1000円アップしたということは、22日で22000円アップ。 まぁまぁ嬉しいかな。
まぁ今の仕事も今月限り。 仕事内容に不満はないけれど、やっぱり給料がね~ 仕事のある月はいいけれど、無い月は半分もないし…… 5、6、8、9月とゴールデンウィークがあったし…… やっぱり望むは安定した収入。
うどんを食べて家に帰って、少し昼寝をする。
さて、ひさびさのPHP掲示板。 MySQLはちょっとおいといて……
そういえば、MySQLの日本語の謎がやっと解けた。
いろいろ検索で調べて
skip-character-set-client-handshake
とmy.iniに記入したら直った! それと文字コードのEUC-JPはどうやらeucjpmsではなくujisだったらしい……
それとPHPスクリプトのフィアルをやっぱりSJISではなくEUC-JP形式にした。 どうやらその方が望ましいらしい。
どの参考書みてもそう書いてあるしね。 なぜSJISではいけないのかは不明。
ということで、今日からEUC-JP。
さすがに返信機能を1から考えるのはとてもむずかしいので、kentのaska bbsを設置して、マネしました。
さて、とりあえずやったことをずらずらと。 方法は後ろの方で
・パスワードの暗号化のバグを修正
・書き込みました画面でリロードしたら、二重投稿禁止と出るようにした
・返信機能をつけた
・本文の一番最後に改行があった場合、それを消すようにした
方法
・パスワードの暗号化のバグを修正
パスが空の場合は暗号化しないようにした。 これによってログにはパスは0バイトで記入されるようになった。 記事を書いた人が消す事もできなくなった。
・書き込みました画面でリロードしたら、二重投稿禁止と出るようにした
write.phpで処理した。 変数に代入した時点で、ログの最終行(一番最近の記事)から名前と本文を抜き出す。
それを照らし合わせて内容が同じなら「二重投稿禁止です」とエラーを表示させるようにした。
ただ弊害が……
自分で、テスト用に記事を増やしたいとき、何度も書くのが面倒なので、更新を連打して、同じ記事で件数を増やしていたのだけど、それができなくなった。。。 まぁテストするのが面倒になっただけだからいいか。。。
・返信機能をつけた
これはすっごい苦労した。
まず仕様
返信ボタンを押すと、タイトルに
Re:[??] 題名
と表示されるように。 ??は返信元の記事ナンバー、題名は返信元の題名。
本文のテキストエリアに
> 本文
> 本文
のように、引用符をつけて表示する。 で、記事表示部分では引用された部分を色を変えて表示する。 色はとりあえず#804000にした。 Kentのaska bbsのデフォルトの色。 はい、マネです。
返信モードかどうかを判断するために、返信ボタンを押したときはURLに bbs.php?res=?? と表示
最後の??は返信元の記事ナンバー。 これをGETで取得して、テキストボックスにValueで表示。 テキストエリアに表示。
返信のタイトル。
Re:[??] 題名
と最初やっていたのだけど、返信にたいする返信、 記事5に記事6で返信、記事6に記事7で返信、記事7に記事8で返信した場合
Re:[7] Re:[6] Re:[5] 無題
のように Re:[??] の部分がひたすら増えていく…… これを最新の返信元のみRe:[??]にするように。
返信元のタイトルを取得した時点で Re:[??] があった場合はこれを消す。
Re:[6] 無題
というタイトルだったら、取得する時点で前の Re:[6] をはじいて 無題 のみ取得。
これを最新のRe:[??]と組み合わせて表示した。 ereg_replaceというのを使ったけどこれでいいのかな~ とりあえずできてるからいいか。
ただ手入力でタイトルを Re:[33]みたいに入力されてあって、それに返信した場合はそのタイトルが消されてしまう。 まぁそんなことする人はいないという前提で……
次に本文の引用。
行ごとに > で引用するので、行ごとに取得する必要が。
explode(“<br>” , 変数) で取得した。 だけどログ内の<br>が消されてしまうので、あとで行ごとに文末に<br>を付け加える。
行ごとに
> 取得した文章 <br>
と代入する。
元の文章が
123<br>
45<br>
67
というものだったら
> 123<br>
> 45<br>
> 67<br>
となる。 見てわかるように絶対に最終行にも<br>が入ってしまうバグが。
そのために
・本文の一番最後に改行があった場合、それを消すようにした
をした。
これで引用の第一段階は完成。
次にwrite.phpでの処理。
これも本文を行ごとに取得する。
文の始めに引用符があり<br>で終わるもの、文の始めに引用符がありそのまま終わるもの
以上の2つの場合、引用とみなして、色を変える処理。 ログに<font color='#??????'>文</font>を付け加える。
全ての行をあとで結合。 結合したやつをログファイルに書き込み。
これで完成!
ログに書き込む時点で<font color>を指定した事によって、返信する本文でバグが。
引用されたものを返信するとき、ログ内容を1行ずつ取得してそのまま表示すると
> こんにちは
という、すでに#804000に色が変わってるものを引用すると
> <font color='#804000'> > こんにちは</font>
と引用されてしまう。 返信の返信に対してのバグ。
これもereg_replaceで<font>を除去してみた。
最初は前の<font color~~>の部分を消す。 次に最後の</font>を消す。
両方を消したものを引用する。 これでいいのかな~
上の > こんにちは に返信すると
> > こんにちは
となるようになった。 これでいいっぽい。
本文を入力するときに自分で>というのを使うと色が変わるけど、これはaska bbsでもそうなったからいいや。 > の前にスペースをいれると、普通の文字色で表示される。
あともう一個。 引用符以降の文字色変更はきちんと動作するのだけど、デフォルトの文字色があるため
<font color='デフォルト色'><font color='引用色'> > 引用された文章</font></font>とかなるけど、これはいいのかな……?
とりあえず返信機能は完成。
レスがツリー式やテーブルでひとまとめになる掲示板ではないので、ここで終わり。 だけどそれらの掲示板だったらややこしそう。 けど、そのうちそれらのタイプの掲示板も作ってみなくては。
さて、今後の課題
・管理者機能をつける
・検索機能をつける
・本文中のURLにリンクをつける
・投稿欄でURLの入力部分をつける……はどうしようかな~。。。
・アイコンをつけられるようにする……もどうしようかな~。。。
・画像アップロード掲示板にしようかなぁ……
というか、掲示板を作り始める前に、仕様を全部決めておかなくてはならないのですね。。。
次のを作るときは、最初に全部決めなくては…… 今のはとりあえずただの勉強なのでゴチャゴチャ機能つけてみようかなぁ。。。
サンプル
ソース
ログ
夜の過ごし方
今日はミカドキッチン。 カップボードつき。 7時20分~17時15分まで。
最近、夜の過ごし方が変わってきた。 今まではずっとパソコンをやっている感じだったのだけど、最近では9時くらいに寝てしまったり、ベッドに入ってずっと話していたり。 パソコンやテレビから離れてる感じがします。
夕べもリビングの電気やテレビをつけたままベッドで話をしていたらいつの間にか寝てしまって、気づいたら1時。 テレビと電気とつけっぱなしのパソコンを消してそのまま寝た。
けっこう睡眠時間はあるはずなのだけど、毎日眠い…… こればかりは仕方ないのか。
日曜出勤
今日は日曜日なのに仕事がある。 7時10分に会社。 松縄でお風呂を組む。 今日の現場は狭い。 なのに大工さんや塗装屋さんや設備屋さんまでいる。 狭い上に人が多すぎる。 車を止める場所すらない。
かなり仕事がしにくかったけど、とりあえずお風呂は完成。 15時くらいに終わった。
家に帰ってパソコンをやっていた。
洗濯をして夕飯を作って、ものすごい眠気で21時くらいに寝てしまった。
遅くまで
今日は6時50分から仕事。 観音寺でL型キッチンカップボード付きを組む。
いつももう1人いるのだけど、今日はなぜか休み。 変わりに社長の奥さんが来た。 けど何も仕事できないけれど……ゴミをまとめたり、道具取ったりするのに使えるから連れてきたらしい。
昼間ではけっこういいペースで進んでいたような気がする。 ただ人口大理石の天板でそれの接合に1時間ほどかかった。 これさえなければいいのに……
扉調整のドアもいっぱいあったし、コーキングを打つ場所もいっぱいあった。
で、会社に帰ってきたのがなんと……21時10分。。。。。。
明日は日曜日だけど仕事がある。 あ~眠い。
やすみ
今日は休みなり。 昨日の18時半ごろ、いきなり「明日休みだから」って言われても困るっての……
9時くらいに起きてまずは掃除洗濯をする。 そしてパソコンをやりながらテレビを見て……
ちょこっとMySQLの勉強をした。 とりあえずMySQL Command Line Clientというので操作をしてみる。 本やウェブページを見ながらやって、データベースの作成・削除、テーブルの作成・削除、テーブルにデータ登録、データ検索をやった。 MS-DOSチックでむずかしい……
それとデータベースを見るのに「show databases;」と打つのだけど、databasesは複数形なので最後にSがつく。 これだけでなくて、fieldsとかも複数形のSがつく。 ValuesもSがつく。 この複数形というのがやっかいだな。
日本人なので複数形のSや現在形・過去形、三人称とか苦手です。
で、PHPと連携できるらしいので、MySQLに接続してデータを取得してそれをページに表示するやつが載っていたのでやってみた。 だけど謎の文字化け。 アルファベットは全て正常に表示される。
MySQL Command Line Client上では日本語も正常に表示されている。 ただ、それをPHPで取り込むと文字化け(?)して全て?????になってしまう。 これは文字化けではなく、読み込めていないのかな~
文字コードの設定が原因かと思っていろいろいじってみた。
PHPのファイルをEUC-JPに変更して、MySQLの設定でEucjpmsというのにしてみた。 HTMLもEUC-JPにした。
なのに変わらなかった。 Eucjpmsというのがいけないのかとおもって、全てSjisにしてみた。 だけど同じだった。
うーん、これが解決できない限り、データベースを扱う事は難しい…… なんだろ、原因。
ヘルメット着用
今日の現場はありえない。 ヘルメット着用しないと中に入れないらしい……
車と人数の関係で、現場直行直帰になった。 7時40分から幸町で仕事。
18時前に終わったのに、これからまた別の現場にいくらしい…… オレだけ原付で松縄まで移動。 そこで完成して明日引き渡し予定の新築の家のお風呂を手直し。
終わったのは20時前……
家に帰ってきてソバを食べながらテレビを見た。
プレーオフ第二ステージ第二戦。
ソフトバンクVS日本ハム
先発は斉藤と八木。
両投手好投で、8回を終わってどちらも無得点。 9回の表、ソフトバンクは0点で終わった。
9回の裏、先頭打者の森本にフォアボール、続いて送りバント。 バッターは怖い小笠原。 ここは敬遠する。
1アウト1塁2塁。 そして4番セギノールと勝負する。 見事三振!!
まだまだ気が抜けない。 5番稲葉。
打球はセンター前へ……と思ったが2塁手仲澤が好プレイで取る。 そしてセカンドへ送球。 しかしセーフ。 その間に3塁を回った森本がホームへ戻ってくる…… 急いでバックホームするが間に合わず……
0対1のサヨナラ負け……
ピッチャー斉藤が泣き崩れていた。 ズレータとカブレラが両腕を支えてベンチに下がってくるシーンが印象的だった。
今年は優勝できなかったけれど……来年こそはきっと。。。
プレーオフ第二ステージ ソフトバンク対日本ハム 第一戦
今日の仕事は7時から。 鬼無でお風呂。 新築和室メインの二世帯住宅。 17時10分まで。
さて、今日からプレーオフ第二ステージが始まる。 日本ハムはペナントレース1位通過なので1勝のアドバンテージがある。 第二ステージは3勝したほうが勝ち。
まず1回の表。 川﨑、大村と連続ヒット。 3番柴原は送りバント。 1アウト2塁3塁。 いきなりのチャンス!
バッターは4番松中。 レフトにフライを打ち上げる。 サードランナー川﨑がタッチアップ。 スライディングセーフ!
1回表、ソフトバンク先制!
つづくズレータは敬遠された。 そして6番本多。 デッドボールを受けて、2アウト満塁! ここで7番カブレラ!
たまに活躍してくれる外国人選手。 さて……結果は……2塁ライナー。 てっきり2塁の頭の上を抜けたかと思ったけれど、日本ハム田中の好プレイに阻まれる。
1回裏、いきなりピンチをむかえたが、ピッチャー杉内が踏ん張る。
3回裏。 1番森本がヒット。 2番田中が送りバント。 3番小笠原がフォアボール。 1アウト1塁2塁。 ここで4番セギノール。 セギノールはスイッチヒッターの4番、恐ろしい……
そのセギノールにレフト前に運ばれてしまう。 同点に追いつかれた…… つづくバッターは三振。 そして6番新庄。
今シーズンで引退する新庄。 その新庄がライト前に落ちるヒット。 2点目が入ってしまった。
3回裏を終わって1対2。 まだまだ試合の行方はわからない。
試合は動きがなく8回まできてしまった。 日本ハム先発のダルビッシュがなかなかの好投を見せ、打ち崩せない……
8回裏にさらに1点取られて9回表。
ランナーを2塁まで進めるが、そのまま3アウト。
大事な初戦を落としてしまった…… これで日本ハムは王手。 1勝のアドバンテージはでかい……
さてPHP。
今日はMySQLというのを調べた。 どうやらデータベースらしい。 データベースとは何か。 ようするにエクセルみたいなやつらしい……? データベースに登録されているものを検索して表示したりできるらしい。
まずはインストールから。 しかしインストールにすっごい手間取った。 けっきょくインストールしただけで終わってしまった……
ドラクエ5 PHP掲示板12
今日は7時から仕事。 太田でI型キッチン、カップボードつき。 17時前に終了。
最近朝が寒い。 会社に行くとき、原付で手袋が必要になってきた。 あ~冬はイヤだなぁ。
今日はひさびさにドラクエ5をやった。 だいぶ前に始めてエスタークを倒してからLV上げばかりやっていた。 エスタークを15ターン以内で倒すと、アイテムがもらえる。
そして今日一度目の挑戦。 なんと……エスタークを17ターンで倒せた!! 「これはいける」と思い、再び準備をして再戦!
なんと15ターンギリギリで倒す事が出来た!!
以下戦略、構成など。
主人公 LV63
メタルキングの剣
王者のマント
光の盾
太陽の冠
星降る腕輪
命のリング
炎のリング
グレイトドラゴン LV54
オリハルコンキバ
銀の胸当て
知力の兜
星降る腕輪
グレイトドラゴン LV40
オリハルコンのキバ
銀の胸当て
知力の兜
星降る腕輪
スライムナイト LV60
吹雪の剣
メタルキング鎧
メタルキングの盾
メタルキングヘルム
星降る腕輪
息子 LV60
吹雪の剣
天空の鎧
天空の盾
天空の兜
エルフのお守り
星降る腕輪
ホイミスライム LV40
毒針
魔法の鎧
水鏡の盾
風の帽子
星降る腕輪
メインメンバーは、主人公、グレイトドラゴン2匹、スライムナイト。
全員がエルフの飲み薬をいっぱい持っている。 主人公は戦いのドラムと復活の玉、グレイトドラゴン1匹(強いほう)は復活の玉。 あとのアイテム欄は全部エルフの飲み薬。
戦略。
主人公が戦いのドラム。 あと全員でひたすら攻撃。 HPがピンチになったら、スライムナイトか主人公をホイミスライムと交換、ベホマズンで全員回復。 凍てつく波動をくらったら、主人公が戦いのドラム。
息攻撃やメラゾーマで主人公かスライムナイトのHPがやばくなったら息子と交換。 なるべく回復しないでいけるように。
グレイトドラゴンは息無効なので主人公やスライムナイト、息子より先にHPがなくなることはほとんどない。
フバーハはしない。
ひたすら攻撃で15ターンでエスターク撃破!
そして名産品をもらいました。 やった~♪
PHP掲示板12
今日やったこと
・パスワードの暗号化
crypt関数というのがあったのでそれを使ってみた。 暗号キーはトップで決められるようになってるけど、それは別に決められるようにしないでいいかな。
crypt関数とは、crypt($pass,$angou) と使うみたい。
$passは8バイトまで、$angouは2バイトまでらしい。
ログをファイルに書き込む前に$passに暗号化された文字を当てはめてログファイルに書き込み。
パスワードを照らし合わせるときは、削除キーに入力されたものを暗号化してログファイルと照らし合わせる。 これでとりあえずはできた。 ただ暗号キーが2バイトまでしか使えない。 暗号キーに使用できる文字は、英数字(大文字小文字区別あり)とピリオドとスラッシュだけらしい。 掲示板の削除キーの暗号化だから、それほど複雑にしないでもいいのかな~
暗号キーをログファイルで見てみると、暗号化されたパスワードの最初の2文字が暗号キーになってるっぽい。 けどこれをどうしろと…… 調べた限りではcryptでは復号化はできないらしい。 総当りしかないんだって。
まぁ暗号化はいいや、これで…… もっと複雑なのが必要になったらそのときに……
・URLのpage=○○のところに負の数やありえない数値を入れられた場合、強制的にpage=0にするようにした
これは簡単だった。 ifとか使わないで最初の変数に代入するところでできた。
今日やったのはこれくらいかな。 あとソースの中にコメントをちょこっと。 見やすくなったような気がするけど、余計な文字が増えたからファイルが大きくなった……
「MYSQLを勉強しろ」と指示があったので、明日からはそれが何なのかから調べます。 ブログのMovable Typeで使ってるけど、ただ使ってるだけだかなにをどうしてるのか……さっぱりヽ(;´д`)ノ
サンプル
ログファイル
ソース