- 1. forの書き換えなんだろと理解しているStreamAPIを少し深堀する。
- 2. ArrayList配列でwhileによる繰り返し処理でIteratorで全部表示する
- 3. Spring Boot でテーブルのデータをビューに出力するまでの流れ
- 4. SolrJ で JSON をインポートする
- 5. GCPのjavaクライアントライブラリからStackdriver loggingにエラーを投げてもStackdriver ErrorReportingには入らない
- 6. 【java】if文でString型の条件文が無視される
- 7. SolrJ でドキュメントをインポートする
- 8. 【Android】音量変更(=音量ボタン押下)の検出方法
- 9. JScrollBarで自動スクロールしようとしたらイベントハンドラの描画が1度だけだった件
- 10. astah*プラグイン開発スニペット
- 11. Spring Framework 5.2.0 – CORSハンドリング変更によるVary header重複
- 12. ユークリッドの互除法(Java)
- 13. Callable Interface in Java
- 14. Eclipse MicroProfile Healthに触れ合う
- 15. Java (add)
- 16. 【Java】【AtCoder】【競技プログラミング】ABC 081 B Shift only
- 17. なぜnullは良くないと言われるのか
- 18. 【Java】【AtCoder】【競技プログラミング】ABC 081 Placing Marbles
- 19. Seleniumで通信内容を全部Captureする
- 20. jarファイルにファイルを追加する
forの書き換えなんだろと理解しているStreamAPIを少し深堀する。
JavaのStreamAPIを書きながら、そういえばこれってどういことなんだと
自分が疑問に思っていたことについて少しまとめてみました。
StreamAPIのtips集ではないので、そういうの期待されて記事を覗いた方は申し訳ありません。# この記事の概要
この記事を読めばこの要素について、ちょっと理解できる。
– 関数型インターフェース
– 中間処理と終端処理# この記事の目指すところ
なんとなく理解しているStreamAPIの文法的な要素を覚える。# そもそもStreamAPIの書き方って、どんなのだっけ。
1~10の偶数のみを表示するといった処理の場合のStreamAPIの書き方は下記のような形です。“`java
Arrays.stream(new int[]{1,2,3,4,5,6,7,8,9,10})
.filter( i -> (i % 2) == 0 )
.forEach( i -> System.out.println(i));
“`
(IntStream.rangeを使ったカッコいい形もありますが、そこは置いといて、、、)
ちなみ
ArrayList配列でwhileによる繰り返し処理でIteratorで全部表示する
#ArraylistをIteratorで全件表示する方法
“`
//Listの宣言
Listfruits =new ArrayList<>(); fruits.add(“リンゴ”);
fruits.add(“スイカ”);
fruits.add(“ナシ”);
fruits.add(“バナナ”);//Iterator
の宣言
Iteratorit2= fruits.iterator(); //hasNextを使用して値がある場合はループを継続する
while(it2.hasNext()){
//nextを使用して値を取得する
String nation = it2.next();
System.out.println(nation);
}
“`
Spring Boot でテーブルのデータをビューに出力するまでの流れ
## 事前に必要なこと
・DBへの接続設定を行う## 大まかな流れ
Usersテーブルからデータを取得し、表示するという設定です。1. エンティティを作成する
2. リポジトリを作成する
3. コントローラを作成する
4. ビューを作成する## エンティティを作成する
Usersテーブルのデータを取得した値を保存するのに利用する。“`com.example.entities.UsersEntity.java
@Entity
@table(name=”Users”)
public class UsersEntity{
@Id
private Integer id;
private String name;public Integer getId(){
return id;
}public String getName(){
return name;
}
}
“`## リポジトリを作成する
リポジトリはDBとデータのやり取りを行う。“`com.example.repositories.UsersReposi
SolrJ で JSON をインポートする
#課題
SolrJ ではドキュメントをインポートするのに「SolrInputDocument」クラスを使うことになっていますが、JSONからSolrInputDocumentに変換する機能は提供されていないようなので作りました。
フィールドのタイプをプロパティで指定できるようにしてあります。#Code
“`java
import java.io.IOException;
import java.util.Properties;import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrInputDocument;impo
GCPのjavaクライアントライブラリからStackdriver loggingにエラーを投げてもStackdriver ErrorReportingには入らない
# 超概要
stackdriver loggingのJavaクライアントライブラリからLogbackを使って利用する場合にはErrorをLogに送っても、Stackdriver ErrorReportingの方にはそのまま入らない。(題名通り
通常はStackdriver loggingにError以上のLogを入れるとErrorReportingの方にも入るのだが(それから通知などに使える)
Javaクライントライブラリ(Logback使用)の場合はどうやっても入らなかった。
これにハマって色々と調べるとなかなかつらいことが判明。## 経緯
時代にさかのぼってる感ありだが、最近Java(正確にはKotlin)で動くデスクトップアプリを制作している。
各ユーザーさんの環境で動くアプリケーションがどのようなエラーを吐いているかを見たいので、クラウドのロギングサービスを導入しようと思った。
ちょうどGCPを色々と試していた&Stackdriver ErrorReportingはJavaで使ったことあったので、Stackdriver loggingを使うことにした。## Stackd
【java】if文でString型の条件文が無視される
#javaでif(string == “test_string”)を使っているあなた.
“`java
String = “test_string”;if(string==”test_string”){
System.out.println(“SUCCESS”);
}
“`このようなString型の条件文にうまく入れないことがあります.
そんなあなたに朗報です.
“`java
String = “test_string”;if(string.equals(“test_string”)){
System.out.println(“SUCCESS”);
}
“`こちらを使えば入れます.
SolrJ でドキュメントをインポートする
# Code
“`java
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrInputDocument;public class HelloDocumentAdd2 {
public static void main(String[] args) throws SolrServerException, IOException {
St
【Android】音量変更(=音量ボタン押下)の検出方法
昔からあるレガシーな方法ですが、ググって出てくる情報が少し実用性には欠けるため、書いておきます。
## 手法
音量変更もしくは音量ボタンが押された事を検出するIntentとして、AudioManager.VOLUME_CHANGED_ACTION (android.media.VOLUME_CHANGED_ACTION)があります。これをBroadcastReceiverで受ければ良いだけです。ここまではググってすぐに出てくる情報ですが、AudioManager.VOLUME_CHANGED_ACTIONは以下の点に注意する必要があります。
– 一度の音量変更操作で複数のイベントが通知される
– AudioManager.STREAM_MUSICなどSTREAM毎に通知され、しかも音量変わって無くても通知される
– 画面ON中の初回ボタン操作時は音量UI表示され、実際には音量が変わらないためにイベント通知されない
– 画面OFF中は音楽アプリ等で音楽再生していないと、ボタン押してもイベント通知されない
– ボリュームが変わらないため## ソースコード
“
JScrollBarで自動スクロールしようとしたらイベントハンドラの描画が1度だけだった件
詰まって数時間が吹き飛ばされたので、メモ代わりに。Swingを使っている人ならだれでも一度は通る失敗(らしい)。
##どんなのをつくっていたか
Javaで自作シェルっぽいものを作ろうとしていて、JScrollPaneを自動スクロールさせようとしていた。調べながら書いたソースコードがこれ。“`Java:MyShell.java
class MyShell extends JFrame implements ActionListener{
MyShell{
//(中略)
String now = new File(“.”).getAbsoluteFile().getParent().toLowerCase();//カレントディレクトリJTextField text = new JTextField();//入力エリア
text.addActionListener( this );
JTextArea area = new JTextArea(now+”->”);//表示エリア
JScrollPane scrollpane =
astah*プラグイン開発スニペット
###### 現在開いている図取得
“`java
IDiagramViewManager diagramViewManager = api.getViewManager().getDiagramViewManager();
IDiagram currentDiagram = diagramViewManager.getCurrentDiagram();
“`###### 選択されている図要素取得
“`java
IDiagramViewManager diagramViewManager = api.getViewManager().getDiagramViewManager();
ListiPresentationList = Arrays.asList(diagramViewManager.getSelectedPresentations());
“`###### 文字の色を変更
例:inpはINodePresentationです。IPresentation派生なら行けるかと。“`java
inp.setProperty(Key.
Spring Framework 5.2.0 – CORSハンドリング変更によるVary header重複
5.2.0.RELEASEにてSpring Securityを使用する場合、以下のVaryレスポンスヘッダーが重複することがある。
– Origin
– Access-Control-Request-Method
– Access-Control-Request-Headers特にこんな感じで`@CrossOrigin`なControllerのテストを実行する際に重複してしまう。
“`java
@Autowired
private WebApplicationContext context;private MockMvc mockMvc;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(context)
.apply(SecurityMockMvcConfigurers.springSecurity()).build();
}
“`## 対象
Spring Framew
ユークリッドの互除法(Java)
## ユークリッドの互除法
**2数の最大公約数を求める手法**
同処理を繰り返すので、再帰関数を使うと短く書けます**考え方**
1. 余りが0なら終わり(その時の割る数が答)
2. 余りが0でなければ、「割る数→割られる数」「余り→割る数」として繰り返し“`java:Euclid
static long gcd(long x, long y) {
return x%y==0? y : gcd(y,x%y);
}
“`>
– gcd : Greatest common divisor(最大公約数)の略
– 2入力の順序は考慮不要(xの方が小さくても大丈夫)
Callable Interface in Java
What is Callable Interface in Java
For Java 5, the class “java.util.concurrent” was introduced. This callable interface was brought in via the concurrency package that looked similar to the Runnable interface. It also can return any object and is able to throw an Exception. A Java Callable interface uses Generics, thus making it possible to return any type of object. The Executor Framework gives a submit () method to execute Callable implementations in a pool of threads. In reality, the Java Exe
Eclipse MicroProfile Healthに触れ合う
# はじめに
今回は、前に[Eclipse MicroProfile](https://qiita.com/omix222/items/50804e30e43085ceb912)とはで概要を紹介したEclipse MicroProfile Healthを試してみたいと思います。# 始め方
今回も、前に[Eclipse MicroProfileの始め方](https://qiita.com/omix222/items/923d788d6ce76e179d6a)で紹介した、
[MicroProfile Starter](https://start.microprofile.io/)を使っていきます。こちらの設定でプロジェクトを作成、ダウンロードします。
ファイル構成は以下のようになって
Java (add)
Javaの勉強をしているので、備忘録としてUPします。
【add】
ArrayListに要素を追加する際に使用するメソッドである。変数名.add()の中に追加したい値を入れて使用する。
ArrayList
array = new ArrayList (); array.add(“日本語”);
array.add(“英語”);
array.add(“フランス語”);リストの中を出力すると以下のようになる。
System.out.println(array);
日本語,英語,フランス語
この後に続けて追加すると以下のように、追加されていく。
array.add(“中国語”);
array.add(“ドイツ語”);System.out.println(array);
日本語,英語,フランス語,中国語,ドイツ語
【Java】【AtCoder】【競技プログラミング】ABC 081 B Shift only
AtCoderは, 日本発の競技プログラミングサイトとして有名です.
この記事は, 私自身が問題に取り組んだ際の,(カッコ悪い)試行錯誤の記録メモです.
参考になれば幸いです.
(AtCoderについては, けんちょん様の記事一覧をぜひご参照ください.)# [ABC 081 B Shift only](https://atcoder.jp/contests/abc081/tasks/abc081_b)
Problem Statement:
There are $N$ positive integers written on a blackboard: $A_{1}, \cdots , A_{N}$.
Snuke can perform the following operation when all integers on the blackboard are even:
Replace each integer $X$ on the blackboard by $X$ divided by $2$.
Find the maximum possible number of ope
なぜnullは良くないと言われるのか
# 前提
* nullまたはそれに当たる機能を持つ静的型付け言語の知識がある
* null非許容型、null許容非安全型、null許容安全型の定義については次の記事を参照
* [null安全の観点から見たnull非許容型、null許容非安全型、null許容安全型の比較 \- Qiita](https://qiita.com/bigwheel/items/c4d60d91b3bbd7e6e130)# 問題
なぜnullは良くないと言われるのか
# 短い回答
nullそのものは悪くありません。
null許容非安全型も限定的な利用であれば便利なケースもあ
【Java】【AtCoder】【競技プログラミング】ABC 081 Placing Marbles
AtCoderは, 日本発の競技プログラミングサイトとして有名です.
この記事は, 私自身が問題に取り組んだ際の,(カッコ悪い)試行錯誤の記録メモです.
参考になれば幸いです.
(AtCoderについては, けんちょん様の記事一覧をぜひご参照ください.)# [ABC 081 Placing Marbles](https://atcoder.jp/contests/abc081/tasks/abc081_a)
Problem Statement
Snuke has a grid consisting of three squares numbered $1, 2$ and $3$.
In each square, either $0$ or $1$ is written. The number written in Square $i$
is $s_{i}$.
Snuke will place a marble on each square that says $1$. Find the number of squares on which Snuke will place a ma
Seleniumで通信内容を全部Captureする
# はじめに
Seleniumで検証する際に、対象URLのレスポンスだけでなくそこからajaxで取得しているjson(DOMにはロードされず、遷移のパラメータにのみ使用)の内容も検証する必要があったので、色々調べて試してみました。
まとめてくれているURLも結構ありますが、断片的だったり英語だったりするので、少しは役に立つかな?と思い記録することにしました。
なお、既存テストケースを流せる既存検証ツールの拡張なので– java限定
– Chromeのみ可 or FireFoxのみ可はNG、少なくともどちらでも、できればそれ以外でも可である必要がありました。
# 結論
BrowserMob ProxyのEmbedded Modeでのぞき見?することにしました。というかそれ以外のやり方が分かりませんでした。のぞき見した内容はHAR形式で取得できるので、そこから抽出して検証、の流れが問題なく実行できました。## 課題
セキュリティ例外?やらが出ます。一応検証自体はできているのでろくに見ておらずほったらかしですが、検証ツールのログチェックにひっかかるので消さないと。。。# 考
jarファイルにファイルを追加する
# 概要
できあがったjarファイルに足りないファイルがあったり、ちょっとプロパティーを変更したい場合に使う技# jarファイルの中身を見る
ファイルを更新したい場合は、jarの中のファイルの一覧を表示して、対象のファイルのパスを確認する
“`
jar tf XXXX.jar
“`# jarファイルにファイルを追加(更新)する
例えばlog4j.propretiesをjarのルートディレクトリに追加する方法は以下のようにする
“`
jar uvf XXXX.jar log4j.properties
“`# jarファイルにファイルを追加(更新)する(サブディレクトリ編)
ディレクトリのサブディレクトリなどにある場合は、手元のディレクトリを掘ってファイルを配置した後にコマンドを実行する
例えば、こんな感じ。javaのファイルを更新したい場合は手元でjavaをコンパイルしてclassファイルを生成してから更新する(.javaファイルでは駄目なはず)
“`
jar uvf XXXX.jar org/apache/log4j/FileAppender.cla