- 1. 初心者から始めるJava、カプセル化
- 2. Spring Boot 2.0からSpring Boot 2.2にマイグレーションしたときの変更点
- 3. Android 基礎文法について
- 4. SpringBoot+Maven+PostgreSQLでFlywayの導入
- 5. Visual Studio CodeによるSpring5 MVC Webアプリ開発 HelloWorld作成編
- 6. Visual Studio CodeによるSpring5 MVC Webアプリ開発 Mavenひな型作成編
- 7. Spring Securityで403 forbiddenが発生する
- 8. ABC – 134- A&B&C&D&E
- 9. 偏差値コンポーネントを作ってみる
- 10. Java 日付の厳密なチェックとサマータイムの関係
- 11. 初心者から始めるJava、クラスのフィールド・メソッド
- 12. Eclipse – java.lang.ClassNotFoundExceptionを解決する。
- 13. JavaSilver11 勉強法
- 14. jshellのデフォルトエディタにVS Codeを指定する
- 15. 計算ゲームアプリ Google play storeで公開しました
- 16. GradleでAntを実行する方法
- 17. #01-03 学習内容3日目 Java基礎文法 (2020/03/11)
- 18. Javaエンジニア養成読本 から8~9章 メモアプリを写経した
- 19. 初心者から始めるJava、Hello,world!
- 20. Dataflowでプロファイリングとかダンプとか見てみる
初心者から始めるJava、カプセル化
#はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
~~**間違えた**ものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。~~
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。##環境
言語:Java11、JDK13.0.2
動作環境:Windows10#メンバへのアクセス制限
`new`で生成したインスタンスが、クラスから引き継いだメンバ(フィールドとメソッド)を独自の形で保有していることは確認した。だが、前回の`Cat`クラスで言えば`Cat myCat = new Cat;`
`mycat.weight = -20;`と、`Cat`クラスを作ったときには想定していなかった値を、`main`メソッド内から勝手に格納することが出来てしまう。
`main`メソッド内から直接、`Cat`クラスで設定された**フィールド(今回は`double weight`)**にアクセスを許していると問題を起こしかねない。
Spring Boot 2.0からSpring Boot 2.2にマイグレーションしたときの変更点
# はじめに
Spring Boot 2.0.2のアプリケーション(約7KL、SPAのサーバ部分)をSpring Boot 2.2.5にマイグレーションしてみたときの修正ポイントを書いておきます。
# Spring Bootの修正箇所
## Maven
JUnit5を使用していたのですが、Spring Boot 2.0ではspring-boot-starter-parentの管理下ではなかったjunit-platform-launcherとmockito-junit-jupiterが、Spring Boot 2.2では管理下になったため、バージョンの指定が不要となりました。
“`xml:SpringBoot2.0
org.junit.platform
junit-platform-launcher
1.3.1
test
<
Android 基礎文法について
開発言語は、主にJavaとKotlinだと思いますが、
今回は、『Kotlin』に焦点を当て、公開していきます。
特徴としては、
■データを省略できる
例えば、以下の変数に文字列を代入するコードです。
“`
val a : String = “Hello World”
“`さらに型推論機能によって、以下のように型指定を省略できる。
“`
val a = “Hellow World”
“`■null安全
nullとは…何もないことを意味する特殊な値
Null許容型は、val a : String? = nullのように型名の後ろに『?』を付けるとNullを代入できます。
“`
val b : String? = null
b?.toUpperCase()
“`補足:toUpperCase() は、String 型の変数でのみ呼び出し可能な関数です。
■クラスへのアクセスが簡潔
Javaの場合、フィールドにgetter,setterでアクセスが必要ですが、Kotilinは必要ありません。
■println関数
println関数とは、
SpringBoot+Maven+PostgreSQLでFlywayの導入
Ruby on Railsは、デフォルトでDBのマイグレーション機能が搭載されていますが、SpringBootでは自分で導入するしか有りません。マイグレーションツールであるFlywayを導入するのに手こずったため、纏めて行こうかと思います。
#準備
“`xml:pom.xml
org.flywaydb
flyway-core
“`
依存関係の階層に、このように書いてあげます。
合わせてmvnのコマンドを使用したいので、プラグインにも下記の通り指定しています。“`xml:pom.xml
org.flywaydb
flyway-maven-plugin
Visual Studio CodeによるSpring5 MVC Webアプリ開発 HelloWorld作成編
#はじめに
[こちら](https://qiita.com/t_skri/items/aafb1b1c4942ae644f58)で作成したひな型にHelloWorldを作成していきます。#環境
OS:Windows 10 Pro 64bit
Editor:Visual Studio Code 1.42.1
JDK:AdoptOpenJDK 11.0.6+10 x64
Apache Maven:v3.6.3
Apache Tomcat:v9.0.31#pom.xml
pom.xmlにSpring MVCに必要なRepositoryを追加します。Repositoryの検索はMVN REPOSITORYを使用しています。
[https://mvnrepository.com/](https://mvnrepository.com/)propertiesに追加
“`XML
5.2.4.RELEASE
fa
Visual Studio CodeによるSpring5 MVC Webアプリ開発 Mavenひな型作成編
#はじめに
環境構築は[こちら](https://qiita.com/t_skri/items/b16cd5a8868398ca0fc2)を参考にして下さい。直接Java11プロジェクトを作成する方法が見つけられませんでしたので、まずJava8プロジェクトを作成します。
作成後、Java11の設定に変更します。#環境
OS:Windows 10 Pro 64bit
Editor:Visual Studio Code 1.42.1
JDK:AdoptOpenJDK 11.0.6+10 x64
Apache Maven:v3.6.3#雛形作成
Visual Studio Codeのコマンド入力でも出来ると思いますが、今回はコマンドプロンプトにコマンドを入力して作成します。
コマンドプロンプトを開いて、雛形を作成したいフォルダに移動して下さい。
今回は「D:\JAVA\Project」に作成します。“`
mvn archetype:generate -DinteractiveMode=false -DarchetypeGroupId=pl.org.miki -Darchet
Spring Securityで403 forbiddenが発生する
Spring Securityを導入した環境でセッションタイムアウト後にアクセスしようとすると以下のエラーが発生する
![403.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377078/80a69589-cc1e-f21b-0a76-c74e4d067fd4.jpeg)
これはSpring SecurityのCSRF対策でCSRFトークンチェックをする際にCSRFトークンの保存先としてHttpセッションを使用しているために発生する。
これを防ぐためには、以下のコードのようにinvalueSessionUrl()にセッションタイムアウト時の遷移先を指定することで可能。
“`
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http)
ABC – 134- A&B&C&D&E
#AtCoder ABC 134 A&B&C&D&E
[AtCoder – 134](https://atcoder.jp/contests/abc134)E/Fは時間切れ・・・
#A – Dodecagon
“`java
private void solveA() {
int n = nextInt();out.println(3 * n * n);
}
“`#B – Golden Apple
“`java
/**
* 6 2
* 1 2 3 4 5 6
* – – ^ – –
* – – ^ – –
*
* 20 4
* 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
* – – – – ^ – – – –
* – – – – ^ – – – –
* – – – –
偏差値コンポーネントを作ってみる
#偏差値コンポーネント
コンポーネントで実装したいことをリストアップします。1. 入力レコードの指定フィールド値を偏差値に変換して出力する
* 入力ストリームはRecordとCSV
* ストリームの形式は変わらない StreamPassThrough
* 指定フィールド値が空の場合は計算に含めない
* プロパティに標準偏差を出力
* プロパティに計算に使用したレコード数を出力#偏差値って
入試でよくあるやつで、秋田県にある国際教養大学が偏差値70で国公立TOPとのことです。上位2.275%に入る!
[Wikipedia](https://ja.wikipedia.org/wiki/%E5%81%8F%E5%B7%AE%E5%80%A4)で調べると式が書いてあります。“`
偏差値 = 50 + 10×(値-平均値)/標準偏差
“`#JavaInterpreterコンポーネントで雛形を作成
いつものJavaInterpreterコンポーネントを使用します。
![javainterpreter.PNG](https://qiita-image-store.s3.ap-n
Java 日付の厳密なチェックとサマータイムの関係
## 日付の厳密なチェック
`DateFormat#setLenient(boolean)` は、**緩やかな日付チェック**に関する設定です。`SimpleDateFormat`などで使います。デフォルトは`true`で厳密なチェックをしない。
厳密なチェックをしたい場合は、`false`をセットする。[^1]
[^1]: 厳密でないの反対なのだ(捉え方によってbooleanの値が逆向きになってしまう設計はやめましょう)。緩やかでない。ゆるくない。ガチで。ちなみにJava 8からは`DateTimeFormatter`で[列挙型ResolverStyle](https://docs.oracle.com/javase/jp/8/docs/api/java/time/format/ResolverStyle.html)が使えるようになっています。参考:[Open JDK DateFormat#setLenient(boolean)](https://cr.openjdk.java.net/~iris/se/11/latestSpec/api/java.base/java/text
初心者から始めるJava、クラスのフィールド・メソッド
#はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
~~**間違えた**ものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。~~
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。今回は基礎を理解するために、間違えを記述しない。
##環境
言語:Java11、JDK13.0.2
動作環境:Windows10#クラスの宣言
クラスを宣言(declaration)するところから見てみる。これは[やさしいJava 第7版](http://mana.on.coocan.jp/yasaj.html)からの引用となる。“`Java:declaration.txt
class クラス名
{
型名 フィールド名;
…
戻り値の型 メソッド名(引数リスト)
{
文;
…
return 式;
}
…
}
“`
この宣言に基づいて実際のクラスと比較してみる。“`Ja
Eclipse – java.lang.ClassNotFoundExceptionを解決する。
#Eclipse – java.lang.ClassNotFoundExceptionを解決する。
EclipseとJava Fxを使い開発を行っていたとここのエラーに遭遇。
早く解決しなければということで調べ回っても解決に至る回答が見つからなかったため、ここに残しておこうかなと。##ひたすらに調べた
まずこんな投稿を発見。
https://qiita.com/yuki_tanaka_lib/items/91d4f1ce56b020af8e2c
確認してみるも変わらず。これはどうだろうたくさん書いてある
Classファイルの生成場所を確認しても正しく生成されているし…あと他にEclipseが関連してそうなものはない…
##原因がわからない→仕方ない考えよう
調べればすぐ解決策が出てくるだろうと思っていました。
しかし調べて見つからなければ自分で考え、原因を探るしかありません。
片っ端から気になる部分を解決していく…##結論。
はい、もう長く
JavaSilver11 勉強法
JavaSilever11に合格することができたので勉強法を書いていこうと思います。
##勉強時間と方法
書籍は黒本だけを利用。
とても詳細且つ分かりやすく解説がしてあります。
ある程度知識がある人は黒本だけで十分足ります。勉強時間 約80時間
日数 約1か月##勉強法
1章~11章の解説のページを自分が既に知っている内容知らない内容にかかわらずノートに要約し書き出しました。12章と13章の模擬試験を2周する
1回目 65点
2回目 99点(問題を暗記してしまっているからめちゃくちゃ高い)##合格したいだけなら…
模擬試験(12章,13章)の問題をすべてを理解していれば合格可能です。
対策のブログなどでさんざん言われてますが、模擬試験と問題がほぼ同じだからです。
私が受けたとき(2020/02/29)は半分程度が模擬試験の問題とほぼ同じあるいはまったく同じでした。
ただ丸暗記はやめたほうがいいです、一見模擬問題と同じに見えて模擬と違う答えになる問題もあります。##コツ
ラムダは捨てても大丈夫というサイトが多いですが個人的にはもったいないと思います
jshellのデフォルトエディタにVS Codeを指定する
# 環境
**OS**Windows 10
**Java**
11
# jshell で外部エディタを使う
jshell には、外部エディタを使ってコードスニペットを編集できる機能が用意されている。“`shell
jshell> /edit
“`![jshell.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28302/d9c02750-dc3f-e5a1-8d2c-ac1d8f04b1df.jpeg)
デフォルトでは、こんな感じの超シンプルなエディタが立ち上がる。[^1]
[^1]: Ctrl+Z や Ctrl+Y による編集のやり直しや再実行ができないくらいシンプル
![jshell.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28302/068041de-96cc-3dcb-18c7-fef7f44c1d21.jpeg)
ここでコードを編集して `Exit` でエディタを閉じると、エ
計算ゲームアプリ Google play storeで公開しました
Google play storeで公開しました。
https://play.google.com/store/apps/details?id=com.nyaa.braintrainerAndroidスマホを使っている方は遊んでみてもらえると嬉しいです。
また、コードレビューしていただき、ソースコードを少し修正しました。
メモも追加したり、学習用のメモを消したりしました。もとのソースコード
https://qiita.com/KToushi/items/6e1a369111e904a6a22f//playaAgainボタンを押したときの挙動を定義
public void playAgain(View view) {
score = 0;
numberOfQusetions = 0;
timerTextview.setText(“15s”);
scoreTextView.setText(“0/0”);・
・
・new CountDownTimer(15100, 1000) {
//CountDownTim
GradleでAntを実行する方法
Javaを使っているプロジェクトで既にAntの資産がある場合など、GradleからAntのbuild.xmlのtargetを実行したい場合などあるかと思います。
そのためのやり方を調べたのでメモがてら綴ります。
# build.xmlをインポート
インポートするにはant.importBuild()メソッドを使います。
▼build.xmlにはechoするtargetを1つ用意
“`xml:build.xml
“`
▼build.gradle側でbuild.xmlを使えるようインポート
“`gradle:build.gradle
ant.importBuild ‘build.xml’
“`▼build.xmlで
#01-03 学習内容3日目 Java基礎文法 (2020/03/11)
# 今日の目標
– スッキリわかるJava入門第9章 p.366まで
– 一度やったことのある内容なので、そこまで時間はかからない。
– さっと通す程度にしたいと思います。
– Java練習問題課題を提出
– 送信されてきたメールの語彙を検索。次回プロジェクトで行う内容がチンプンカンプンなのでまずは、語彙の意味するところを解釈して、計画をそれに合わせて練り直そうと思います。(明日)
–
Javaエンジニア養成読本 から8~9章 メモアプリを写経した
[Javaエンジニア養成読本](https://amzn.to/2W47WF8) の8~9章に、RDBとJSFをつなぐメモアプリの作成が掲載されていました。こちらを写経したときの自分用メモ
# メモアプリの構成
JSF(Web) > MemoBean、MemoEditBean に書かれた操作をxhtml内から呼べる
|
MemoBean(view scoped)
MemoEditBean(view scoped) > このへんのview scoped Beanは、MemoとMemoFacadeを保持する。MemoをMemoFacadeに渡して操作をする
|
Memo(エンティティ) > これはDBから生成させてそのまま。
|
MemoFacade(エンティティクラスのセッションBean、EJB) > Memoエンティティに関連付けて生成させたFacade。DB上のMemoを操作する
|
RDBMS## メモ
– JSFでは、MemoBean, MemoEditBeanが手元にあるように呼べる
– ↑ ここ、まだ違和感あるw
– ビュー(JSF)で必要な操作はvi
初心者から始めるJava、Hello,world!
#はじめに
この記事は備忘録である。
参考書レベルの内容だが、本記事に掲載するコードについては、
**間違えた**ものが中心となる。これは実際にコーディング中に間違えた部分を掲載し、自分で反省するために投稿するという目的によるもの。
また、後日にJavaSilver試験問題の勉強を兼ねて復習するため、深い部分の話はここでは触れない。##環境
言語:Java11、JDK13.0.2
動作環境:Windows10#Hello,worldとは
プログラミングに触ったことがあれば、必ず誰もが書いたことがあるだろう。僕のおぼろげな記憶だと、中学のコンピューター授業で`Basic`か`C`で書いたように思う(このときはプログラムの世界に飛び込むとは思わなかった)。ちなみに僕は`Python`で**「Python3エンジニア認定基礎試験」**を受けるための勉強からだったので、コマンドプロンプトからこう書いた。“`Python:Hello,world!.py
>>> python
(省略,python3.7.2を起動したときのメッセージ)
>>>print(“Hello,world!”)
Dataflowでプロファイリングとかダンプとか見てみる
Dataflowのパフォーマンスが気になった時のメモです。
Cloud monitoring、Cloud Profiler、メモリダンプがDataflowで使えます。# Cloud monitoring
Cloud monitoringでJVMのメモリ使用量などをモニタリングする事が出来ます。## わかること
* JVMのメモリ使用量
* スレッド数
* その他[agent metrics](https://cloud.google.com/monitoring/api/metrics_agent#agent)## 試してみる
デフォルトでは無効なので、[–experiments=enable_stackdriver_agent_metrics](https://cloud.google.com/dataflow/docs/guides/using-stackdriver-monitoring#receive_worker_vm_metrics_from_the_agent)で、パイプラインの起動時(もしくはテンプレートのビルド時)に有効にします(※)。
※ expe