JAVA関連のことを調べてみた2019年11月01日

JAVA関連のことを調べてみた2019年11月01日
目次

【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();
List iPresentationList = 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/)を使っていきます。

image.png

こちらの設定でプロジェクトを作成、ダウンロードします。

ファイル構成は以下のようになって

元記事を表示

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

元記事を表示

Java グラフ処理(鉄道路線)-閉路判定/始点終点検索/路線分割/トポロジカルソート/駅間経路探索

お断り。昨日同内容を投稿しましたが、本日朝、間違って削除しましたので、再投稿します。すみません。幸い、いいねやストックはなかったようです。この文は明日削除します。

目次 ⇒ [Javaアルゴリズムライブラリ-Artery-サンプル](https://qiita.com/artery/items/6ae578a6665457db4511)

#概要

本サンプルの内容
 閉路判定(Q07_00)
 始点・終点を求める(Q07_01)
 非連結のグラフを分割する(Q07_02)
 トポロジカルソートを行う(Q07_03)
 指定駅間の経路を求める(Q07_04)
 (参考)ロジックのソース-トポロジカルソート、指定駅間の経路

これから実装しようとしている大体の内容(⇒気長に待っててね)
 経路探索で通過しない駅の指定
 経路の幅優先探索
 ArCreatorで得られる数値の最小値探索(例.駅数最小、距離最小、時間最小)
 快速問題、複々線問題
 (別サンプル)作業日程の作成
 (別サンプル)作業日程の山崩し(最大能力に合わせる、最長日程に合わせる)
 (別サンプル)作業のクリティカ

元記事を表示

null安全の観点から見たnull非許容型、null許容非安全型、null許容安全型の比較

# 前置き

## 前置き1

本記事は次の記事へ強く影響を受けております。

* [null安全でない言語は、もはやレガシー言語だ \- Qiita](https://qiita.com/koher/items/e4835bd429b88809ab33)

上で書かれているようなnull安全について少し別の角度から整理することを目的としてこの記事を書きましたが、上記の記事を理解しているならば以下の内容は蛇足かもしれません。

## 前置き2

nullに当たる概念の名称は言語によって微妙に異なりますが(例: Scala → None, Swift → nil)、以下では押し並べてnullと表記します。

# 本記事の目的

以下ではnull安全の共通理解を助けるためにnull安全と関係した3つの型について定義・説明します。

# null安全に関係した3つの型

## 1. null非許容型[^1]

以下の特徴を持ちます:

* 宣言あるいは推論された型の代入を許容する
* nullの代入を許容しない

Javaのプリミティブ型、TypeScriptのデフォルトの型などがこれに当た

元記事を表示

自習が苦手ですぐ人に頼ってしまう打開策(自分用)

(駄です)
・なるべく人に聞かない
・人に聞こうと思ったらまず調べる
・またわからなくなる
・人に聞こうと思ったらまず調べる

の繰り返し

メッセンジャーで都度誰かに聞くよりも
ギリギリまで自分で調べてこれ以上進めない限界の
ところまで来たものをまとめておいて
実際に人に会ったときにまとめて質問する方が
効率がいい気がする。

その場でメッセンジャーで聞いたほうが有益と判断した場合は
素直に聞く。

自走力のトレーニング。

元記事を表示

Javaを書くことになった人に知って欲しい便利パッケージ

## はじめに
普段Go言語でWeb開発をしているのですが、最近、JavaのSpringでWeb開発し始めて、
**「これは便利すぎる!!」**
という、パッケージがいくつかあったので、ご紹介しようと思います。

## lombok
[lombok](https://projectlombok.org/)はconstructorやGetter、Setter、Builder等のボイラープレートコードをアノテーションをつけるだけで、省略できます。
これは、結構有名なのかもしれないですが、大学の講義程度でしかJavaを触ったことがない僕にとっては、冗長コードをかなり省けることに衝撃でした。これだけで、開発効率爆上がりします。
### 例
#### 通常

“`java
class Sample {
private String name;

public Sample() {}

public Sample(String name) {
this.name = name;
}

public String getName(){
return name

元記事を表示

下記のコードの実行結果について

[Bank. java]

1:public class Bank{
2: private int money;
3: public void setMoney(int money) {
4: this.money = money; //引く数をフィールドに代入
5: }
6: public int getMoney() {
7: return money;
8: }
9:}

[UseBank.java]

1: pubulic class UseBank {
2: public static void main(Steing[] args) {
3: //クラス Bankのインスタンス化
4: Bank bank = new Bank();
5: int mny = Integer.parseInt(args[0]);
6: bank.setMoney(mny);
7: System.out.println(“振込額 : ” + mny);
8: //bank.m

元記事を表示

【Java】文字列を一文字ずつ切り出しする方法

一文字ずつ切り出す方法を簡単にまとめておきます。

##ソースコード例

“`
class Main{
public static void main(String[] args) {

//切り出しする文字列
String text = “abcde”;

char[] work = new char[text.length()];

for(int i = 0; i < text.length(); i++){ work[i] = text.charAt(i); //切り出した文字列を一文字ずつ出力 System.out.println(work[i]); } } } ``` ##出力結果 ``` a b c d e ``` この他にsubstringを使う方法などもあります。

元記事を表示

[java tool]指定パスの配下にあるファイルを拡張子により削除させるツール

以前仕事中によく使われていた共通メソッド

■作業ファイルパスの配下すべてのファイルをファイルタイプ(例: *.txt,*.class,*.*(*))より削除する例
■FindFilesAndDeleter.java
package src.main.java;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
public class FindFilesAndDeleter {
/** Log出力用. */
static Logger logger = Logger.getLogger(FindFilesAndDeleter.class);

private static final

元記事を表示

OTHERカテゴリの最新記事