昨日病院帰りにサクッと飲んできました。

ラフィラの地下にある食堂っぽいお店。
午前10時からオープンしていて、ビール中ジョッキが250円で飲むことができます。
もちろんランチも食べられます。


鮭とばキムチ。

オススメのポテトサラダ。
1時間でサクッと飲むには十分でした。
バナークリックで応援よろしくお願いします。
ついに届きました。

待ちに待ったグラフィックボード、SAPPHIRE PULSE RADEON RX 570 8G GDDR5!
特に必須というわけではないのですが、
なぜなら、今使用しているRyzen 5 3400Gはグラフィックスチップを搭載しています。
インテル系のCPUを使用している場合はグラボが無くても、内蔵のグラフィックスチップで画面表示できますが、AMDのCPUは基本グラフィックスチップを搭載していないので、グラボは必須になります。
グラボを購入した目的は、今後CPUをパワーアップをするに当たり、グラフィックスチップが搭載されていないCPUかもしれないというのもあって、グラボの購入を決定しました。
まぁ、今後PCをさらにパワーアップさせるための足がかりです。
また、このパーツを選んだ理由は、
今使用しているグラフィックスのメモリは2GBなのに対して、今回選択した物は8GB。
そのスペックに対して14000円台とグラボにしてはお手軽価格で、価格.comでも評価は高いです。
それでは開封。

ファン付きのグラボって本格っぽいよね。

HDMTが二つと、DPが二つ使えます。

ここにグラボ用の電源を繋げます。
ローエンドのグラボではマザーからの電力で十分ですが、ミドルエンド以上になると、別途電源ユニットから電源を貰わないと動かすことができません。
それだけ電気を使うのですね。
当然、消費電力をまかなえるように電源ユニットを用意しなければなりません。

取り付けました。
ネジが合っているかどうかわかりません。
しかし、電源を入れたときに、グラボのファンがグラボの下のケーブルに干渉して、ガガガガと音がしていたので、

干渉しないように結束バンドでまとめました。
今のところ、問題無いように動いています。
グラボを増設したらどれだけスペックアップしたか見てみたいでしょ。
ということで、ベンチマークソフトを動かしました。
使用するソフトと条件は、前回こちらで実施したものと同じです。




