- 1. JMeter チートシート
- 2. 【初心者向け】java -jar コマンドでJVM(-D)オプションが効かない、ライブラリがバグってるんじゃないかと言いたくなったとき。
- 3. Javaのメソッドと引数の関係を生化学式に解釈する
- 4. Minecraft Plugin開発(Java)
- 5. Lombokのカスタムアノテーションを作ろうとして諦めたメモ
- 6. Angularチュートリアル + SpringBoot + PostgreSQLをやってみた
- 7. Groovy超簡単入門
- 8. OpenJDKについて簡単に整理
- 9. [写真整理][java][windows]選択した写真を2クリックでフォルダに移動する
- 10. 【資格試験】Java SE8 Silver学習方法まとめ
- 11. C#とJavaの書き方の違いをまとめる
- 12. 安易なメソッド参照は気を付けるべし
- 13. 現場で「StreamAPI使うな」と言われたあなたへ
- 14. JavaFXのWebViewで絵文字が出ない問題への対処
- 15. ダウンロードできてたCSVファイルが、突然ページ表示されるようになった。
- 16. SpringBootアプリケーションの運用を楽にするための機能、SpringBoot Actuatorのご紹介
- 17. ID を格納する変数を int/long でなく ID 型にする (Java)
- 18. Spring boot サンプルプログラムでポートを使えなくなった話
- 19. Resultsetのnext()を、次があるかの判定メソッドと勘違いしていた件
- 20. Eclipseのヒープサイズを増加させる(メモリ不足エラーを解消する)
JMeter チートシート
# JMeter とは
自動でブラウザ操作をするツール
主にラッシュテストに使う
ちょっとした操作なら[postman](https://www.postman.com/) の方が優秀だが、
**postman は複数スレッドを起動できないため、JMeterを使わざるおえない**# 前提
JMeterのインストール先:c:\apache-jmeter-5.2.1
# JMeter の起動(画面)
“`:jmeter_view.bat
set JMETER_LANGUAGE=-Duser.language=”ja” -Duser.region=”JP”
c:\apache-jmeter-5.2.1\bin\jmeter.bat -H “プロキシホスト” -P “プロキシポート” -u “プロキシユーザー” -a “プロキシパスワード” -t honya_rush_test.jmx
“`1行目:日本語化
2行目:jmeterをviewモードで起動
起動オプション
-t:ブラウザ操作の設定を保存するファイル名。初回はファイルがないのでエラーになる# JM
【初心者向け】java -jar コマンドでJVM(-D)オプションが効かない、ライブラリがバグってるんじゃないかと言いたくなったとき。
## 背景
Java製のOSSや社内に閉じたライブラリを開発していると、こんな問い合わせを受けることが何度かあったので、せめてQiitaに書いておけばググって自己解決してくれるのではないかという淡い期待をこめて。
## 問い合わせはこんな感じ
### パターン1
ライブラリのドキュメントには、`-Dxxxx=yyyy`を指定すると、`xxxx`オプションが有効になると書いてありますが、動作しません。ライブラリがバグってませんか?
### パターン2
組み込みTomcat(またはJettyなど)を使用したjarを起動する際、JMXを有効にするために`-Dcom.sun.management.jmxremote`やそのほかJMXのオプションをつけてますが、アプリケーションを起動してもJMXのポートがLISTENになりません。
組み込みTomcat(またはJettyなど)のパラメータ調整が必要でしょうか?
## バグってるのはライブラリでもServletコンテナでもない
“`bash:誤ったコマンド
java -jar zzzz.jar -Dxxxx=yyyy -Dcom
Javaのメソッドと引数の関係を生化学式に解釈する
Javaをはじめたのですが、なかなか理解できないので自分なりの解釈で勉強します:ghost:
##メソッドの定義
“`public static メソッド名 (引数リスト) {
処理
}
“`##メソッドの呼び出し
“`
メソッド名(引数)
“`###引数とメソッドの考え方
:point_up_tone1:引数=基質
:point_up_tone1:メソッド=酵素
と考える“`eg)
public class Main {
public static void main(String[] args){
hello (“Java”);
}public static void hello (String name){
System.out.println(name + “こんにちは”);
}
}
“`基質(引数)が酵素(helloメソッド)を活性化する(呼びだす)
活性部位(変数の型と順番)があわなきゃダメ:helmet_with_cross:→コンパイルエラーになっちゃう![622.jpg](https://qiita-ima
Minecraft Plugin開発(Java)
1.15.2-R0.1
Minecraft(JE)です
アイテムをドロップしたことを検知して、その数秒後にアイテムの名前を変更するコードを書きたいのですが、上手くいきません。
Bメソッドまで呼ばれていることを確認しましたが、Bメソッド内のitemStackの更新が上手くいかないようです。
Aメソッド内では問題なく名前の変更ができました。
回答お待ちしています下記コード
//省略//
@EventHandler
public void onPlayerDrop(PlayerDropItemEvent e) {
ItemStack itemStack = e.getItemDrop().getItemStack();
Test test = new Test(itemStack);
test.A();
e.setCancelled(true);
}
}public Test {
java.lang.System.out
Lombokのカスタムアノテーションを作ろうとして諦めたメモ
Lombokのカスタムアノテーションを作ろうとして諦めたメモです。
3行でまとめ:
1. Lombokのアノテーション実装ではJava内部クラス(コンパイラ関連)を参照する。
2. Java9 以降、Java内部クラスの参照方法がビルドシステムやIDEで大きく変わり、難易度がめちゃくちゃ高くなった。
3. アノテーションを集約するメタアノテーション的なのもLombokでは未対応なので、打つ手なし、ギブアップ。作ろうとした経緯:
1. `@Value` 大好きなんだけど、Eclipse上からlombokが作成したgetterの利用箇所を Ctrl + Shift + F で逆引きできない。というかしづらい。
– ソースコード上にはgetterは無いので当然といえば当然。
– 一応、Outlineビューで表示すれば getter も見えるので、その getter を右クリックして “References” メニュー選べば参照箇所逆引きできるけど、まぁめんどいっちゃめんどい。
– 参考: https://stackoverflow.com/questions/42
Angularチュートリアル + SpringBoot + PostgreSQLをやってみた
# Angular + SpringBoot + PostgreSQL
## はじめに
フロントエンド: Angular(TypeScript)
バックエンド: SpringBoot(Java)
DB: PostgreSQLこちらの記事を参考にして、タイトル通りのものを作ってみました。
[Angularチュートリアル + Spring Bootやってみた](https://qiita.com/panichi/items/7e17820d02fa274bf04a)## 前提条件
[Spring Initializer](https://start.spring.io/)でプロジェクトを作成していること
Maven Projectで作成し、
Dependenciesは`postgreSQL Driver`と`Lombok`を入れました。名前は適当に
環境
– Mac OS Catalina 10.15.2
– Intellij Community 2019.3.1
– Java 11
– PostgreSQL 12.1この記事ではMacでやっていますが、Wind
Groovy超簡単入門
##Groovyの紹介
Groovyは2003年開発されたJavaプラットフォームで動作する動的プログラミング言語であり、直接スクリプトで実施することを特徴としています。##Groovyプロジェクト作成
まずは、簡単なJava Beanを作ります。
“`java
public class Cat{
/**The name of the cat*/
private String name;/**The age of the cat*/
private int age;/**Constuct*/
public Cat(String name, int age) {
this.name = name;
this.age = age;
}/**Get the cat name*/
String getName() {
return name
}/**Set the cat name*/
void setName(Strin
OpenJDKについて簡単に整理
#はじめに
開発言語のJava。
はいくつか種類があるって知ってました?
簡単に知識整理をしておきたいと思います。#OpenJDKとは
+ Open Java Development Kit
+ Java のフリーかつオープンソースの実装。
+ 2006年、サン・マイクロシステムズが始めた。
+ GPLリンク例外つきの GNU General Public License (GNU GPL) でライセンスされている。
+ OpenJDKはJava SE 7以降の公式リファレンス実装とされている。
+ 参考:https://ja.wikipedia.org/wiki/OpenJDKその他の用語と合わせてみると。
|用語|説明|
|—|—|
|Java SE|Java Platform Standard Edition。**仕様**の集まり。|
|OpenJDK|Java SE に基づいた開発を行っている**オープンソースプロジェクト**。ソースコードが管理されている。|
|JDK|Java Development Kit。**Oracle**が提供するJava SE開発
[写真整理][java][windows]選択した写真を2クリックでフォルダに移動する
###フォトビューアで参照している写真を★★★のフォルダに振り分けを行います
フォトビューアから、これを起動すると、今いるフォルダの一つ上に★★★をつくり、★★★に移動します。
![20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490393/e63504bc-0f95-1376-d481-8e0407173d90.jpeg)
Exe加工はlaunch4j等にて実施しています。
http://launch4j.sourceforge.net/フォトビューアを有効にするにはこの辺りを参考に。レジストリを編集するのが手っ取り早いです。
https://popozure.info/20190823/14633###実行ファイルのダウンロード
きっと実行ファイルだけが欲しいかと思いますので
こちらからダウンロードしたいただけば実行ファイルを入手できます。
https://drive.google.com/open?id=1dKcispHr8_D81kaPRgID7oKf27bEMfvS##
【資格試験】Java SE8 Silver学習方法まとめ
#はじめに
最近Java SE8 Silverの資格を取得しました。
このあとJava SE8 Goldも受験予定なので、諸々振り返りと今後の整理をするためメモにまとめます。あくまで個人的な意見ですが参考になれば幸いです^^
また、間違いや異なった意見を持ってる方いらっしゃったら、コメントいただけると嬉しいです!※本めもは、企業でしっかり研修などを受けて受験する方というより、個人的に資格取得を目指している初学者の方向けな感じです。(私がソンな感じ)
#受験者のバックグラウンド
十数年前に1ヶ月ほど、入社時研修としてJava研修を受けた事があります。
その後は、ほぼプログラミングに関わる事なく10年ほど金融系企業向けのアカウントSEをしておりました。そのため、プログラマーとしては下の下。現在駆け出し中です(笑)※ちなみに、Androidエンジニアとして転職して2ヶ月半ほど経ちます。現在、Java,kotlin双方で開発を行なっています。
#Java Silver SE8 試験について
OracleのJavaSE8認定資格公式ページより概要を抜粋します。
>Oracle C
C#とJavaの書き方の違いをまとめる
## 前置き
いつもはC#で開発をしていますが、使用するAPIにC#用のインターフェースがまだ整っていなくJavaで開発を始めてみました。
あまりJavaは触ったことがなかったため、C#でいう「xxxx」はJavaでいう「xxxx」というのをまとめてみました。
私がよく使っている予約語、実装方法が中心となっています。そのため全ての違いが網羅できているわけではありません。## C#とJavaの予約語、実装方法の違い
### 予約語の違い
C#、Javaでの予約語の違い、変わらない点をまとめてみました。
同じ、似ていると思った項目を横並びにして比較してみます。|差異|C#|Java|備考|
|:——|:——————|:——————|:——————————————————————|
||namespace|package||
||using|import||
|なし|class|class||
||:|extends|クラス継承|
|なし|
安易なメソッド参照は気を付けるべし
#導入
こんにちは。けちょんです。
**皆さん、メソッド参照使っていますか?**
便利だし、可読性も上がりますよね。
そんなメソッド参照で。気を付けるべき仕様があったので紹介します。#よくやる使い方
“`Java
public class Main {
public static void main(String[] args) throws Exception {
Arrays.asList(“test1”, “test2”).stream().forEach(System.out::println);
}
}
// test1
// test2
“`
staticメソッドをメソッド参照していますね。
他にもこんな使い方ができますね。“`java
public class Main {
public static void main(String[] args) throws Exception {
Arrays.asList(“test1”, “test2”).stream().map(String::toUpperCase).forEach(Syst
現場で「StreamAPI使うな」と言われたあなたへ
寒暖差激しいですね。
暖かい日しか出社したくないですが、人は習慣に飼いならされることで怠惰にならなくて済むので、定時出社という悪しきルーティンを受け容れようかなとか思っています。## 「ストリームの乱用はプログラムの理解や保守を難しくする」
> Effective Java第3版より
“ストリームの乱用はプログラムの理解や保守を難しくする”いきなりですがこれが結論です。短くて読みやすいコードは素晴らしいです。しかし、StreamAPIは、短くて難解なコード、長くて難解なコードを生み出すことも容易です。私をはじめ、StreamAPIを理解しきれていない人が実装する際は、プログラムの可読性悪化のリスクを常に認識しなければなりません。
これはすなわち現場のプログラマの問題であり、StreamAPIが悪い訳ではないということです。
StreamAPIが書きたければ、場所を変えましょう。あなたの実装したStreamAPIによる簡潔なコードが、コピペによる濫用によってそこかしこに広がり、問題の種になる前に。## 短くて読みやすいStreamAPIによる実装
とはいえ、このまま終わって
JavaFXのWebViewで絵文字が出ない問題への対処
JavaFXのWebViewに文字列を出そうとした時に大抵の日本語は出るのだが、絵文字&他にも一部の文字(?とか ?とか)が出ない問題が起きた。
Javaの内部ではUTF-16で扱っていて、UTF-8にする時にサロゲートペアで扱われている文字がおかしくなるようだ。
HTMLには数値文字参照という文字のコードポイントを直接指定して文字を出す機能がある。
(書き方は“`&#x{16進};“` または “`&#{10進};“`)例えば HTML上に“`💯“` とかくと?になる。
この機能を使い、以下のコードでHTMLに出力される文字列が数値文字参照になるようにして解決した。
“`java
String toCharacterReference(String str) {
int len = str.length();
int[] codePointArray = new int[str.codePointCount(0, len)];for (int i = 0, num = 0; i <
ダウンロードできてたCSVファイルが、突然ページ表示されるようになった。
突貫工事で、複数人が入力したデータを、CSV形式でファイルダウンロードするWebアプリケーションをリリースしました。
利用したのは以下のOSSです。* Spring Boot 2.2.4.RELEASE
* 組み込みのTomcat 9.0.30
* Chrome 79.0.3945.130運用開始当日は特に問題がなく、退社して友達と飲んでたら、何やら自分のスマホが騒がしい。。。着信に出てみると「ダウンロードができない」との連絡が。詳細を確認すると「3時間前まではダウンロードを行うとCSVファイルが出力されていたのに、突然、ブラウザ上にCSVが表示されるようになった」とのこと。
友人に誤り、飲みを切り上げ、原因の調査を開始。一応、こう修正すれば動くというが判ったので、まずはサービス優先でリリースしました。しかし、原理が不明なままなので、継続調査を実施しました。
## 修正の内容
以下は、今回の問題となったダウンロード処理の簡略化したコードと、修正後のコードです。
* 修正前
“`kotlin
@PostMapping
fun export(respon
SpringBootアプリケーションの運用を楽にするための機能、SpringBoot Actuatorのご紹介
# 急いでいる人へのまとめ
– SpringBoot Actuatorを使うと各種情報が簡単にとれる
– 最小限の機能を使うには、依存ライブラリの追加と設定のみ
– システム稼働情報の参照、変更ができるようになるのでセキュリティには注意# システム運用で必要な機能とは?
システムは作って終わりではなく、安定稼働させたり、どれぐらい使われているかなどの運用も大事ですよね。
DevOpsや最近のアジャイルでも、如何にリリース後のフィードバックを受けて次の戦略を取っていくかを大事にしています。フィードバックとは利用者から、「こうしてほしい」「こんな機能がほしい、いらない」だけではなく、システム運用者から「この機能が使われてないんだけど」とか「この機能が急に使われ始めた」という提供者側からの気づきも大事になります。後者の今のシステムで必要な情報を取るための機能がSpringBootではSpringBoot Actuatorという機能が用意されていますので、そのご紹介となります。
# SpringBoot Actuatorとは?
SpringBootの拡張機能で、各種情報が簡単に
ID を格納する変数を int/long でなく ID 型にする (Java)
# 概要
ID を持ちまわる際、通常なら int, long, String などに格納するわけだが、これだと下記のような場合にちぐはぐになって分かりづらくなる可能性がある。
“`java
public someMethod(int hogeId, int fugaId) { … }
“`これをこうできればケアレスミスを防げる。(ちぐはぐにするとIDEがエラーとなって教えてくれる。)
“`java
public someMethod(HogeId hogeId, FugaId fugaId) { … }
“`#### 注意ポイント
これは分かりやすくなる一方で、気を付けるポイントがある。
1. Jackson で JSON に/から変換可能であること
2. MyBatis でパラメータ/結果として扱えること
3. Spring MVC の URL パラメータや `@RestController` の 戻り値 として扱えること
4. Id のクラスを沢山作ることになるので個々には面倒な記載が要らないこと(親クラスに実装もたせる)
5. パフォーマンスが損
Spring boot サンプルプログラムでポートを使えなくなった話
#ポートに誰かが居座っている
“`
Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port.
“`
なんだこいつは。一回目は起動していたのに。
文脈か察するに、ポートがすでに使われているみたいだ。#本当かどうか確認してみる
cmdから“`
netstat -an
“`
で確認してみる。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233158/f57704f7-c5a5-c025-1df5-ed9796c499e4.png)
確かに、8080がLISTENINGになっている。
これは別のアプリケーションが独占しているという認識でいいのだろうか。いったん前提をそれとして作業を、
**1. 動いているアプリを突き止めて終了する(仮定:多分前動かしたjavaがまだ居座っている?)**
**2. 1の仮
Resultsetのnext()を、次があるかの判定メソッドと勘違いしていた件
##事象
とあるコードで、SELECTクエリを投げ、
その取得結果を**ResultSet型の変数rset**に格納している箇所がありました。コード読解のためrsetの要素数を確認したいと思ったので、
以下のコードを途中に追記して実行しました。“`java:example.java
int testIndex = 0;
while(rset.next()){
System.out.println(“rsetの要素数を確認したい”);
System.out.println(++testIndex);
}
“`そうしたら、(それまでは正常終了していたのですが、)
その後ろの処理で、以下の例外が発生しました。**java.lang.IndexOutOfBoundsException: Index: 0, Size: 0**
##読解のはずが壊してしまっていた
おかしいなと思って見てみたら、next()の理解が誤っていました。
現在の位置から次の1行へ進んでカーソルを当てる機能もあるのですね。上記のコードで、最後の要素にカーソルがあたったままループを抜
Eclipseのヒープサイズを増加させる(メモリ不足エラーを解消する)
# はじめに
Eclipseのプラグインを追加するとき、メモリ不足エラーと表示され実行できなかった。
そこでヒープサイズを増加させ、問題を解決した。# 環境
Eclipse Photon Release 4.8.0# 試みたが失敗したこと
Eclipseのインストール先にある”eclipse.ini”を書き換える。
“`
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
–launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120913-144807
-product
org.eclipse.epp.package.jee.product
–launcher.defaultAction
openFile
–launcher.XXMaxPermSize
256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.t