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

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

AWSでJavaMailを使用してメール送信する(前半

#AWSでJavaメールを使用してみる(前半

今回は、前回の記事で立ち上げたAWSのEC2を使用してJavaメールをgoogleのSMTP経由で送信してみる
最初に謝っておくが、EC2から送信まで行けなかったのでローカル環境からの送信までになる

*前回までの記事は下記を参照ください。
https://qiita.com/ktkt11122334/items/36f950670e5952d7d17e

##EC2でJavaを動かす
EC2にJavaが入ってるか確認する
前回立ち上げたEC2にssh
ssh -i [pemファイル] ec2-user@ec2-54-65-248-190.ap-northeast-1.compute.amazonaws.com

Javaが入っていないことを確認
java -version
-bash: java: コマンドが見つかりません
javac -version
-bash: javac: コマンドが見つかりません
yum list installed | grep java
**なにも表示されない

openJDKをyumで落としてくる
s

元記事を表示

NLP4J [005-2] NLP4J+Twitter4J(分析1)

[Indexに戻る](https://qiita.com/oyahiroki/items/ba79a759c599d3459d29) : [[005-1] NLP4J+Twitter4J(データ収集)](https://qiita.com/oyahiroki/items/32bd2573138883b46aa4) > this > 次のページ

#結果を眺めてみる

出力結果全文は[こちら](https://github.nlp4j.org/nlp4j/output/output-20191029-001318.txt)に配置しております。

さて、結果を見ていきましょう…。

#処理時間

“`
処理時間[ms]:34586
“`

34秒かかっています。結構遅いです。
合計90件の文書ですが、1文書につき2回YahooのAPIをコールしていて合計180回なのでこんなものだと思います。Yahooの自然言語処理APIはお手軽に使えるものの、回数制限とパフォーマンスを考慮するとローカルでガンガン叩けるライブラリを使うことも検討が必要だと思います。

NLP4Jでは他の自然言語処理

元記事を表示

Javaのインストールは気軽にできるものじゃない!1回で完璧に終わらせるための注意点まとめ

#「Java インストール」で検索してちゃちゃっとやれるでしょ?⇒ドハマりしました#
Javaを勉強したいなーと思ったらまず誰もが最初にやるのがJavaのインストール。
しかし、「なんとなくググればできるだろう」という心構えで臨んだ私は「ちゃんとした順序でインストールしたはずなのになぜかJavaファイルが動かせない」問題でめちゃめちゃ悩みました。具体的に言えばコマンドプロンプトで「**javacは、内部コマンドまたは外部コマンド、(略)として認識されていません。**」と言われ続けました。
Javaのインストールをする前に**2点絶対に頭に入れておかなければいけないこと**を解説します。

#注意点その1:ググってトップに出てくるのは「JRE」だけど、インストールしなきゃいけないのは「JDK」#
「Java インストール」と検索するとトップに出てくるのが
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513594/2eab4c5b-483e-0cf1-6069-47dd851670eb.p

元記事を表示

JavaのStreamで並列化できるのは最上位のStreamだけ。

結論からいうと、Streamで並列化できるのは、最上位のStreamだけ。flatMapなどで,入れ子のStreamの処理については並行が効かない。(Javaのコードも読んだが,flatMapのStreamは内部コードでSequentialに変更されていることを確認した。)

基本的にはできるだけ上位の処理を並列化するのが,一般的には効率がよく並列化できるため,この実装は納得できるものではあるが,必ずしも万能なわけではない。

例えば,木構造を辿って処理するようなコードを書いていたりする場合に,木構造の偏りによって並列化が期待したほど効かないということがある。そもそも木構造を処理するのは別の方法のほうがよいかもしれないが。

確認のためのコードは以下。タスクを二重配列で持っていて,これをStreamで処理することを考える。

“`
package parallel;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ForkJ

元記事を表示

Glide4系のDiskCacheについて

ギガを食うのを改善したいとの要望がありGlideのDiskCacheを調査したときのログ

## TL;DL
– /data/data/app_dir/image_manager_disk_cacheに保存される
– キャッシュアルゴリズムはLRU(Least Recently Used)
– キャッシュ容量はデフォルトで250MB(250*1024*1024)

## キャッシュの保存場所や容量について

#### デフォルトはinternalなimage_manager_disc_cacheディレクトリに容量250MBまで保存可
#### これらはGlideModuleを定義すれば変更可

“`example.java
@GlideModule
public class YourAppGlideModule extends AppGlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
builder.setDiskCache(new Exte

元記事を表示

Chrome + KatalonRecorder + vscode + Katalium でUIテストの自動化を体験してみた

# なんでやってみたのか
業務で、同一ファイルの複数回ダウンロードを検証する必要が発生した。
簡単な準備で検証できないかと考え、UIテスト自動化ツールが使えないかと考えた。
KatalonRecorderを以前に聞いたことがあったので、試してみた。

# サマリ
KatalonRecorderとVSCodeのExtensionを組み合わせることで、複数回のファイルダウンロードのテストは実現できた。
※Extensionのサンプルプロジェクトと、その中のWebDriver(Chrome)を利用。

– KatalonRecorderで1回ダウンロードをRecorde
– KatalonRecorderでRecordeしたシナリオをJavaでExport
– VSCodeの公式Extensionを利用し、ExportしたJavaをサンプルプロジェクトに取り込み
– ファイルダウンロードを待つためにSleepを追加
– 繰り返し処理を追加

# 動作確認環境
– macOS Catalina 10.15
– java 1.8.0_202
– nginx 1.13.10
– chrome (2

元記事を表示

Java 1 1 support from Google App Engine

Google’s App Engine cloud has added official support for Java 11, the latest long-term support (LTS) version of the Java language platform, as a production release.
The App Engine Standard Environment Java 11 runtime is generally available for running any Java 11 application, web framework, or service in a managed serverless environment. Java 11 had been offered on App Engine in a beta release since June.
The Java 11 runtime on App Engine offers twice the amount of memory as the earlier Java 8 r

元記事を表示

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で全件表示する方法

“`java

//Listの宣言
List fruits =new ArrayList<>();

fruits.add(“リンゴ”);
fruits.add(“スイカ”);
fruits.add(“ナシ”);
fruits.add(“バナナ”);

//Iteratorの宣言
    Iterator it2= 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();
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

元記事を表示

OTHERカテゴリの最新記事