2011年3月1日火曜日

3/1覚書

1時間目は
クラスの概念再び。
クラス図。これは概念だからね。
親から子へ継承できるよ。

☆オブジェクト指向
オブジェクト指向の考え方で割りといい感じの説明
ここだけ読んでもおk。

飛び飛び過ぎてつらい・・・・・・。

2時間目
smarty入門っぽいサイト
早わかりsmarty
いずれは見ようウノウラボ

PHP-users メーリングリスト
不明点もちゃんと書けば教えてくれるよ。質問内容は質問者の文章を参考にどぞ。

いつかは行こうPHP勉強会

さてSmarty設置とバーチャルホスト設定。
eclipce、XAMPP起動して・・・・・・sample_templateって名前でプロジェクト作成。

ダウンロードしたLatest Stable Releaseの
Smarty 3.0.7 (.tar.gz) (.zip) February 11th, 2011のzipを保存して解凍。
そこからlibsフォルダをC:\pleiades\xampp\htdocs\smarty_sample(実際のフォルダね)へコピー。

C:\pleiades\xampp\apache\conf\extra\httpd-vhosts.confをエディタで開く。
そんで一番下の所をコピーしてその下に貼り付けて、以下に改変。
一緒に##NameVirtualHost *:80ってあるから、##取るよ!

## Smartyサンプル##
<VirtualHost *:80>
    DocumentRoot "c:/pleiades/xampp/htdocs/smarty_sample"
    ServerName smarty_sample
    Directoryindex index.php index.html
    
    <Directory "c:/pleiades/xampp/htdocs/smarty_sample">
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>
保存したらXAMPPでApache再起動。


3時間目
C:\WINDOWS\system32\drivers\etc\hostsをエディタで開き、最下部に下記追加。
## Smarty サンプル
127.0.0.1 smarty_sample
http://smarty_sample/で開くかチェック。
現時点ではIndex of /ってページが出れば成功。
意味を知ろう
127.0.0.1 【ループバックアドレス】
127.0.0.1 自分のlocalhostのこと。
hostsファイル 【hosts file】
localhostのIPアドレスやホスト名が記述されたシステムファイル。
名前解決 【name resolution】
DNSのこと。

今までのBBSとか住所録もバーチャルホストに組み込んでみよう。
ていうかこれやらないと今までの課題が見れなくなる;
<VirtualHost *:80>
    DocumentRoot "c:/pleiades/xampp/htdocs/address_book"
    ServerName address_book

4時間目

テンプレートからHTMLを呼び出すよ。
まずは以下のフォルダを作るよー。
templatesフォルダの名称は好きにつけていいけど、慣例でコレが多い。
たまにtplって省略できる。
これらのフォルダは攻撃対象になりうるため、本当は公開領域に置かない。
置くならhtdocs以上のフォルダに置く。
* templates
* templates_c
* config
* cache

んでtemlpatesフォルダにhello.tplファイルを作成。
smaty_sample直下にhello.phpを作成。
内容は以下。
//sumarty.classを読み込み
require('./libs/Smarty.class.php');

//smartyクラスのインスタンスを作成
$smarty = new Smarty;

//テンプレートファイルの置き場所を指定
$smarty ->template_dir="./templetes";

//変換したテンプレートファイルが置かれる場所
//コンパイル・ディレクトリ
//実際に実行されるphpファイル
$smarty ->compile_dir="./templetes_c";

//assignで変数名と値をセット
$smarty ->assign("name","world");
//displayでブラウザに出力
$smarty ->display("hello.tpl");


そしたらhttp://smarty_sample/hello.phpを開くと、
Hello,world! って文字だけ出るよ。

サーバーサイドスクリプト/クライアントサイドスクリプト
呼んで字のごとく。

コンパイルって何?
ヒトが書いたプログラムを機械がわかる言葉01 00 10・・・・・・などに翻訳してあげること。

5時間目
tpl内に{* *}でコメントがかける。ソースにも出ない。

配列でやてみよう。
array.php
//sumarty.classを読み込み
require('./libs/Smarty.class.php');

//smartyクラスのインスタンスを作成
$smarty = new Smarty;

