まじごみ日記

パチスロ・アニメ・特撮好きの日記です。最近の趣味は筋トレ。

DI(依存性の注入)について学ぶ

依存性な僕ら

今日は、Springの中核を担う機能、DI(依存性の注入)について学ぶ。
既にパチスロ依存性なので、これは余裕だろう。テイテイテイッ!!
昨日に続き、教本に従って進めていき、ブログには成果のみ記載する。早速やってみよう!

今日の成果

  • DIの概要を理解
  • サンプルアプリ実装~データバインド&バリデーション~

・・・本筋ではないwebjarsの利用で盛大につまづく。 教本はMaven、自分はGradleでプロジェクトを作成しており、webjarsの利用方法が少しだけ異なっているのだが、これがうまくいかない。

build.gradleに追記して、プロジェクトをリフレッシュ。

dependencies {

    compile 'org.webjars:jquery:3.4.1'
    compile 'org.webjars:bootstrap:4.3.1'
}

f:id:majigomi:20190808231901p:plain 依存関係にbootstrapが追加される。

login.htmlなどで利用

<head>
  <link th:href="@{/webjars/bootstrap/4.3.1/css/bootstrap.min.css}" rel="stylesheet" />
  <script th:src="@{/webjars/jquery/3.4.1/jquery.min.js}"></script>
  <script th:src="@{/webjars/bootstrap/4.3.1/js/bootstrap.min.js}"></script>
</head>

・・・これでいけるはずなんだけど、bootstrapのcssが適用されない。
2時間ほど調べたが、結局分からず。。

<head>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>

結局、URL指定して利用する方法で先に進めることにする。

これで作成した画面がこちら。

f:id:majigomi:20190808232352p:plain 教本通り実装してるのに、超ブサイクなんだけど!

データバインド&バリデーションについて学習したいだけなのに、フロントの知識不足がネックで中々先にすすめない。。
これだけで1日が終わってしまうの、超辛いんですけど。。

最近の出来事

①紛失したIQOSクリップオントレイをメルカリで購入。
そしてIQOSホルダーが壊れたのでカスタマーセンターにLINEで問い合わせたら、保証期間中なので新品と交換となった。
f:id:majigomi:20190808203137j:plain
自分は節約のためにIQOSスティックを2度吸うときがあるので、クリップオントレイはまだ吸えるやつを保管するのに便利。 一度吸ったスティックを普通に箱にしまうと、臭いので。
コツは、一度目は浅く刺しておくこと。こうすれば2度楽しめる!

伊藤園の麦茶のマークが48ポイント貯まったので応募した! f:id:majigomi:20190808203854j:plain
お盆明けには届くかな~、ひんやり抱っこクッション

Spring入門!

昨日の出来事

昨日はeclipseのSpringプラグイン更新後の再起動中に寝落ちしてしまった。。
一昨日の夜、謎の腹痛に見舞われてほとんど眠れなかったので、これはしゃーない。
起きたあと、途中まで書いてたブログ記事がセッション切れ?で消えてしまったので、昨日はやる気を失ってしまったが、気を取り直して頑張ろう!

今日は、「【後悔しないための入門書】Spring解体新書~」という本に従って、進めていく。
・・・この本、SpringBootの本をFileHDで調べてたら、1-Click購入ボタンを押してないはずなのに、ダウンロードされて読めるようになったんだけど、謎。
Kindle Unlimitedにも未加入ってなってるし。500円だから購入しても全然良いんだけど、購入メールとかもきてないんだよな・・・。深く考えるのはよそう。

あと本日からは、何をやったのか、成果だけを記載していくことにする。

今日の成果

f:id:majigomi:20190807202656p:plain
プロジェクト作成

f:id:majigomi:20190807233450p:plain
従業員IDを指定すると・・・

f:id:majigomi:20190807233531p:plain
H2DBのテーブルからselectした結果を表示!

教本に従い、H2DBに従業員テーブルと値を設定し、

  • Controllerクラス
  • Serviceクラス
  • Repositoryクラス

