- 0.0.1. Selenium × Java
- 0.0.2. JJUG CCC 2019 Fall 資料まとめました
- 0.0.3. SpringBoot×OpenAPI入門 〜Generation gapパターンで作るOpenAPI〜
- 0.0.4. Gradle5 で Lombok が使えない
- 0.0.5. Javaの入門書を一通り読んだので何か作ってみる
- 0.0.6. Javaにおけるスレッド実装方法の比較とラムダ式的記述方法
- 0.0.7. QiitaAPIを使って記事のいいね数ストック数をLINEへ通知する
- 0.0.8. インターフェイス
- 0.0.9. java学習2日目
- 0.0.10. Javaでプリミティブ型の配列からStreamを生成
- 0.0.11. 桁DPの実装例(Java)
- 0.0.12. Gradle を完全に理解した人が、何も分からなくなるための第一歩
- 0.0.13. MyBatisのMapperXMLでresultTypeが珍妙な動きをした
- 0.0.14. java学習1日目
- 1. progateにてjava学習
Selenium × Java
# SeleniumをJavaで使ってみた
## Seleniumとは
※以下抜粋
Seleniumは、Webアプリケーションをテストするためのポータブルフレームワークです。
Seleniumは、テストスクリプト言語を学ぶ必要なく機能テストを作成するための再生ツールを提供します。要はwebアプリケーションを自動で実行できたり、HTMLを解析(Webスクレイピング)するためのライブラリ。python、node.js、Java、PHPなど多言語でライブラリが用意されており、簡単に実装が可能。
## 経緯
会社の勤務システムがwebアプリケーションで動いており、PC起動時にブラウザ起動から提出まで自動化したいというのが最終目標。本記事はSelenium導入、「Chrome起動→Google検索を開く」までとする。## アーキテクト
| ||
|:-:|:-:|
|言語 |Java( ver.11 )|
|build |Maven |
|ブラウザ |Google Chrome |
|IDE |IntelliJ |## 手順
前提
java x M
JJUG CCC 2019 Fall 資料まとめました
タイトルのとおり昨日開催された「JJUG CCC 2019 Fall」の資料をまとめました。
資料が見つからなかった場合のリンクは、部屋番号のハッシュタグといった関連する内容のツイッターになっています。
ーーー
[タイムテーブル](https://ccc2019fall.java-users.jp/timetable.html)
10:00〜10:45
A+B
[試して学ぼう、Java EE アプリケーションをOpenShift(Minishift)でデプロイ!](https://www.slideshare.net/osonoi1/javaminishift20191123)C+D
[Head toward Java 13 and Java 14](https://www.slideshare.net/YujiKubota/head-toward-java-13-and-java-14-jjug)E+F
[All people are VIP~Disney哲学から考えるDiversity](https://docs.google.com/presentation/d
SpringBoot×OpenAPI入門 〜Generation gapパターンで作るOpenAPI〜
### 背景
Javaのコミュニティイベント「JJUG CCC 2019 Fall」に参加。
そこで聞いた「Swagger ではない OpenAPI Specification 3.0 による API サーバー開発」の登壇内容に触発されて超簡単なOpenAPIを作った話。(浅いです)### 今回のゴール
SpringBootを使ってOpenAPIを書く
### OpenAPIを使った開発フロー(ざっくり)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230829/fe324a04-eeea-b7f5-44fe-7157e2b4c0a9.png)
ルール:**Generation gapパターン** → 自動生成したクラスファイルは編集しない。
#### 1. API定義ファイルを用意
OAS(OpenAPISpecification)にあるサンプルを使用
https://github.com/OAI/OpenAPI-Specification/blob/master
Gradle5 で Lombok が使えない
# macOS x IDEA x Gradle5 x Spring-boot2 で Lombok を使おうとして、コンパイルはできるがビルドができない。
アノテーションの設定や Lombok Plugin の設定は住んでいて、@Slf4 を記述し、log.debug を記載してエディタ上でエラーは発生しないけど、ビルドすると以下エラーが発生する。
“`
/src/to/path/TestController.java:14: エラー: シンボルを見つけられません
log.info(“start”);
^
シンボル: 変数 log
場所: クラス GenerateLdifController
“`以下の設定を build.gradle に追加したら解決
“`
compileOnly group: ‘org.projectlombok’, name: ‘lombok’, version: “${lombokVersion}”
annotationProcessor group: ‘org.projectlombok’, name:
Javaの入門書を一通り読んだので何か作ってみる
#javaの入門書を一通り読んだので...
プログラミングは作ってなんぼ!!!
ということで何か簡単なゲームでも作ろうかと思い考えたのはずばり**『じゃんけん!!!』**(しょぼい)
これは自分のプログラミングロード第一歩ということでゲームの原点といってもいい**『じゃんけん』**!!!でちょうどいいじゃんと思い即座にコードを書いてみました!!!!!—
“`
class Janken{
public static void main(String[] args){
janken();
}
//メインpublic static void janken(){
int loop = 0;
//あいこの場合loop==0、勝利か負けの場合loop=1,
//※loop変数であいこの場合でもじゃんけんを繰り返すwhile(loop==0){
String hand[] = {“グー”,”チョキ”,”パー”};
//出し手変数
System.out.println(“最初はグー!じゃんけん・・・”);
System.o
Javaにおけるスレッド実装方法の比較とラムダ式的記述方法
## はじめに
急遽、Javaでマルチスレッドプログラムを作れという職場からの
無茶苦茶な要望に答えるべく速攻で勉強したことをまとめておく。
※ Javaの経験日数はまだ3日程度なのでミスしてたらご指摘ください。## 結論:とりあえずサクッと起動したい場合
サブスレッド起動までのパスが少ない&サブスレッドをインスタンスとして保持しないなら、ラムダ式を組み合わせて“`java:ThreadStartTemplate.java
new Thread( () -> {サブスレッドで実行したいメソッド or 処理} ).start()
“`でよさそう。便利っすねぇー。
※僕の中では、ラムダ式はローカルな無名クラスと理解しています。## 実行環境
自前でEclipseのインストールとかは後回しにしてとりあえず、文法を確かめるために[paiza.io](https://paiza.io/ja/projects/new)を使いました。## サブスレッドの実装方法
以下の2パターンでスレッドを実装できるみたい。
1. Rnnableインタフェースを使用する。
2. T
QiitaAPIを使って記事のいいね数ストック数をLINEへ通知する
# はじめに
[Spring-boot+Heroku+RedisでLINE botの状態管理をできるようにした](https://qiita.com/kaad/items/5bbe0b8a6f7fc17f429f)の続きです。
ちょいちょいストックしてもらえるのですが、その数を確認したいと思ったのでLINE botと連携させました。
## ターゲット
この記事で取り上げるのは以下ポイントです(の中でも使い方的な部分です)
– Qiita API
– RestTemplateLINE bot周りの実装などは[前回の記事](https://qiita.com/kaad/items/5bbe0b8a6f7fc17f429f)を参考にしてください。
## できたもの
qiitaのユーザ名を設定して、「qiita記事一覧取得」を選ぶと自分の記事一覧を通知してくれます。
それぞれがリンクになっているので、通知された記事をタップすると記事が表示されます。
(いいね数が第1ソート、ストック数が第2ソートです)
インターフェイス
# インターフェイス
シグネチャの集合をインターフェイスと呼ぶ。
インターフェイスは、いわばマニュアル集の目次のようなもの。
java学習2日目
progate javaコースⅣとⅣの道場を行った。学習時間は大体3h位。
インスタンス生成時にコンストラクタを使って引数を入れる事を理解した。
privateはそのクラスのみ、publicはほかのクラスでも使用可能。
privateの場合でインスタンス作成時に代入した値を出力する場合はゲッターメソッドを使用して出力。
セッターメソッドでは値を変更することが可能。
privateを使い、使用を制限することをカプセル化と言う。
Javaでプリミティブ型の配列からStreamを生成
`char`や`boolean`などのプリミティブ型の配列を使う時がある.
配列に対してStream APIを用いると簡潔に操作できることが多い.
しかし`Arrays#stream`は`int`,`long`,`double`以外のプリミティブな配列に対して適用できないので,そういう場合の対処法を備忘録的に書き留めておく.## 始めからラッパークラスを使う
`Arrays#stream`は任意のオブジェクト型に対して使用できるので,ラッパークラスを使う方法.“`java
final Character[] array = {…};
Arrays.stream(array)
…
“`## `IntStream`でインデックスを生成してマップする
本命
`IntStream#range`で対象の配列分のインデックスを生成しそれらを配列の要素にマップする方法.“`java
final char[] array = {…};
IntStream.range(0, array.length) // rangeClosedでないことに注意
桁DPの実装例(Java)
# はじめに
以下記事の桁DPの例題について、Javaにおける実装例を示します。
上記の記事は、非常に分かりやすく、桁DPの説明が書いてあるのですが、
実力不足の私は、例題の実装方法に迷いましたので、なんとか作ったJavaの実装例を示します。# 実装例
**例題:0以上、N以下の整数を数えてください。**
まず、答えはすぐに分かり、N+1個です。 (例えば、N=5なら、0,1,2,3,4,5の6つ)
しかし例として分かりやすいので、この問題を桁DPにより求めます。DPテーブルはこのように作りました。(初期化までした状態。例としてN=6425943)
| | 未満フラグ0
(Nと一致している個数) | 未満フラグ1
(N未満の個数) |
|—————|————–|———-|
| 桁0(先頭) | 1 | 6 |
Gradle を完全に理解した人が、何も分からなくなるための第一歩
## 自己紹介
– opengl-8080
– 主に Qiita で技術メモを書いたり
– 関西の SIer 勤務—
## タイトルの元ネタエンジニア用語の「完全に理解した」「何も分からない」「チョットデキル」は「ダニング・クルーガー効果」で簡単に説明ができます。これは一種の認知バイアスで能力の低い段階では自分の能力の低さを認識できないためです(過大評価しがち)。その反面で能力が高くなると過少評価しがちです。 pic.twitter.com/LGaJ4E5hWo
— おちゃめ (@ochame_nako) MyBatisのMapperXMLでresultTypeが珍妙な動きをした
# またしてもMyBatisがやってくれやがった
[前回に引き続き](https://qiita.com/genkai_desu/items/40d7bce85b4ca5e9a71a)、またしてもMyBatisのヘンテコな動きにハマったという話です。
とは言うものの、基本的に私自身がおっちょこちょいなのと、どう考えても間違えたやつが悪い案件なので
MyBatisは何も悪くないと思います(いや、やっぱ悪いと思う)
意外と自分自身では間違いを見つけられずに、無駄な時間を過ごしてしまうって事が
まれによくあると思うのでいつか誰かが同じようなことで悩んだときにすぐに解決できるように残しておきますMyBatisのバージョンは3.2です。
# 発生したこと
DBの`NUMERIC`なカラムに対して、Javaの`Integer`で保持しているデータが何故か入らなかった。
(実際に吐き出されたエラーをとっていなかったので、後でちゃんと貼り付けます!)
たしか、**`String`なデータを`NUMERIC`なカラムに入れるなら、明示的にCASTしてね!**
というようなエラー内容だった
java学習1日目
progateにてjava学習
javaⅠコース「コードの書き方,データの型,変数」.
Ⅱコース、演算子やプログラミングの論理の組み方.
Ⅲコース、メソッドとクラス、別のクラスからメソッドを呼び出す方法.
そして、それらの総復習としてⅣ(道場コース)まで学習した。
初投稿でいまいちqiitaの使い方がわからないのでとりあえずここまで:frowning2:
IntelliJ IDEAとGradleでのJavaFXアプリケーション開発 〜環境構築からサンプルコードまで〜
#0.はじめに
いま、私は絶賛GUIツールを使ったソフトウェアを作る必要に迫られています。
~~ずっと放置していて~~最近着手したのですが、思いの外環境構築に手間取ったので備忘録を兼ねてここに書いておきます。#1.JavaFXって何ぞ?
「JavaでGUIと言ったらAWT!Swing!」と思っている方はいませんか?
実は最近、JavaFXというフレームワークが出てきてかなりGUIツール開発のハードルが下がったと聞いています(聞いているだけ)。筆者はたまたま、「あー、GUIかー、どうやって作るんだろうなー」とネットをさまよっていたら見つけました。
今日はそんな便利~~そう~~なJavaFXの入り口を少しだけご紹介します。#2.筆者の環境
– MacBook Pro (Early 2015)
– macOS Mojave (10.14.6)
– IntelliJ IDEA Community Edition (2018.3.1)
– OpenJDK (13.0.1)#3.環境構築
##3.1.OpenJDKのインストール
###3.1.1.ダウンロード
[OpenJDKのサ
java初級編 4
こちらを読んでいただく前にまずjava初級編3がありますのでそちらを拝見ください⬇️⬇︎^^
https://qiita.com/shinpachix/items/6f6f972e7980f4c59d3d
##continueとbreak
continue – 繰り返しの最初に戻って次の周回へ行く
break – 繰り返しを終了して次へ“`
int x = o;
while(true) {
//xが1の時ここへ戻る(printlnは実行されない)
x++;
if(x==1)continue;
System.out.println(x);
if(x==10)break;
}
//breakするとここへ
“`##配列
“`
String[] a = new String[3];
a[0] = “こんにちは”;
a[1] = “おはよう”;
a[2] = “さよなら”;for(int i = 0; i < 2; i++) { System.out.pintln(a[i]); ``` 一つの変数を複数の変数の列のように扱える []の中を添字と言う。 0から始まる。
Streamの終端処理
[Streamの生成処理](https://qiita.com/key_sleep/items/758067cde4f054d61010)および[Streamの中間処理](https://qiita.com/key_sleep/items/e1684f2e12532f37f507)
で処理をあたえたあとのStreamをどのような要素として終えるのか処理する## find系
検索および要素がのこっているかどうかの確認に使用“`java
Listlist = Arrays.asList(“a”,”b”,”c”,”d”,”e”); // findFirst
String a = list.stream().filter(s -> s.equals(“a”)).findFirst().orElse(null);// findAny
String any = list.stream().filter(s -> s.equals(“a”)).findAny().orElse(null);
“`## match系
指定した条件式にあてはまるものがあるかどうかを
Streamの中間処理
[Streamの生成処理](https://qiita.com/key_sleep/items/758067cde4f054d61010)
で生成したStreamの対して様々処理を与える部分。ここではまだListを生成したり、文字列として出力したりなどは行わない。
この記事では例として、すべての終端処理にListを再生成させておく## map
ラムダ式や関数を用いて要素を変換したい場合に用いる。“`java
// ラムダ式
Listactual = list.stream().map(s->s.length()).collect(Collectors.toList()); // メソッド参照
Listactual = list.stream().map(String::length).collect(Collectors.toList());
“`## filter
条件式によってStreamの要素の絞りこみを行いたいときに用いる“`java
Listactual = list.stream().fi
if文の書き方のまとめ(Scala、Java、Rust、C言語、C++、Go言語、PHP、Perl、Python、Ruby)
いろんな言語を触っていると、言語の重要な特徴はともかく、細かい文法や記号の使い方などがだんだんごっちゃになってきてしまいます。あれ、これってこの言語だとどう書くんだっけ?ってなることがよくあります。前はよく使っていた言語なのに、ちょっと離れただけでもう忘れてしまった、とショックに感じることもあります。なので、こういうメモを作っていこうと思います。
# Scala
“`scala
if (x >= 30) {
…;
} else if (x >= 0) {
…;
} else {
…;
}// 文ではなく式
val max = if (a > b) a else b;
“`– 条件式は論理値であることが必要
– C言語と同様に`{ }`の中の式が1つの場合は`{ }`を省略可能
– 文ではなく式[Conditional Expressions – Expressions | Scala 2.13](https://scala-lang.org/files/archive/spec/2.13/06-expressions.html#c
Watson SDK for Javaでサービスの呼び方を調査した
##元ネタはこれ
https://github.com/watson-developer-cloud/java-sdk##なにがはまったのか
ぱっとみて、「はいはい、API_Keyを渡すんでしょ」っていうこのコード部分に誘導された・・“`Sample.java
// letting the SDK manage the IAM token
Authenticator authenticator = new IamAuthenticator(““);
Discovery service = new Discovery(“2019-04-30”, authenticator);
“`##基本的な考え方
IBM CloudにDeployするなら、VCAP変数が使えるから、Authenticatorを指定せずにサービスのインスタンスを作ればいい。
(難しいことを考えた方が負け)##単体テストをするとき
Credential Fileをとってきて読み込ませるのが楽(VCAP変数がないけど、あるのに近い感じでできる)>Credential fil