//テンプレートファイルの置き場所を指定
$smarty ->template_dir="./templetes";

//変換したテンプレートファイルが置かれる場所
//コンパイル・ディレクトリ
//実際に実行されるphpファイル
$smarty ->compile_dir="./templetes_c";

$smarty ->assign("arch",
    array(
    "PHP",
    "ASP.NET",
     array("JSP","サーブレット")
     )
   );
$smarty -> display("array.tpl");

array.tpl
サーバーサイド技術には{$arch[0]}、{$arch[1]}、のような技術があります。
連想配列の入れ子の表示方法がわからんかった・・・・・・;

2011年2月28日月曜日

2/28覚書

1時間目
☆クラス復習。

クラスの内容と実行ファイルを分けましょう。
includeさせるほうが一般的だし管理も楽。

ファイル名はHuman classなら、最初を大文字にしてHuman.class.phpとなる。

set_ini関数
ini_set()
レンタルサーバーで直接php.iniを触れないときに利用する。
いいんちょ曰く、この説明はいっちーが話していたそうな。
すまん覚えてない。

Notice: Undefinedとは、
未定義変数の場合の警告。エラーではないがあるとよろしくない。
デバッグ時にphp.iniの
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATEDを
error_reporting = E_ALL
; & ~E_NOTICE & ~E_DEPRECATED
に変更。;にするとコメントアウトする。

よろしくない理由はエラーが残っているとHTML以外のデータファイルの場所がわかり、
ハッキングなどの攻撃を受ける恐れがあり、防ぐための対処である。

授業の疑問。べたな書き方言うけどそこから勉強するんじゃねえの?

クラス継承
extendsというコードで継承させる。

目覚まし時計の行動を例に。
Tokei.class.php
MezamashiTokei.class.php
call_mezamashi_class.php

上記ファイル名で3つ作成。
call_mezamashi_class.phpをブラウザで出してみよう。

Tokei.class.php

<?php
class Tokei {
 function getTime(){
  return date('H:i:s');
 }
}
?>

MezamashiTokei.class.php

<?php
require_once('./class/Tokei.class.php');

class MezamashiTokei extends Tokei {

 function getTime(){
  return date('H時i分です');
 }

 function getBell(){
  return "リンリンリン!";
 }

}
?>

call_mezamashi_class.php

<?php
require_once('./class/MezamashiTokei.class.php');

$mezamashi = new MezamashiTokei();
print $mezamashi->getTime()."<br>";
print $mezamashi->getBell();

?>

Tokei.class.phpのgetTime()が、
MezamashiTokei.class.phpのgetTime()に上書きされている。
実際にMezamashiTokei.class.phpの下記部分を/*~*/で囲うとわかるよ。
function getTime(){
return date('H時i分です');
}

関数の上書きをオーバーライブというそうな。

privateとpublic
アクセス件の一種。何も書かなければpublicとして扱われる。
※基本Functionの前にprivate置くことはありません。class内の宣言とは違います。

ここから引用。
PHP5のアクセス制御にprivate、protected、publicがあります。
それぞれの違いを明記しておきます。
private そのクラスからしかアクセスできない
protected そのクラスと、サブクラスからしかアクセスできない
public どこからでもアクセスできる

ごめん。privateとpublicをつけてやるの聞いてなかった。
あれはアクセス権を理解するための処理にしかすぎない、と思ってしまいますた。
つうか同時に存在するクラスってその時点でクラス分けるべきだとおもうのだ。

Javaでの参考情報。とほほのWWW入門から修飾子
ていうかクラス図ってまたJavaですか。
UMLの概念を常に持ってほしいってことですね。
自分も忘れかけてたので再度紹介。
astah* community無償のUMLモデリングツール。せっきー紹介。
まあ、初日ですから。

2011年2月25日金曜日

2/25覚書

今日で拡張最後。
何とか更新まではこぎつけたものの、最後のエラーチェックが通らない・・・
管理者判定。これ便利だなあ。直リンク防止用だね。

ユーザー情報更新処理まではできなかったなぁ;

くわっちょお疲れ様!!
来週から見守ってて~

AAずれご容赦を;