を作成し、IDで検索した値を返すアプリケーションを作成。
本のバージョンが低いせいか、所々本の通りではうまくいかないところや、自分の記載ミスによりエラーが発生したりしたが、無事入門編のアプリを動作させるところまでできた。

動かせるようになると、面白くなってきた!(PCが重いのはストレスだけど・・・)

明日は実践編に突入し、SpringのコアとなるDIについて学んでいく。

昨日の出来事 その2

ミニプラキシリュウジンを購入!
f:id:majigomi:20190806194159j:plain
コアロボは複数並べるのが楽しい!週末に作りたいところ。

Servletの呼び出しについてフライングファルコン!

本日紛失した「IQOSクリップオントレイ」の再購入方法を調べてたら、21時過ぎになってしまった。。 カスタマーセンターにも電話したが、結局「販売中止になったのか在庫が無いだけなのかはよく分からない」とのこと。。
しょうがないので、公式以外の通販を調べて、はじめてメルカリで購入してみた。ちょっと怖い。

今日も遅くなってしまったので、ご飯を食べてから進めたいと思う。

JSPファイルの作成

前回はServletファイルを作成して、表示するだけだったので、今回はJSPファイルも作成して連携してみる。 JSPファイルは、ルート直下のWebContentディレクトリに配置するようだ。
ファイルがindexだと名にすると、ファイル名の指定なし(/ルート指定)で参照できるみたいなので、「index.jsp」というファイルを作ってみる。
f:id:majigomi:20190805225210p:plain 参照もできた。 htmlファイルもここにおけば良いみたい。

Servletの呼び出し

Servletの呼び出しは、GetとPostがある。
まずはGetで呼び出してみる。

Getで呼び出し

index.jsp

<a href="/TestWebApp/HelloWorld?param=ぱらめーた">Getで呼び出す</a>

HelloWorld.java

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().append("param: ").append(request.getParameter("param"));
    }

f:id:majigomi:20190805234148p:plain
f:id:majigomi:20190805234204p:plain
文字化けしてしまった。。
調べると、Servletは日本語の文字コードに対応していないので、文字エンコーディングを行うフィルタが必要とのこと。 早速フィルタを作成する。 f:id:majigomi:20190805234822p:plain
f:id:majigomi:20190805234935p:plain

