- 1. 初心者から始めるJava、クラスのフィールド・メソッド
- 2. Eclipse – java.lang.ClassNotFoundExceptionを解決する。
- 3. JavaSilver11 勉強法
- 4. jshellのデフォルトエディタにVS Codeを指定する
- 5. 計算ゲームアプリ Google play storeで公開しました
- 6. GradleでAntを実行する方法
- 7. #01-03 学習内容3日目 Java基礎文法 (2020/03/11)
- 8. Javaエンジニア養成読本 から8~9章 メモアプリを写経した
- 9. 初心者から始めるJava、Hello,world!
- 10. Dataflowでプロファイリングとかダンプとか見てみる
- 11. Javaの開発環境をDockerを活用して構築してみる
- 12. JGitで”git log –follow “を実現
- 13. 内部クラスの種類 staticの有無について
- 14. 【アルゴリズム入門】Javaで選択ソートを実装する
- 15. Kotlinでクラスを書いてJavaで呼んでみる
- 16. 安定結婚問題を解くアルゴリズムをJavaで作ってみた。
- 17. SpringBootでフォームクラスのバリデーションテスト
- 18. インターセプタークラスでkeycloakの認証情報を取得する方法
- 19. 【Android】Snackbarを任意の位置から表示させる
- 20. #01-02 学習内容 2日目 (2020/03/10)
初心者から始める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
Javaの開発環境をDockerを活用して構築してみる
# はじめに
– Java開発を行うにあたり、環境依存の少なく移行性、再現性の高い開発環境を作りたかった
– 時代はContainerでしょ。と言う事で、手元のMACにDockerで開発環境を構築してみた# 環境概要
– Java実行環境はもちろん、DBも、ビルド環境もコンテナ化して、いつでもどこでも誰でも同じ環境を実現
– お試し開発なので、IDEは使わず慣れているVScodeを使う
![my_java_devenv.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245534/33d57c0a-8793-549c-488e-12386742a912.png)
JGitで”git log –follow “を実現
Gitの再実装である`JGit`は,JavaのAPIとして利用できることから開発や研究などの幅広い分野で用いられている.
一方非常に癖があることで知られており,良く知られているコマンドを実行するのにも苦労することがある.
今回は,ファイル名の変更を考慮したうえでファイル単位のログを取得する`git log –follow`をJGitを用いてJavaプロジェクト内で実行する方法をメモとして書き残しておく. ## 方法
実は過去に似たような質問がStack Overflowでされていて,それに対する解答もある.
https://stackoverflow.com/questions/11471836/how-to-git-log-follow-path-in-jgit-to-retrieve-the-full-history-includi一方,この実装はかなりイケてないらしい(https://www.eclipse.org/lists/jgit-dev/msg03286.html ).
JGitの開発者曰く,用意されている`FollowFilter`を使えば良いらし
内部クラスの種類 staticの有無について
まず、ネストしたクラス(クラスの中に定義するクラス)には次の4種類があります
– ***staticなネストしたクラス***
– ***非staticなネストしたクラス***
– ***ローカル内部クラス***
– ***匿名クラス***## staticなネストしたクラスと非staticなネストしたクラスについて
– どちらも以下のような用途を持ちます
– エンクロージングクラス[^1]内部だけでオブジェクトを使う場合
– ネストしたクラスの実装を親クラス内に隠ぺいしたい場合
– トップレベルクラスの名前を節約する場合– staticをつけるのとつけないのとで挙動が微妙に変わります
“`MyObject.java
public class OuterObject{
String outer = “”;static void method() {
InnerStaticObject innerStaticObject = new InnerStaticObject();
InnerObject
【アルゴリズム入門】Javaで選択ソートを実装する
備忘録を兼ねて
アルゴリズムそのものの話はあんまりしません## ソースコード
“`java:SelectionSort.java
class SelectionSort {
public static void main(String[] args) {
int[] data = {30, 60, 70, 90, 40};
sort(data);
for(int element : data) {
System.out.println(element);
}public static void sort(int[] data) {
for(int i = 0; i < data.length;/*...⒈*/ i++) { int min = i;//...⒉ for(int j = i + 1; j < data.length; j++) { if(data[j] < data[min]) { min = j; }
Kotlinでクラスを書いてJavaで呼んでみる
去年Kotlinでコード書いたはずだ!とドキュメントを見てみるが、見覚えが無いなぁと思っていたら、去年書いたのはGoだった・・・乗り掛かった舟ということでKotlinを見てみました。
#開発環境はIntelliJ
KotlinのチュートリアルのGetting Startedで「Getting Started with IntelliJ IDEA」とIntelliJが1番に出てくるので流行っているのかな?コミュニティ版を[ダウンロード](https://www.jetbrains.com/ja-jp/idea/download/#section=windows)してインストールします。![IntelliJ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/b7306322-8959-69cc-d9d3-7a5de7bbf4cd.png)
#Kotlinファイル作成&実行
以前見たときよりダークなだけでカッコいい感じがするIntelliJ。
![intellij2.png](https:/
安定結婚問題を解くアルゴリズムをJavaで作ってみた。
# 安定結婚問題って知ってます…?
男性と女性が3人ずついたとします。
– 男A
– 男B
– 男C
– 女P
– 女Q
– 女Rすると3組の夫婦が作れますよね。
でも異性の好みは人それぞれですし、なるべくみんなが満足するような結果にしたい。そこで**個人個人がランキングを持っているとします。**
||1位|2位|3位|
|:————-|:—–|:—–|:—–|
|男Aの好み|女P|女Q|女R|
|男Bの好み|女Q|女R|女P|
|男Cの好み|女P|女Q|女R|
|女Pの好み|男C|男B|男A|
|女Qの好み|男B|男A|男C|
|女Rの好み|男C|男A|男B|さて、例えば下記のようなマッチングを考えたとしましょう。
– 男A ⇔ 女Q
– 男B ⇔ 女R
– 男C ⇔ 女P男Cと女Pはお互いに1位の相手と結婚しているので幸せです。
しかし、男Aと男Bはどうでしょう。**妻をとりかえっこしたほうがもっと幸せ**ですよね。
そこでマッチングを変更し、下記のようにしたとしましょう。– 男A ⇔ 女R
– 男B ⇔ 女Q
– 男C
SpringBootでフォームクラスのバリデーションテスト
javax側が持っているバリデーション(アノテーションで定義出来る)とSpring側のバリデーションのテスト方法について困惑したため、下記の通り纏めます。
ちなみに、javax側のカスタムアノテーションで全て作ればいいじゃんって思うかもしれませんが、思うようにテストが出来なかったため、やむを得ずSpring側で作成しました。[テスト実行時に、自作したValidation内のフィールドへDIする方法](https://teratail.com/questions/243089)
#やりたいこと
まずは対象となるクラスを確認します。“`java:PasswordForm.java
package com.ssp_engine.user.domain.model;import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;import org.hibernate.validator.constraints.Length;
import com.ssp_
インターセプタークラスでkeycloakの認証情報を取得する方法
keycloak認証からユーザーの認証情報を持った状態でAPIにリクエストを投げた際、
controllerクラスのメソッド呼び出される前にintercepter(インターセプター)から
ユーザー情報を取得するのにgetUserPrincipal()メソッドがあることを知らず手こずったのでメモ。“`intercepterTestClass.java
@Autowired
private UserDto userDto;@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
////認証情報を持っていない場合は
if (request.getUserPrincipal() == null) {
System.out.println(“認証情報なしの為、ダミー設定”);
userDto.setUseri
【Android】Snackbarを任意の位置から表示させる
#概要
Snackbarを画面の下部から出すのではなく、任意の位置から表示させる#レイアウトファイルでCoordinatorLayoutを入れる
“`xml:fragment_main.xml
#01-02 学習内容 2日目 (2020/03/10)
#今日の目標
まだ本が手に入っていないので、
– Future Codersのゲーム一つ作る。
– Java練習問題集の8章#Future codersのゲーム一つ
– 25分でできました。
– 今日は集中力が持たない感じ。後で昼寝しよう。。
– GameOverの判定方法の書き方が勉強になった!
`boolean isGameOver{ return 10 < words.size(); }` - `if (isGameOver){ text("GameOver", 10, 10); }` #Java練習問題集の8章 - クラスの継承 - `public class Student{ String name; int id; attend(){} }` - `public class School extends Student{ test(){} }` - メソッドのオーバーライド - 同様のメソッド名で中身を変更するだけ。 - 変更前のメソッドが利用したかったら、super.メソッド名として呼び出す。 #達成度 今日の目標達成! メソッドの