。 ◇◎。o.:O☆οo.
。:゜ ◎::O☆∧_∧☆。∂:o゜
/。○。 ∂(*゚ー゚)O◇。☆
/  ◎| ̄ ̄∪ ̄∪ ̄ ̄ ̄|:◎:
/    ☆。|。.:*・ありがとう・:*..:。|☆
▼       。○..io.。◇.☆____| 。.:
∠▲―――――☆ :∂io☆ ゜◎∂:.

2011年2月24日木曜日

2/24覚書

今日も今日とてログイン処理。
そして何とかできたupass_update。たぶん。
でもソース長いよ。それでもよければどぞ。

session_start();

//セッションハイジャック対策
session_regenerate_id(true);

require "./include.php";

//ログインチェック処理読み込み
require_once "./ctr/login_ctr.php";

//エラーチェック読み込み
require_once './include_errorcheck.php';

$n1password = $_POST["n1password"];
$n2password = $_POST["n2password"];
$password = $_POST["password"];

$sql ="SELECT * FROM user WHERE user_id = '".$_SESSION["user_id"]."'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);

//旧パスワード判定と代入
if($password !="" || $password !=NULL){
  if ($row["password"] == $password) {
   $_SESSION["password"] = $row["password"];

  }else{
   if ($row["password"] != $password) {
    $error_msg["ecpass"]= "パスワードが違います";
    $error_yn = "y";
    }
   }


  if($n1password == $n2password){
   $_SESSION["n1password"] = $n1password;
   $_SESSION["n2password"] = $n2password;
   header("Location:./upass_complete.php");
   //print "デバッグ用目印。使うときはheaderに//をつける";
   exit;

  }else{
   if($n1password != $n2password){
    $error_msg["e1pass"]= "パスワードが一致しません";
    $error_yn = "y";
    }
   }
}

print_r($sql);
print_r($_SESSION);
print_r($_POST);
?>

<!DOCTYPE br PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ユーザーパスワード変更画面</title>
</head>
<body>
  <h1>ユーザーパスワード変更画面</h1>
 <table border=0  cellspacing="0" cellpadding="5" Align=Center>
  <tr>
  <td>
   <?php echo $_SESSION["user_nickname"] . "さんでログインしています" ?>
  </td>
  <td>
    権限:<?php echo $authority[$_SESSION["authority"]]?>
  </td>
  <td>
     <a href="./ctr/logout_ctr.php">ログアウト</a>
  </td>
  </tr>
  </table>
 <hr noshade size="1">
 <hr noshade size="1">
  <!-- ユーザーパスワード変更画面 -->

 <form action = "upass_update.php" method = "POST" >
  <table border="1" cellspacing="0" cellpadding="5" bordercolor="#333333" Align="center">
  <tr>
   <td>現在のパスワードを入力してください<br><span style="color : #2f4f4f; font-size : 9pt">4文字以上8文字以内</span></td>
   <td>
   <!--現パスワード -->
   <input type = "password" name = "password" value = "" /><br>
   <span style="color : red; font-size : 9pt"><?php echo $error_msg["epass"]; ?></span>
   <br>
   <span style="color : red; font-size : 9pt"><?php echo $error_msg["ecpass"]; ?></span>
   </td>
  </tr>
  <tr>
   <td>新しいパスワードを入力してください<br><span style="color : #2f4f4f; font-size : 9pt">4文字以上8文字以内</span></td>
   <td>
   <!--名 -->
   <input type = "password" name = "n1password" value = "" /><br>
   <!-- エラーメッセージの表示 -->
   <span style="color : red; font-size : 9pt"><?php echo $error_msg["e1pass"]; ?></span>
   <br>
   <span style="color : red; font-size : 9pt"><?php echo $error_msg["e2pass"]; ?></span>
   </td>
  </tr>
  <tr>
   <td>もう一度新しいパスワードを入力してください<br><span style="color : #2f4f4f; font-size : 9pt">4文字以上8文字以内</span></td>
   <td>
   <!--フリガナ姓-->
   <input type = "password" name = "n2password" value = "" /><br>
   <br>
   <!-- エラーメッセージの表示 -->
   <span style="color : red; font-size : 9pt"><?php echo $error_msg["e1pass"]; ?></span>
 </td>
 </tr>