やはり全体的にスコアが上がっています。
特にFF14が「やや快適」から「非常に快適」になり、
FF15が「動作困難」から「やや快適」になりました。
やったぁ。
これで、いつでも第3世代Ryzenを迎えられる準備ができました。
バナークリックで応援よろしくお願いします。
もう少しで完成だから、もうちょっとやって終わろうと思ったら、ガッツリ書き換えることになるというプログラマーあるある。
やっぱり、チェックしたかどうかも管理するべきだろう(もはや仕様変更レベル)と思いました。
データベースに、「チェックしたかどうか」を格納するカラムを追加します。
マイグレーションファイルを作成し、マイグレートします。
class AddSubmit extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('reserve_managements', function (Blueprint $table) {
$table->boolean('lodging');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('reserve_managements', function (Blueprint $table) {
$table->dropColumn('lodging');
});
}
}
ちょっと名前がいろいろとアレだけど、あとから直すの面倒くさいので、そのまま使用する。(ちゃんと前もって設計しなさい、という話。)
予約一覧にチェックしたらポチるボタンを設置。
<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>
<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>
<td class="command">
{!! Form::open(['url' => action('RegisterManagementController@lodging')]) !!}
{!! Form::hidden('id', $list->id) !!}
{!! Form::submit('宿泊') !!}
{!! Form::close() !!}
</td>
</tr>
@endforeach
</table>
ポチったらPOSTでid番号を受け取り、追加したカラムをtrueに変更して予約一覧へリダイレクト。
/**
* 宿泊処理確認
*
* @return \Illuminate\Http\Response
*/
public function lodging(Request $request)
{
$this->registerManagement->lodging($request->id);
return redirect('management');
}
/**
* 宿泊処理を行う
*/
public function lodging($id)
{
$model = $this->getItemById($id);
$model->lodging = true;
$model->save();
}
スケジュール一覧にもチェックしたかどうかを表示します。
<table class="schedule">
<tr>
<th class="date">日時</th>
<th class="name">名前</th>
<th class="lodging">宿泊状況</th>
</tr>
@foreach ($Lists as $list)
<tr>
<td class="date">{{ $list['day'] }}</td>
<td class="name">{{ $list['name'] }}</td>
@if ($list['lodging'])
<td class="lodging">チェック</td>
@else
<td class="lodging">未チェック</td>
@endif
</tr>
@endforeach
</table>
/**
* スケジュール一覧を取得する
*/
public function getSchedule()
{
$lists = array();
$index = 0;
$models = ReserveDayList::orderBy('day')
->get();
foreach($models as $model)
{
$lists[$index] = array(
'day' => $model->day,
'name' => $model->reserveManagements()->first()->name,
'lodging' => $model->reserveManagements()->first()->lodging
);
$index++;
}
return $lists;
}
/**
* 月別スケジュール一覧を取得する
*/
public function getScheduleByMonth($year, $month)
{
$lists = array();
$index = 0;
$models = ReserveDayList::where('day', '>=', date('Y-m-d', strtotime('first day of '.$year.'-'.$month)))
->where('day', '<=', date('Y-m-d', strtotime('last day of '.$year.'-'.$month)))
->orderBy('day')
->get();
foreach($models as $model)
{
$lists[$index] = array(
'day' => $model->day,
'name' => $model->reserveManagements()->first()->name,
'lodging' => $model->reserveManagements()->first()->lodging
);
$index++;
}
return $lists;
}
集計も、チェック済みのものだけ集計対象にします。
テーブルを結合して、チェック済みの日数を数えます。
/**
* 月毎に集計する
*/
public function countByMonthly()
{
return ReserveDayList::select(DB::raw('DATE_FORMAT(day, "%Y-%m") as yearmonth'), DB::raw('count(*) as count'), DB::raw('count(*) * 2000 as total'))
->leftJoin('reserve_day_list_reserve_management', 'reserve_day_lists.id', '=', 'reserve_day_list_reserve_management.reserve_day_list_id')
->leftJoin('reserve_managements', 'reserve_day_list_reserve_management.reserve_management_id', '=', 'reserve_managements.id')
->where('reserve_managements.lodging', true)
->groupby('yearmonth')
->get();
}
leftJoinが記載が汚いかもしれないけど、これはLaravelであるがゆえの運命。仕方がない。



これで本当に完成。提出してきます。
最終ソースはこちら
https://github.com/takishita2nd/hotel-mng
バナークリックで応援よろしくおねがいします。
前回までの状況はこちら
最新ソースはこちら
https://github.com/takishita2nd/hotel-mng
月毎に集計を行います。
このときのデータベースの操作が大変で・・・
/**
* 月毎に集計する
*/
public function countByMonthly()
{
return ReserveDayList::select(DB::raw('DATE_FORMAT(day, "%Y-%m") as yearmonth'), DB::raw('count(*) as count'), DB::raw('count(*) * 2000 as total'))
->groupby('yearmonth')
->get();
}
リポジトリはこれでなんとかできました。
select文でdayカラムをYYYY-mmのフォーマットで出力(このカラム名をyearmonthとする)。
yearmonthごとにgroupByでグループ分けし、count(*)で集計を行います。
もっとうまい方法があるかもしれませんが、迷ったらDB::raw()を使ったほうがいいかもしれません。
でも、これができれば完成したも同然。
簡単すぎるので、コードは省略。

あとは最後の微調整で完成ですね。
バナークリックで応援よろしくお願いします。