f:id:majigomi:20190805235032p:plain
URLパターンを「/*」にして全Servletを対象にする

doFilterメソッドに文字エンコーディング処理を追加する。

   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=UTF-8");
        chain.doFilter(request, response);
    }

f:id:majigomi:20190805235457p:plain
でぎだ!
このフィルタクラスは、文字エンコーディングの他にも、認証などにも使われる機能みたい。確かに使ったことあるわww

Postで呼び出し

お次はPostで呼び出してみる。
Postで呼び出す際は、formのactionでURLを指定し、methodにpostを指定する。
index.jsp

<form action="/TestWebApp/HelloWorld" method="post">
    <input type="text" name="param" />
    <input type="submit" value="Postで呼び出す" />
</form>

HelloWorld.java

   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().append("param:").append(request.getParameter("param"));
    }

f:id:majigomi:20190806000808p:plain
f:id:majigomi:20190806000926p:plain
できた!まあ、当たり前だけど。

このペースでは間に合わない

基礎から1つづつ進めるのは悪くないと思うんだけど、こんな調子じゃ9月までにVue.jsとSpring Bootを学習するのは間に合わない。クソみたいな記事を書くのも無駄に時間がかかるし。
モチベーションも上がらないし、明日は多少分からないところがあっても一旦無視して、Spring Bootを使ってサンプルアプリをつくってみる。
動くものを作ってから、動かしながら理解を進めていくほうが早いと思うし。

とりあえず今日は・・・プロテイン飲んで寝る!
f:id:majigomi:20190805232904j:plain

今日の出来事

仮面ライダーのコレクションアイテム『プログライズキー』を購入。帰りに西友のおもちゃ売り場を覗いたら、1つだけ売ってた。 f:id:majigomi:20190805211401j:plain
収納しやすそうな形は好印象。ライドウォッチは絶縁シートの再挿入ができないうえに、収納し辛かったので。。
f:id:majigomi:20190805211607j:plain
f:id:majigomi:20190805211624j:plain
中々カッコイイけど、光り方が局所的なのは残念。もっと全体が光ってくれたらキレイなのに。
今回のアイテムは認識ピンが無いけど、ICチップで個別認識するのだろうか。それとも磁石が入っているだけなのか・・・
今年は2週類のベルトと武器も一緒に予約したので、放送開始前に遊び倒すぞ!
なんにせよ発売日の8/31が楽しみ。

休日は昼過ぎまで寝ていると何もできない

本日、14時過ぎまで寝ていたため、ちょっとダラダラしてたらあっとゆう間に夜に。
ミニプラを作ってご飯を食べたら、もう23時過ぎになってしまった。
というわけで、本日の勉強はスキップ。明日から頑張ろう。
webフロントをメインに学習したいので、サーバサイドは一旦おいておいて、

の構成で画面を1つ作るところまでは、明日やりたい。

前日(8/3)の出来事

新しい自転車で遠くまで出かけたいと思っていたので、自転車で板橋花火大会を見に行った。

1.花火大会会場の川(荒川?)の近くまで自転車で移動

2.近くのパチンコ屋に自転車を停める

3.花火大会開始まで遊技

4.花火大会を徒歩で見に行く

5.花火大会終了後、パチンコ屋に移動

6.気の済むまで遊技

7.自転車で帰宅

という流れを予定だったが、

実際は
1.花火大会会場の川(荒川?)の近くまで自転車で移動

2.近くのパチンコ屋に自転車を停める

3.気の済むまで遊技

4.自転車で帰宅

という、遠くのパチンコ屋に行っただけになってしまった。

当日の様子を、写真付きで振り返っておく。
・・・
・・

15時頃家を出て、16時頃に花火大会会場に到着。既に人は一杯だった。はやる気持ちを抑え、近くのパチンコ屋に移動。自転車を停めて店に入る。
花火大会は、場所を取らずに屋台で食べ物を買っててきとうに立って見ようと思ってたので、開始時刻になってから移動するつもりだった。なので、19時までの3時間ほど打つことになる。

じっくり吟味して、最初に座ったのは・・・モンハン月下。500ゲーム近くで落ちていたので、天井までいっても大怪我しないと思ったので。 f:id:majigomi:20190804234320j:plain
投資3kでビンゴから当選。オールラインなんではじめて見た。
結局、このチャンスは活かすことができず、2戦目で負け。リオレウス相手に2人で戦い続けやがって・・・。

その後、めぼしい台もなかったので、時間までディスクアップを打つことに。
これが・・・
f:id:majigomi:20190805002322j:plain
ビッグ1回に対してバケ6回という酷い偏りで、モンハンで出した分+18kを使ってしまった。
時刻は19時過ぎ。「ビッグ連するまで止めれねえ!」ということで、続行。この後調子がよくなる。
・・・調子が上がったら上がったで「捲るまで止めれねえ!」ということで、結局熱くなって花火見るのは諦めてしまった。
なので花火は、 f:id:majigomi:20190805002711j:plain
店の外に出てちょっとだけ見た。

ちなみに、ビッグ終了後DTの結果を見ずに離席したが、 f:id:majigomi:20190805003021j:plain
戻ったら見事当選してた。ここまでDTの引きが悪かったのでうれしい。シンディ超好き。

その後、600G以上のハマりがあったものの、ビッグに寄ってくて、 f:id:majigomi:20190805003425j:plain
DJZONE最終ゲームでビッグを引くなどして、最後はDJZONE68ゲーム残して閉店。

結果は・・・
f:id:majigomi:20190805003558j:plain
投資:21k
回収:43k
で大勝利!2連勝したのは久しぶり。
次もまたディスクアップを打とうと誓い、1時間かけて家に帰るのだった。(家についたら24時。)

今日こそ、簡単なWebアプリをつくれるか?

Eclipseはまともに動くのか

前回、PCスペックのあまりの低さに、Eclipseのダウンロードと解凍と起動だけで1日を終えてしまった。
すぐに新しいPCを買うのは(貯金額的に)厳しいので、しばらくはこのPCでやっていくしかない。とりあえずできるとこまでやってみよう。

プロジェクトの作成

まずはプロジェクトを作成。
いままで深く考えて無かったけど、そもそもプロジェクトとは何なのか?
いくつかのプログラムをまとめたもの。アプリケーションの管理単位。

・・・うん、まあそうでしょう。よくわかっていないのは、別プロジェクトのプログラムとの連携方法とか。おいおい試してみよう。

プロジェクト作成画面で、早速気になることが。 f:id:majigomi:20190802200035p:plain プロジェクト名って、一般的に頭文字大文字にすべきなの? どうでもいいことが気になってしまう。調べてみた。

一般的な命名ルール

■プロジェクト名
 ⇒特に一般的にコレ!というものはないみたい。testでもいいし、TESTでもTestAppでもtest_appでも。
■パッケージ名
 ⇒小文字で統一。アンダーバー(_)は使って良い。
■クラス名
 ⇒先頭大文字。単語の区切りは先頭大文字。TestApp(Pascal記法というらしい)
■メソッド名
 ⇒先頭小文字。単語の区切りは先頭大文字。testApp(camelCase記法というらしい)

気を取り直してプロジェクト作成。
・・・プロジェクト・レイアウトワーキング・セットてなんだ?

プロジェクト・レイアウト

「プロジェクト・フォルダーをソースおよびクラス・ファイルのルートとして使用」
 例)Eclipseインストールフォルダ\ワークスペース\example\パッケージ\test.java
 例)Eclipseインストールフォルダ\ワークスペース\example\パッケージ\test.class

「ソースおよびクラス・ファイルのフォルダーを個別に作成」
 例)Eclipseインストールフォルダ\ワークスペース\example\src\パッケージ\test.java
 例)Eclipseインストールフォルダ\ワークスペース\example\bin\パッケージ\test.class

全然知らんかった!いつものやつは、「ソースおよびクラス・ファイルのフォルダーを個別に作成」のほうだな。

ワーキング・セット

プロジェクト単位、ファイル単位などで設定できる。設定したワーキング・セットを指定して、表示項目をフィルタすることができる。

これも知らんかった!プロジェクトが増えてきたら設定してみよう。
さて今度こそ、プロジェクト作成。
f:id:majigomi:20190802203410p:plain module-info.javaってなんだ?やべえ、分からないことが多すぎる・・・

Java9のモジュール機能

module-info.javaは、Java9で追加されたモジュール機能の設定ファイル。
「どのモジュールを使うか」「どのパッケージを他のモジュールに対して公開するか」などを設定する。

・・・けっこう深そうだから、とりあえず『モジュールという管理単位がある』くらいの理解に留めて、先に進もう。
f:id:majigomi:20190802204732p:plain ようやくプロジェクト作成。とりあえず飯食おう。

サーバの設定

分からないことが多すぎて、時間がかかりすぎて飯をはさんでしまった。。
気を取り直して、サーバの設定を行おう。
サーバの設定をおこなうために・・・パースペクティブを「Java EE」にしておく。これで下のサブウィンドウに「サーバー」が現れた。 f:id:majigomi:20190802224658p:plain Tomcatって今バージョン9なんだな~、バージョン違うと何が違うんだろ?そのへんも別途確認しなきゃ。

動的Webモジュールバージョンって何だよ

しまった。tomcatアプリを作成するなら、プロジェクト作成で「動的Webプロジェクト」を指定すべきだった。。
さっき作ったプロジェクトは破棄して、新たに「動的Webプロジェクト」としてプロジェクト"TestWebApp"を作成。こんどはすんなり作れるでしょ。
ターゲット・ランタイムにはTomcat9を選択して・・・ f:id:majigomi:20190802225823p:plain ・・・動的Webモジュールバージョンって何だ?

ググっても、ズバリ説明しているサイトは見つけられたかった。こんなの説明するまでもねぇってことかよ。。
おそらく、アプリケーションサーバのバージョンを示していて、動かしたいアプリケーションサーバのバージョンとあわせておく必要があるのかな。
Tomcat9のweb.xmlで「version="4.0"」になってるから、ここで動かしたければ「4.0」を指定しておけばよいでしょ。 f:id:majigomi:20190802231947p:plain ようやく、準備がととのった!はず。。

Servletを作成

先ほど設定したTomcatに、今作ったプロジェクト"TestWebApp"を追加する。
f:id:majigomi:20190802232504p:plain Server.xmlに"TestWebApp"が追加された。

Servletクラスを作成する。「新規」⇒「サーブレット」を選択して、 f:id:majigomi:20190802233444p:plain 適当なパッケージ、クラス名を設定して完了。
f:id:majigomi:20190802233712p:plain ソースコードが自動生成された。Servletのコードの記載方法はいろいろ忘れちゃってるけど、とりあえず動かしてみよう。

URLは、
http://localhost:8080/[プロジェクト名]/[Servletクラスの@WebServletアノテーションの設定値]
でいける。なるほど。Servlet3.0から、web.xmlを設定しなくても動かせるようになったみたい。

f:id:majigomi:20190802234536p:plain

とりあえず、動いたから今日はおわり。
時間ばっかり掛かってるけど、今のところ全然進歩してねえ・・・
明日以降は加速して、いろいろ試せるようになるのか?とりあえず今日はもう疲れた。。

今日の出来事

f:id:majigomi:20190802193906j:plain
ゼロワンドライバー先行販売、落選!!

eclipseの解凍でめっちゃ苦戦する

まずはeclipseを使ってWebアプリ作成

今日から、昨日考えたロードマップに従って勉強を進めていく。
今日のゴールは超簡単なものでよいので、ちゃんと動くWebアプリを作成すること。

まずはeclipseをダウンロード

日本語化プラグインを含めた、いくつかのプラグインが入っているものをここでダウンロード。
Eclipse 日本語化 | MergeDoc Project
JavaのFull Editionを選択。
ダウンロードに結構時間がかかるので、今日は先に晩飯を食べる。 f:id:majigomi:20190731221141j:plain うまそうに見えないけどうまいシチュー。

解凍してexeを起動・・・あれ?

f:id:majigomi:20190731221619p:plain
あれ・・・解凍に失敗する。なんで??
パスが深すぎるから解凍できないやつか?Cドライブ直下にzipを配置して解凍してみる。 と、ここでPCが固まる。うそだろ、こんなとこで躓くか。。

しばらくたって、PCが操作できるようになった。10年以上前のPCはもう限界なのか?
エクスプローラーとLhaplusでは解凍に失敗したため、WinRARで開いてみる。
クリップボードにコピーを選択したところ、また固まって・・・ f:id:majigomi:20190731225106p:plain
やっぱりパスが深すぎる?ファイル名を短くしてみる。
f:id:majigomi:20190731225858p:plain

なにかする度に固まるんだが・・・
シチュー食べただけでもう今日が終わるんだが・・・


何度も固まって、ブログを書くのも困難な状況になりながら、一応解凍完了。 f:id:majigomi:20190731234028p:plain springframework系のプラグインのパスが長すぎるのが問題のようだ。
これは必要になったときに入れ直すとして、先に進めよう。 f:id:majigomi:20190731234441p:plain ようやく起動。
今日の成果:eclipse起動



こんなことなら・・・こんなことなら・・・
毒にも薬にもならないようなアニメ見ながらビール飲んで過ごせばよかったーーー!!


何かする度にすぐPCが固まるのが悪い。マジで新しいPC買おう。
資金はそう・・・ディスクアップの神様にいただくとしよう。 (勉強資金調達編につづく!)

クラセレの神様とそれを上回るディスクアップの神様

祝!案件確定!

9月からの仕事を探している件、ついに本日決まった!うれしい!
昨日は面談が嫌すぎてほとんど眠れなかったが、今日は良く眠れそう。

祝!お仕事確定ということで、今日は勉強はお休み。(シチュー作ってたら遅くなっちゃった)
明日からの学習ロードマップは以下のとおり。このとおり、うまく進められるといいけど。。

  1. 慣れたeclipseでローカル環境構築(Apache,Tomcat,MySQL)
  2. フレームワークの学習
    1. 非常に簡単なwebアプリをフレームワークを使わずに作成
    2. 非常に簡単なwebアプリをフレームワーク(Spring Boot)を使って作成
  3. フロントの学習
    1. HTMLの基礎を学習
      1. HTML5の新しいタグを学習
    2. CSSの基礎を学習
      1. http://www.htmq.com/css3/#multicol
      2. CSS設計を学ぶ
    3. JavaScriptの基礎を学習(本を買う)
    4. Vue.jsの学習
  4. 環境構築の学習
    1. 仮想マシン(Vagrant,VirtualBox)に環境を作ってWebアプリを動かす

ここまでを、9月までに一通り学習したい。

全然関係ないけど、今日はパチスロ稼働日記を書いておく。

7/26稼働記録~残金6千円からのクラセレの神様降臨~

給料日後初のパチスロ。とはいえ、家賃とクレジットカードの引き落としで、残り2万4千円しか残っていないので、5スロを少し打って帰るつもりだった。
だったのに・・・


20スロの無根拠コードギアスで832ゲームハマり。 f:id:majigomi:20190730221205j:plain この時点で残金は残り6千円。コードギアスはもう出せる気がしないので、クラセレに移動。


ここで・・・ f:id:majigomi:20190730223401j:plain 初の999枚(カンスト)表示を出し・・・ f:id:majigomi:20190730223458j:plain 怒涛の連チャンで一気にプラスに。
投資:14k
回収:29.5k
で15.5k勝ち。なんとか軍資金(というより生活費)を失わずに済む。あぶねぇ。。

7/29稼働記録~ディスクアップで5千枚!?~

勉強しなきゃという気持ちを抱えながらも、せっかくの代休、平日朝からパチ屋に入り浸れる優越感に浸りたいという欲求に勝てず、「ディスクアップを打ち続ければいつかプラスになるのか」を実践。
ディスクアップは、結構前に何も悪いことしてない(※機械割を下げるミスをしていない)のに40k失って以来、久しぶり。
ここで勝って、苦手意識を克服する。
投資3kでのビッグから、当たりが軽く、

  • DT当選率100%
  • バケは必ずART中に引く
  • 合算1/100で8割ビッグ

という鬼のヒキを見せて・・・ f:id:majigomi:20190730224433j:plain f:id:majigomi:20190730224513j:plain そこそこの一撃を繰り返し・・・ f:id:majigomi:20190730224541j:plain 箱を4つも使うほどに!
このあともじわじわ出玉を伸ばし、さらに1箱、メダルは別積み。別積みなんで3年振りくらい。
差枚数は4744枚まできて、時刻はまだ15時頃。
このままいけば万枚じゃね?」という浅はかな考えで、続行。

・・・しかしそう上手くは行かず、じわじわと出玉を減らし、21時半頃に約3600枚でフィニッシュ。
甘いと言われているディスクアップだが、ビッグが重いと一気に出玉を削られるため、荒いということも分かった。
ちなみにビタ成功率は多分6割くらい。(1度失敗しだすと、負の連鎖から抜け出せなくなる。。)機械割103%を発揮するのは、おれには無理ということがわかった。
あと、ビタ押しは緊張して打つので、1日中打つと他の台より肩が疲れる。

結果は、

投資:3k
回収:76k
で73kプラスの快勝!
別積みも、50k以上プラスになったのも、ここ数年は経験していなかったので、めちゃくちゃうれしい。

せっかく増えたお金は、大事に使いたい。使いたいが・・・

撤去前に化物語とか打ちてえ~~!