</table>
 <input type = "submit" name = "send" value = "変更" />
 </form>
 <hr noshade size="1">
</body>
</html>

2011年2月22日火曜日

2/22覚書

今日も1時間目から実習。
ループしてログアウトできない・・・・・・昼直前まで検索等行うも解決ならず、くわっちょにHELP。
したらあったよおかしいところ。
//session開始
session_start();

//セッションハイジャック対策
session_regenerate_id(true);

//データベース読み込み
require "./include.php";

//ユーザー名とパスワードが一致したらPOSTに格納
if($_POST["user_name"] !="" || $_POST["user_name"] !=NULL){
 $user_name = $_POST["user_name"];
}
if($_POST["password"] !="" || $_POST["user_name"] !=NULL){
 $password = $_POST["password"];
}
//XSS対策
$user_name = hg($_POST["user_name"]);
$password = hg($_POST["password"]);

require_once './include_errorcheck.php';

//print_r($_POST);

//ユーザー名を指定検索することでif判定と同等の処理。
$sql ="SELECT * FROM user WHERE del_flg=0 AND user_name ='".$user_name."'";
 $result = mysql_query($sql);
//上記が通らないとデータが出ない。
//$row = mysql_fetch_array($result);
//print ($error_msg["euname"]);

//if($row["password"] == $password){
//上の$resultは抜けていたが、NULL判定がないために、
//『$passwordは空欄で正しい』という処理になっていた。

//$resultできたらパスワード判定と代入

if($row = mysql_fetch_array($result)){
 if ($row["password"] == $password) {
 $_SESSION["user_name"] = $row["user_name"];
 $_SESSION["user_nickname"] = $row["user_nickname"];
 $_SESSION["authority"] = $row["authority"];
 header("Location: ./menu.php");
 exit;
 //print "デバッグ用目印。使うときはheaderに//をつける";
 }else{
 if($row != mysql_fetch_array($result)){
  $error_msg["euname"]= "ユーザーが確認できません。";
  $error_yn = "y";
 }

  if($row["password"] != $password){
   $error_msg["epass"]= "パスワードが間違っています";
   $error_yn = "y";
  }
 }
}

うー、とりあえずなんとか。
ユーザー名だけが合って、パスワードが間違ってたら×
エラーの言葉おかしいような気もするが、今日はログインここまで。
気分転換にmenuの表示判定。
<h2 Align=Center>メニュー</h2>
<table border=0  cellspacing="0" cellpadding="5" Align=Center>
 <tr>
 <td>
  <?php echo $_SESSION["user_nickname"] . "さんでログインしています" ?>
 </td>
 <td>
   権限:<?php echo $authority[$_SESSION["authority"]]?>
 </td>
 <td>
    <a href="./ctr/logout_ctr.php">ログアウト</a>
 </td>
 </tr>
 <tr>
 <td>
  <ul type="circle">
  <?php if($_SESSION["authority"] ==1){?>
   <li><a href="./index.php">一覧表示</a></li>
   <li><a href="./upass_update.php">パスワードの変更</a></li>
  <?php }else{?>
   <li><a href="./index.php">一覧表示(新規登録・更新・削除)</a>span予定</li>
   <li><a href="./upass_update.php">パスワードの変更</a></li>
   <li><a href="./user_insert.php">ユーザーの登録</a></li>
  <?php }?>
  </ul>
 </td>
 </tr>
</table>

明日はindexでのユーザーと管理者の表示判定・・・・・・
あー、やっぱし変数化がほしいいぃいい><

2011年2月21日月曜日

2/21覚書

1時間目からsession認証実習。
相変わらずループで出ないなあ・・・・・・。
2時間目
昨日のダメージが今頃戻ってきた。いっぱい寝たのに眠気と戦い。

3時間目以降も一緒なのだけれど。
やぎーにifで変数にしたuser_nameとpasswordが一致したら遷移を教えてもらって、
やってみたら、エラー処理は入れてないけど、insertしていないIDははじく。
なぜかでけた。

しかし一歩進んで二歩下がる。
メニュー画面でニックネームと権限表示。
$rowでいいのかなー。