鍋や炒め物にすると美味しいですよね。
ニラに多く含まれるアリシンによってビタミンB1の吸収を助け、疲労回復作用を助けてくれます。
アリシンは血流を良くする働きがあり、ビタミンEには 不飽和脂肪酸の酸化を防ぐ作用があります。冷え性予防や血栓予防になります。
βカロテンは体内でビタミンAとなり、ガン予防に作用します。
ビタミンCは活性酸素を減らし、老化を防止する作用があります。
前回までの状況はこちら。
最新ソースはこちら。
https://github.com/takishita2nd/hotel-mng
一通りデータの登録はできましたが、このままデータが増えると1画面に大量のデータが表示されることになります。
なので、一覧のデータを月毎にフィルタ表示させたいと思います。
まず、Viewを修正。
年月を指定できるようにします。
{!! Form::open(['url' => action('RegisterManagementController@indexToMonthly')]) !!}
<table>
<tr>
<td>{!! Form::selectYear('year', 2019, 2020) !!}年</td>
<td>{!! Form::selectMonth('month') !!}</td>
<td>{!! Form::submit('表示') !!}</td>
</tr>
</table>
{!! Form::close() !!}
本来は、Vue.jsなどを使ってフロントエンド側でうまくできるのが理想なのですが、今からVueの実装を行うのは面倒くさいので、フィルタ情報を一旦POSTで受け取り、GET+クエリパラメータの形にして、リダイレクトさせるという方法をとります。
ルートの設定。
Route::post('/management/indexToMonthly', 'RegisterManagementController@indexToMonthly');
コントローラ。まずはGETの方。
/**
* Show the Register.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
if(is_null($request->input('year')) || is_null($request->input('month')))
{
return view('register.index', ['registerLists' => $this->registerManagement->getList()]);
}
else
{
return view('register.index', ['registerLists' => $this->registerManagement->getListByMonth($request->input('year'), $request->input('month'))]);
}
}
GETリクエストでも引数にRequest $requestを書き足せば、クエリパラメータを取得できます。
忘れてはいけないのは、クエリパラメータがNULLだった場合。
is_null()でNULLチェックを行い、デフォルト(パラメータがない場合)の画面表示をさせるようにしましょう。
次は、POST側の処理。
/**
* indexの月別表示
*
* @return \Illuminate\Http\Response
*/
public function indexToMonthly(Request $request)
{
return redirect('management?year='.$request->year.'&month='.$request->month);
}
クエリパラメータ付きURLを作成し、リダイレクトを行っています。
これしか方法が思い浮かばなかった。
次はリポジトリ。
/**
* 月別予約一覧を取得する
*
* @return ReserveManagement[]
*/
public function getListByMonth($year, $month)
{
return ReserveManagement::where('start_day', '>=', date('Y-m-d', strtotime('first day of '.$year.'-'.$month)))
->where('start_day', '<=', date('Y-m-d', strtotime('last day of '.$year.'-'.$month)))
->get();
}
whereを2つ付けることでAND条件になります。
クエリビルダー便利。

同じやり方をスケジュール一覧にも行います。

十分とは言えませんが、やりたいことはできました。
たぶん次でラスト。
月毎に売上を集計して表示させます。
バナークリックで応援よろしくおねがいします。
皆さんには内緒で1つ目に発表する製品を公開します!みんなでどの製品かRTして当ててみよう!#SmartLifeMadeSimple #ThisIsMi pic.twitter.com/id9mwer01m
— Xiaomi Japan (@XiaomiJapan) December 3, 2019
中国のスマホメーカーXiaomiが日本進出を発表しました。
提供する端末は公開された写真からMi Note10ではないか、という予想がされています。
なぜなら、Xiaomiの3レンズカメラはこの機種だけだから。
ということで、スペックを見てみました。
これはすでにリリースされているグローバル版のスペックです。日本向けにカスタマイズされる可能性は十分あります。
CPUはミドルレンジのSnapdragon730G。
CPUはミドルレンジですが、メモリとストレージはハイエンド並み6GB/128GBですね。
指紋認証が前面パネルの中に内蔵されているようです。
大容量バッテリーを搭載しています。
防水・防塵ではありません。(だから安いのか)
珍しく赤外線を搭載しています。これで家電を操作できるみたいです。
グローバル版はおサイフケータイ搭載していませんが、日本向けにカスタマイズされるかもしれません。
ネットではすでにグローバル版をネットで購入しレビューを行っているので、参考にしてみてはいかがでしょうか?
バナークリックで応援よろしくお願いします。

食材を知れば、ダイエット中でも安心して食べることができます。
ここでは牛肉についてまとめてみました。
タンパク質は筋肉の元。筋トレと合わせれば基礎代謝がアップし、痩せやすくなります。
牛肉に含まれている鉄分や亜鉛は血液を作る元となり、酸素を全身に送ってくれます。結果敵に疲れにくい体になります。
牛肉に含まれているビタミンB2は細胞の再生を活性化させ、エネルギーの消費を促進させます。結果敵にダイエットに繋がったり、美容効果もあります。
牛肉の食べ過ぎは、脂質の取り過ぎとなり、血中コレステロールを増加させたり、中性脂肪をの数値を挙げることになります。
一日100g程度が理想とされています。食べ過ぎに注意しましょう。
バナークリックで応援よろしくお願いします。