コンフィはオリーブオイルで低温調理した料理全般を言うみたいです。
味はちょっと薄かったです。
もっと塩を使うか、お肉を細かく切った方が良いかもしれないでです。
あと、どのように映っているか、調理中でも確認できるビデオカメラがあればいいですね。
カメラ、高いんだよなぁ・・・

バナークリックで応援よろしくお願いします。
前回までの状況はこちら。
最新ソースはこちら。
https://github.com/takishita2nd/hotel-mng
バリデーション処理とは、フォームで入力した値が、正しいかどうかを確認する処理です。
現在は入力された値がそのままデータベースに入るようになってしまっているので、パラメータチェック処理を入れて、エラーを返せるようにします。
今回は実装量が少ない方法で行きます。
以下のコマンドを入力。
$ php artisan make:request ManagementRequest
そうすると、App/Http/Request/ManagementRequest.phpが作成されます。
その内容を修正します。
class ManagementRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'name' => 'required|string', 'address' => 'required|string', 'phone' => 'required|digits:11', 'num' => 'required|numeric|digits_between:1,2', 'days' => 'required|numeric|digits_between:1,4', 'start_day' => 'required|date', ]; } }
authorize()の戻り値はtrueに変えます。
falseのままだとすべて認証エラーとなります。
rules()に各パラメータの確認内容を記入します。
こちらのサイトが参考になります。
https://qiita.com/fagai/items/9904409d3703ef6f79a2
あとは、コントローラーを変更します。
use App\Http\Requests\ManagementRequest; /** * 登録処理 */ public function store(ManagementRequest $request) /** * 更新処理 */ public function update(ManagementRequest $request)
確認を行うフォームのリスエスト処理の引数の型をManagementRequestに変更します。
これで、App/Http/Request/ManagementRequest.phpの内容が適用されます。
あとは、bladeにエラーを表示する領域を追加すればOK。
@if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif
クリックで応援よろしくお願いします。
LG G8X ThinQはLGからリリース予定の2画面スマホです。
キャリアはソフトバンクのみ。
通常は1画面ですが、アタッチメントでもう1画面増やすことができます。
この画面は製品に付属されています。
この2画面は、それぞれ独立しているため、二つのアプリを同時に扱えるというメリットがあります。
使い方次第では便利なのかもーと思います。
しかも価格も抑えめ。
スペックの比較です。
比較するのはPixel4です。
Pixel4 | Pixel4 XL | LG G8X ThinQ | |
ディスプレイ | 5.7インチ | 6.3インチ | 6.4インチ、6.4インチ |
解像度 | FHD+ 19:9 | QHD+ 19:9 | FHD+ 2340×1080ドット |
プロセッサ | Snapdragon855 | Snapdragon855 | SDM855 |
メモリ | 6GB | 6GB | 6GB |
ストレージ | 64GB/128GB | 64GB/128GB | 64GB |
サイズ | 147×68.8×8.2mm | 160.4×75.1×8.2mm | 160×76×8.4mm 2画面では 166×164×15.0mm |
重さ | 162g | 193g | 193g 2画面では 331g |
また、おサイフケータイ、指紋認証、ワンセグ、フルセグが付いています。本体のみ防水・防塵仕様になっています。
お値段、合計55440円。
このスペックで5万円台か。どこかでコスト削っているのか?
そうだな・・・2画面あるのだから、テレビみながらツイッターできる、と言うことができるのか。
それはそれで便利かも。
別に今のPixel3に不満は無いけどね。
バナークリックで応援よろしくお願いします。
前回までの様子はこちら。
最新ソースはこちら。
https://github.com/takishita2nd/hotel-mng
まあ、ここまで見ていただいた方々は、ほぼ100%思っていることがあると思います。
見づらい。
せめて、罫線ぐらい引けよ。
ということで、やります。
Laravelでは、public/css/app.cssを読み込んで、スタイルを設定しています。
じゃあ、ここにスタイルを書き足せばいいのか?と思うかもしれませんが、Laravelでは、もっと便利な方法があるんです。
sass/scssというんですけどね。
こちらにスタイルを書き込み、node.jsのプログラムを実行して、app.cssを作成することができるんです。
sass/scssは普通にCSSを書くよりも、少ないコードでスタイルをかけるので便利でした。
まずは、node.jsの準備。
$ sudo apt install nodejs $ sudo apt install npm $ npm install $ npm run dev
もし、npm installに失敗した場合は、imagemin-pngquantのバージョンが一致していないので、package.jsonのdevDependenciesに以下を書き足します。
"imagemin-pngquant": "5.0.1"
npm installが完了すれば、準備完了。
npm run devを実行すると、sass/scssのコンパイルが実行されます。
スタイルは何度も書き換えることが多いので、コンパイルが面倒くさい人は、
$ npm run watch
を入力すると、sass/scssを保存するたびに、それを検出してコンパイルしてくれます。
では、sass/scssを作成します。
resource/assets/sassの下に、_Management.scssを作成し、app.scssに以下を追加します。
@import "Management";
そして、_Management.scssに記述を追加。
table.management { width: 100%; tbody tr{ th { border: solid; border-width: thin; } .name{ width: 15%; } .address{ width: 20%; } .phone{ width: 15%; } .num{ width: 10%; } .date{ width: 10%; } .command{ width: 5%; } td { border: solid; border-width: thin; } .name{ width: 15%; } .address{ width: 20%; } .phone{ width: 15%; } .num{ width: 10%; } .date{ width: 10%; } .command{ width: 5%; } } }
bladeにスタイルを適用します。
<table class="management"> <tr> <th class="name">名前</th> <th class="address">住所</th> <th class="phone">電話番号</th> <th class="num">人数</th> <th class="date">宿泊日</th> <th class="num">宿泊日数</th> <th class="command">編集</th> <th class="command">削除</th> </tr> @foreach ($registerLists as $list) <tr> <td class="name">{{ $list->name }}</td> <td class="address">{{ $list->address }}</td> <td class="phone">{{ $list->phone }}</td> <td class="num">{{ $list->num }}</td> <td class="date">{{ $list->start_day }}</td> <td class="num">{{ $list->days }}</td> <td class="command">{{ Html::link('/management/'.$list->id.'/edit', '編集') }}</td> <td class="command">{{ Html::link('/management/'.$list->id.'/conform', '削除') }}</td> </tr> @endforeach </table>
これで見た目がだいぶ良くなりました。
バナークリックで応援よろしくお願いします。
前回までの様子はこちら
最新ソースはこちら
https://github.com/takishita2nd/hotel-mng
今回はスケジュール一覧を表示させたいと思います。
まずはルーティング。
Route::get('/management/schedule', 'RegisterManagementController@schedule');
コントローラー。
/** * スケジュール表示 */ public function schedule() { return view('register.schedule', ['Lists' => $this->registerManagement->getSchedule()]); }
リポジトリ。
予約名はテーブルが違うので、リレーションを使って参照します。
リレーション便利。
/** * スケジュール一覧を取得する */ public function getSchedule() { $lists = array(); $index = 0; $models = ReserveDayList::get(); foreach($models as $model) { $lists[$index] = array('day' => $model->day, 'name' => $model->reserveManagements()->first()->name); $index++; } return $lists; }
ビュー。
@extends('layouts.app') @section('content') <div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading">スケジュール</div> <div class="panel-body"> <table> <tr> <th>日時</th> <th>名前</th> </tr> @foreach ($Lists as $list) <tr> <td>{{ $list['day'] }}</td> <td>{{ $list['name'] }}</td> </tr> @endforeach </table> </div> </div> </div> </div> </div> @endsection
今回はいろいろ手こずった割には、コード自体はあっさりしたという。
ビュー側がオブジェクトじゃなくて、連想配列だったのが落とし穴だったわ。
でも、システムとしてはまだまだ足りないところがあるので、そこを対応していきます。
ここでまず必要なのは、サトウキビ。
これは紙の材料となり、地図を作成するのに必要になります。
サトウキビは水の周りにしか生えないので、川をくまなく歩いて、ようやく発見することができました。
サトウキビを拠点に持ち帰り、近くの水辺に植えておきました。
成長すれば収穫できるはずです。
次は、鉄が欲しいので、近くの洞窟を探検することにしました。
なんと、そこには廃坑があったのです!
これはラッキー。
廃坑は資材の宝庫!
でも、まだ深く探索するのは危険なので、鉄だけ回収して帰りました。
いずれ、きちんと探索します。
鉄を使ってはさみを作成。
はさみがあれば、蜘蛛の巣を回収できます。
蜘蛛の糸があれば糸を取り出すこともできますので、とりあえず、廃坑探検はここまで。
拠点を整備したい。
↑よかったらクリックお願いします。
完全栄養食はこちらの記事でまとめています。
完全栄養食をもっとおいしく食べたい。
前回食べてみたときは、スープではなくて、ソースと合わせたほうがおいしい、というのが分かったので、
ならば、市販のパスタソースでも十分おいしく食べられると思ったのです。
というわけで、購入しました。
いずれも、ヌードル本体の味にも負けず、しっかりソースの味も感じられました。
三つともとてもおいしかったです。
これをうまく組み合わせれば、おいしくBASE NOODLEを食べられますね。
しかも、糖質は少ないので、小腹がすいた夜に食べても罪悪感ないし、腹持ちもいい。
ほんと、これはお勧め。
前回、退職して確定申告を行ったときは、確か、Web上で必要事項を入力すれば、自動的に計算してくれて、印刷して税務署にもっていけばOKだったのですが。
まぁ、税務署は家からも近いのですが、それでも、寒い中、外出はなるべく控えたい。
なので、自宅で全部完結するe-Taxというものをやってみようと思ったのです。
基本的には何でもいいのですが、e-Tax対応と商品説明にあるものを選んだほうが確実です。
もはやこれぐらいしかマイナンバーカードのメリットがないのでは?と言われているものです。
様々な活用法を模索しているみたいですけどね。
こちらのサイトにアクセスし、手続きを行います。
まぁ、Windows10を指定している人だったら、「利用環境の確認」はクリアしていると思います。
「電子証明書の取得」に関しては、マイナンバーカードがそれに該当しますので、持っていればクリア。
なので、次は「開始届出書の提出になります。
こちらのリンクから、
http://www.e-tax.nta.go.jp/e-taxsoftweb/e-taxsoftweb1.htm#Link4
このプログラムをダウンロードして、インストール。
注意するべきところは、
この画面で、Microsoft Storeからプラグインをインストールすること。
あとは、指示に従って進めていくだけ。
完了後にEdgeを確認すると、
こんなのが出るので、有効化します。
たぶん、この画面が表示されるので、
右の「初めての~」をクリックして、必要事項を入力します。
無事、手続き完了すれば、利用者識別番号が発行されます。
この画面は必ず印刷するか、PCに保存してください。
というのは、まだ今年度の確定申告の受付は始まっておりません。
でも、準備は早いに越したことはないので、
マイナンバーカードの申請は今からならばぎりぎり間に合うかもしれないので、e-Taxやってみたいという人は、早めに準備しておくことをお勧めします。
↑よろしかったらクリックをお願いします。
前回までの様子はこちら。
最新ソースコードはこちら。
https://github.com/takishita2nd/hotel-mng
まずは、テーブルの連携が正しくできるように、マイグレーションを修正しました。
実際に修正を行う際には、事前にロールバックを行うか、テーブルを書き換えるマイグレーションファイルを追加してください。
Schema::create('reserve_day_list_reserve_management', function (Blueprint $table) { $table->increments('id'); $table->integer('reserve_management_id') ->foreign('reserve_management_id') ->references('id')->on('reserve_managements') ->onDelete('cascade'); $table->integer('reserve_day_list_id') ->foreign('reserve_day_list_id') ->references('id')->on('reserve_day_lists') ->onDelete('cascade'); $table->timestamps(); $table->engine = 'InnoDB'; $table->charset = 'utf8mb4'; $table->collation = 'utf8mb4_unicode_ci'; });
Laravelには、中間テーブルのネーミングルールが決まっており、それに合わないと、正しく中間テーブルを認識できません。
しかし、ネーミングルールがあっていれば、中間テーブルのモデルを定義しなくても、Laravelは中間テーブルを認識します。
各モデルの関数も修正します。
class ReserveManagement extends Model { protected $table = 'reserve_managements'; public function reserveDayLists() { return $this->belongsToMany('App\Model\ReserveDayList'); } }
class ReserveDayList extends Model { protected $table = 'reserve_day_lists'; public function reserveManagements() { return $this->belongsToMany('App\Model\ReserveManagement'); } }
これで、各モデルから連携先のモデルを直接参照することができます。
最後にリポジトリの修正を行います。
public function add($param) { $model = new ReserveManagement; foreach($this->paramNames as $name) { $model->$name = $param[$name]; } $model->save(); $model2 = new ReserveDayList(); $model2->day = $model->start_day; $model2->save(); $model->reserveDayLists()->attach($model2); for($i = 1; $i < $model->days; $i++) { $model2 = new ReserveDayList(); $model2->day = date('Y-m-d', strtotime($model->start_day.'+'.$i.' day')); $model2->save(); $model->reserveDayLists()->attach($model2); } }
ちょっと変数名がよろしくありませんが、attach関数でLaravelは自身で中間テーブルを認識し、レコードの紐付けを行います。
逆に削除する場合は、
public function deleteById($id) { $model = $this->getItemById($id); $model2s = $model->reserveDayLists()->get(); $model->reserveDayLists()->detach(); foreach($model2s as $model2) { $model2->delete(); } $model->delete(); }
今度は逆にdetach関数で紐付けを解除します。
少し修正が発生しましたが、これで少ないコードでデータベースを簡単に扱うことができます。
↑よかったらクリックお願いします。