あれ、いつの間にかまたログインできない;
くわっちょ救援隊出動で直った。
//session開始
session_start();

//セッションハイジャック対策
session_regenerate_id(true);

//データベース読み込み
require "./include.php";

$user_name = hg($_POST["user_name"]);
$password = hg($_POST["password"]);

//ユーザー名を指定検索することでif判定と同等の処理。
$sql ="SELECT * FROM user WHERE user_name ='".$user_name."'";
$result = mysql_query($sql);

//上記が通らないとデータが出ない。
$row = mysql_fetch_array($result);

if($row["password"] == $password){
 $_SESSION["user_name"] = $user_name;
 header("Location: ./menu.php");
 //print "デバッグ用目印。使うときはheaderに//をつける";
}
//エラーMSG
$error_msg["ename"]="ユーザー名が見つかりません";
$error_msg["epass"]="パスワードが一致しません";

?>

また一歩(ry

session破棄できない(´;ω;`)ウッ…
今日はあきらめて、またあした~

2011年2月20日日曜日

2/19~20河津桜

【注意!!】
【かなり残念なネタにあふれています。】
【気分を害されても責任は負えません。ご了承ください。】


今回の宿は全てに対し言葉に出来ない。
いや、何もかも最悪だった、と表現でもしたいが、
後味の悪さと自らの選択に自責がつのり、音にしたくない。

事の顛末は宿が圏外ゆえまとめて投下
繋がってたら全世界に詳細にツイートしたかった。

友人+友人母(料理研究家。本当に腕が良い)+友人娘で河津桜を愛でに女4人旅。
親子旅で、友人母をもてなすのがコンセプトだった。

!------------------引用ここから---------------------------
【予約内容】
プラン名:【1泊2食】四季折々の伊豆の幸を味わう贅沢プラン。
チェックイン可能時間:14:30~18:00
チェックアウト時間:11:00
プラン内容:山間の一軒宿で伊豆の幸を味わう贅沢プラン。
【夕食】伊豆料理~フレンチテイスト~前菜9種のサラダ、サザエのエスカ
ルゴ風、伊豆牛の陶板焼き、焼きたてパン、日替わりスープ、伊豆牛のロー
ストビーフ等。
【朝食】贅沢健康和食、地物朝採れ野菜や敷地内の山で採れる山菜等をふん
だんに使った創作和食膳、他伊勢海老や金目鯛のお味噌汁等。
食事:朝あり
夕あり
------------------引用ここまで---------------------------!

残念ながら河津桜は三分咲きでトラブルで写真も撮れず、
喫茶店も無く、風も冷たくなり早めのチェックイン。
予定した時刻より大分早まるため宿へ連絡するも出ず……。
発信履歴は13時-14時のあいだに8回。これってCB/発信業務じゃない。

洋風で、フレンチディナーに近ければ尚良く、友人母希望の洋室(4人)で、
条件に合い、評判が高めででも批判もしっかりしてて・・・の宿を探し、決めた。

ペンションファンファーレクラブ

http://www.jalan.net/uw/uwp3000/uww3001.do?yadNo=378789

だが。
玄関鍵かかってる。インターフォン応答なし。

14時過ぎで他宿泊客は見えず、玄関先に経営者のご友人だか
スタッフだか業者だか良く分からんが、女性一人困惑気味に待ちぼうけ。

この時点で地雷の存在を察知はした。そんな事は無いと信じたかったが。

数分でスタッフ到着。
部屋に案内されるなか、食堂経営がメインで、
河津桜祭りで客の入りも多くて忙しくてすみませんね。

だそうだ。(ここで女三人軽く切れる)

転送ぐらい苦でもなかろう。
この祭りで賑わう期間のみ転送設定の手間が惜しいか。
電話会社への高くて千円~数千いくらが惜しいか。いずれでもないだろう。

部屋はトリプル+エキストラベッド有りで予約するもお忙しいようで用意&説明なし。
部屋数は10室。当日の組は3組。
たかが三組の客情報の把握も困難か。
施設内の自販機が故障していた旨を伝えるとこちらも忙しい。そうですか。

ぜひリンクを見て欲しい。
温水洗浄トイレあり→部屋付ではなく共用部分男女1つずつのみ
まあこの程度は施設設備の範疇でも良いだろう。

大理石貸切風呂2(各サウナ付)24h可→予約表には入浴時間23:00迄と矛盾。

とりあえずは散策で冷えた身体をとにかく温めたいと先にお風呂へ。
お風呂は家族風呂の一回り大きなもの。
大理石いいえタイルですが何か?
設備にサウナ、表記あり、実際に洗い場に入口ありましたが、
サウナ入口前に桶山積み。

暗い。冷たい。スイッチ無い。

…………楽しみにしていた友人母落胆。私のテンションも激落。

サウナは最後まで説明無くスイッチもわからず利用不可。
夏期限定の張り紙も見当たらず。

さらに、アメニティ表記のバスローブ。
有料ジャグジー利用者のみと質問して初めて回答。
表記はどこだ…………。
指摘すればあからさまに不快感の接客業従事者。
浴衣ですら言わなきゃ出さないなら表記するな。

入浴を済ませ夕食まで待つ。食事はすべて1階の食堂だ。

そして、地雷しかないモノが来た。

■伊豆料理~フレンチテイスト~前菜9種のサラダ
前菜はALL市販の和もの。皿『だけ』洋風。
function menu($menu){ 
if(! "フレンチ" || "イタリアン"){ 
return "( ゚Д゚)<br >\n"."(゚Д゚)<br >\n"."(゚Д゚)...<br >\n"; 
} 
ゴマ豆腐がフレンチテイストですかそうですか。
空腹ゆえ食べる。この時点ではまだ許せる味だった。

■伊豆牛の陶板焼き……フレンチは?
しかも伊豆牛とは名ばかりの外国産の適当な肉。
今更産地偽装ですか。私にはSAN値偽装です。
『生で食べれます』と仰せだが、見本を見せて欲しいものだ。
おまけに固形燃料を下げる時までも消さないスタイルは、
私の人生の中で初めてだった。
他に経験した方は居るのだろうか。
脂だけが灼かれ広がる煙と匂い。安値焼き肉の臭みが服に身体に全部染みた。
友人母だけでも浴衣でよかったと心底思う。
なにせロビーはもとより、利用した三階の廊下にまで臭いが流れ、
寝る直前まで窓を開ける程だったのだ。

■サザエのエスカルゴ風
つぼ焼きにせずガーリックと料理酒とオリーブオイルをかけて焼いただけ。
塩味はにんにく臭くて感知不可。
磯臭さとオイルの風味が反比例してすごいくさい。
ガチガチに固くなった身に切れ込みも無い。
何故添えられたシルバーがスプーンなんだ。
おつゆをひと舐めで断念。無理に食べた友人胸焼け。

■日替わりスープ
ボタン肉inミネストローネ。その神経を疑う。
『このイノシシは猟で仕留めるより臭みがない』
鼻をつく豚臭さ。匙ですくえる香辛料で誤魔化しつつ仕上げた逸品に
御高説の女将っぽいそれの存在を疑う。
謝れ! 猟友会の皆さんに謝れ! マジで!!
売って貰えないだけだろと邪推せざるを得ない。
スーパーの刺身に市販のドレッシングかけてもマリネにはならんよ。
ここでようやくフランスパン登場。
馴染みのある味すぎてバゲットとは言わん。

■伊豆牛のローストビーフ
オージーのローストビーフ三切れ。きゅうり薄切りふた切れ。
一見で驚きのあまり吹き出したが、ソースは前菜の流用。

謝れ! 伊豆牛とフレンチに謝れ!!

きゅうりでソースをどけて醤油で食す。
きゅうりの使い方位説明が欲しい。

最大限譲歩でマシだったのはパンとデザートのいちご(1/2)だけ。
チョコケーキ、コンビニのほうがマシ。

お子様ランチ。幼児の加算は2500円。
焦げたコロッケ、焦げすぎてハンバーグに見えるコロッケ、
わずかなサラダにプロセスチーズ、俵型を輪切りにしたおにぎりのワンプレート。
プラス別皿(頼んでもいないのでおそらくセット)の刺身はスーパー以下略。

その場でクレームをいう必要?
わざわざ場の空気を濁し、精神的ダメージを負ってやるほど優しくはない。

機械的に給仕するスタッフに、エキストラベッドの未対処を伝えたときも、
忙しいと言い訳する始末。もういいから。

げんなりな食事を終えてすぐに臭い落としに再度入浴。
その後、一階の喫煙所兼歓談室にに行くと先客が居て、相席でテレビ見てるとスタッフ登場。
ボリューム絞れと上の客からクレーム…………。
いやいやいやいや壁薄すぎ。
ならばアップライトピアノにアンプに46インチのBRAVIA置くな。


翌朝。戦々恐々しつつ準備中の食堂を偵察。

【朝食】贅沢健康和食、地物朝採れ野菜や敷地内の山で採れる山菜等をふん
だんに使った創作和食膳、他伊勢海老や金目鯛のお味噌汁等。

冷凍のアジ開き陶板焼きが創作和食と呼ばれるようになったのはいつからだ?
昨夜の匂いを生臭さに変えて再び浴びろと。

朝食は取らずにチェックアウト決定。
三賢者全て承認。
フロントから朝食のコールが来て、急遽出立のため(嘘)で断ると、
謝罪の言葉をこちらが伝えている途中で電話を切る暴挙。
嗚呼、元々マナーが無いのだと判断した。

予想通り、荷物をまとめ出る際には焼き魚の匂いが充満していた。

最後の清算時も素晴らしい対応だった。
エキストラベッド利用時は別料金だが、夕食の給仕の不手際もあり、
幼児利用分と合せて+5000円で良いと紋切。
不手際は全てだろうと言いたくなったが、馬に念仏を実践する余裕は無く、
友人とともに支払う。
明細は出さない。素晴らしい処理だ。
清算時に入湯税の記載が無かったことも付け加えよう。

更に信じがたい続きがある。
朝食抜きは辛かろう、と子供用に海苔巻きを出される。
スーパーで前日購入としか見えない海苔巻き。
ラップも巻かず、チャック付ビニールに直入れで変形している。
出された瞬間に$menu展開。条件を追加し、
}をここに持ってくるべきだった。

気遣いのみ感謝しつつ心の底から辞退し迅速に離脱。
セブンイレブンで購入したいつものサンドイッチが虚しいうまさだった。
函南町のまともなフレンチで口直しして帰路につく。

これで値段相応と満足できるはずもなく。
じゃらんで平日6000円ならば納得だ。心構えが違う。
しかし、シーズン料金14000円だ。
差額8000円はどこに使われているのだろう。

袖すりあうも他生の縁とは言うが、対価に対する提供が無い場合、
相応の処方がある。

ここで衝撃的な事実に気づく。
まとめゆえの弊害だが、いや、じゃらんにリンクが無かったのだが、
http://www.fclub.jp/index.html
これが宿のサイト。まとめ中に初めて出てきた。

じゃらん側にある峰温泉のかけらも無い。
単純泉の記載。当然浴室での掲示などあるわけない。
記述に差異があっても良いのか。温泉法は適用されないのか。
軽く調べてみるが、温泉である以上、開示しなくても良いという説明が見つからない。

そもそも、じゃらんおよび宿の情報を信用してはいけなかったのか……。

永遠に同じ程度の提供が不可能なのは理解する。
同名検索でヒットした別サイトがあり、どうも色々苦労があった様子。

だが。
マナー以上に経営者側のことを思いやる必要が必要なのか?

消費者様にはなりたくない、が、無理だった。
整理して整理して状況を書き留めてはいるが、思い出す度に虚しくなる。
今迄私は運が良かったのだ。
このような対応に一度も遭わず、旅の楽しさを享受してきた。
最低を知ることで今までの旅に感謝できる、貴重な体験をしたと思う。思いたい。

この場を借りて改めて同行者にお詫びする。

ペットと泊まれるだけの宿で売り込めばそもそも候補にならなかった。
この文章をさらにまとめ、宿の評価に投稿する。

旅ができる余裕が当分先になったため、次回以降は教訓を生かそう。

料理研究家の友人母がいつ席を立ったか。
――――知らないほうが良いこともある。