JAVA関連のことを調べてみた2020年02月14日

JAVA関連のことを調べてみた2020年02月14日

COTOHA API の構文解析 を Java で利用してみる

# COTOHA API とは

NTTグループが提供している、構文解析、照応解析、キーワード抽出、音声認識、要約など、様々な自然言語処理・音声処理APIを提供しているサービスです。

> COTOHA API | NTTコミュニケーションズが開発した日本最大級の日本語辞書を活用した自然言語処理、音声認識APIプラットフォーム
https://api.ce-cotoha.com/contents/index.html

「NTTって電話の会社では?」と思われてる方もあるかもしれませんが、NTTの研究所ではコンピュータでの日本語処理も何十年も前から研究されているのです。(私も学生時代にNTTコミュニケーション科学基礎研究所に見学に行ったり論文を読んだりしてお世話になりました)

最近になってクラウドの技術が進み、従来はローカルのコンピュータで動かしていたような処理をAPIサービスとしてインターネット経由で提供できるようになってきたのです。ロジックそのものの開発はNTTのどの会社・部門が提供しているのかは公開されていないようですが、APIの提供はNTTコミュニケーションズさんでされているよ

元記事を表示

GCSにアップロードされているCSVファイルを扱う

# csvファイルを読み込む
blob.getContentでファイルの中身が取得できるが、ファイルサイズが大きい場合は困ってしまう

“`
Bucket bucket = getBucket(bucketName);
Storage.BlobListOption option = Storage.BlobListOption.prefix(directory);

Page blobs = bucket.list(option);
Iterator iterator = blobs.iterateAll().iterator();

List csvList = new ArrayList<>();
while (iterator.hasNext()) {
Blob blob = iterator.next();
byte[] content = blob.getContent(Blob.BlobSourceOption.generationMatch());
csvList.add(new String(conten

元記事を表示

OpenCV+AndroidStudioで顔認識アプリ

##やりたいこと
OpenCVを使った顔認識アプリの作成
・目標
 ・とりあえずAndroidStudioの導入、使い方を学ぶ(初心者)
 ・OpenCVをAndroid上で動かす
 ・カメラで撮影した画像、ギャラリーに保存されている画像のどちらも使用可能に

## 参考
OpenCVを使って、簡単顔認識Androidアプリを作ってみた
https://qiita.com/Kuroakira/items/094ecb236da89949d702
インテントでカメラを呼び出す方法の補足(主に、Xperia 2.1問題対応)

## 使ったもの
Android Studio 3.5.3
OpenCV 4.2.0

## 大まかな流れ
実装についてはほぼ上記の先人たちを参考にしているのでざっと書きます。

カメラ、ギャラリーボタンを押下

カメラ、ギャラリーから画像を取得

取得した画像をbitmap→Mat形式に変換

OpenCVへMat形式の画像を渡す

顔認識情報を取

元記事を表示

java バブルソート

#ソート
今回からソートについて投稿していこうと思います。
※自分のアウトプット用の記事です。間違いなどがあったら指摘してください。
#バブルソート
“`BubbleSort.java
public class BubbleSort {
public static void sort(int[] array) {
for(int i=0;iarray[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
public static void main(String args[]) {
int[] array = {5,4,3,2,1};
sort(array);
for(int i=0;i

元記事を表示

mutable(可変な)オブジェクトとimmutable(不変な)オブジェクト

Java Silver SE11の学習をしていて、「Stringオブジェクトは不変なオブジェクトである」の意味がよくわからなかったので、覚書ついでに。

# mutableとimmutableの違い
そもそもmutable(可変)とimmutable(不変)の違いとはなんぞやから。
簡単に言うと、一度セットした値を**後から変更できるオブジェクト**がmutableオブジェクト。
一度セットした値を**後から変更できないオブジェクト**がimmutableオブジェクト。そのままですね。

immutableオブジェクトの定義方法は下記らしいです。

– すべてのフィールドをprivateで修飾する
– オブジェクト内部の状態を変更可能なメソッド(setterなど)を提供しない
– クラスをfinalで宣言し、メソッドがオーバーライドされないことを保証する(サブクラスから変更させない)
– 内部に可変オブジェクトを保持している場合、そのオブジェクトを外部に提供(getterなど)しない

次項より、immutableなクラス:Hogeを作成することでそれぞれの詳細を確認します。
(その他

元記事を表示

Java 14新機能まとめ

Java 14もRCフェーズに入りました。
うまくいけば2020/3/17にリリースされます。
https://jdk.java.net/14/

# JEP
大きめの変更はJEPでまとまっています。
https://openjdk.java.net/projects/jdk/14/

今回は、16ものJEPが取り込まれました。影響が大きいものも多いです。
305: [Pattern Matching for instanceof (Preview)](https://openjdk.java.net/jeps/305)
343: [Packaging Tool (Incubator)](https://openjdk.java.net/jeps/343)
345: [NUMA-Aware Memory Allocation for G1](https://openjdk.java.net/jeps/345)
349: [JFR Event Streaming](https://openjdk.java.net/jeps/349)
352: [Non-Volatile Mapped B

元記事を表示

Java Integerの比較(==)が正しく動作しない

# 現象

“`java
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 「2 10000000 10000000」が入ってくる
int n = sc.nextInt();
List list = new ArrayList<>();
for (int i = 0; i < n; i++) list.add(sc.nextInt()); for (int i = 0; i < n-1; i++) { if (list.get(i) == list.get(i+1)) { System.out.println("等しい"); return; } }

元記事を表示

配列 vs ArrayList vs HashMapの拡張for文レース

# つかったもの
・Java9
・eclipce

# 動機
何が最適かは置いといて拡張for文で回したらどれが一番早いのかなと。

# 結果
“`ruby:ForEaerVs.java
public class ForEaerVs {
public static void main(String[] argS) {

Integer mm;

// 配列
Integer[] arry = new Integer[1000000000];

for (Integer i = 0 ; i >= 1000000000; i++) {
Integer arryInt = i;
arry[i] = arryInt;
}
long staetTimeArry = System.nanoTime();
for(Integer iA : arry) {
mm = iA;
}
long endTimeArry = System.nanoTime();
System.out.println(“配列速度:” + (endTimeArr

元記事を表示

【WireMock】Javaでスタブ・モックサーバを立ててE2Eテストを行いたい

# 連携先システムが検証系では使えないけどE2Eテストがしたい
世はマイクロサービス時代なので、HTTPリクエスト・レスポンスのモック・スタブの需要が高まっているみたいですね。
私の参加しているプロジェクトはマイクロサービスなんて関係ないのですが、
表題のとおりの目的で、Javaで動くAPIサーバを探していたところ教えていただきました。

# WireMock
HTTPベースのAPIのシミュレータ、mockサーバー。
http://wiremock.org/
https://github.com/tomakehurst/wiremock

ほかのAPIServerとの比較は下記サイトで確認できます
[Comparison of API simulation tools](https://en.wikipedia.org/wiki/Comparison_of_API_simulation_tools)

## ThoughtWorksのTECHNOLOGY RADARに2018年にTRIALで選ばれてました
https://www.thoughtworks.com/radar/tools

元記事を表示

「=」を使わずにFizzBuzzを書く

#「=」を使わずにFizzBuzzを書きたい
特に意味はない
20までのFizzBuzzを「=」を使わずにいろんな言語で書いてみよう

#C言語

“`c:c_fizzbuzz.c
#include

int main(void) {
int n;
n++;
while (1) {
if (n%3 && n%5) {
printf(“%d”, n);
}
else{
if (!(n%3)) {
printf(“Fizz”);
}
if (!(n%5)) {
printf(“Buzz”);
}
}
printf(“\n”);
n++;
if (n>20) {
break;
}
}
return 0;
}
“`

初期化しないと0が入るのを利用(ただしコンパイラによる)
0がFalse、それ以外がTrueになる性質を使って条件分岐する

#Python
“`python:pyth

元記事を表示

Apache-Tomcat連携サーバで、Chrome 80のSameSite挙動が変わっても、セッションが切れないように設定する。

リンク型決済サイトについて、
2/17以降にChrome決済サイトから決済完了後の画面にPOSTで遷移するとセッションが切れる事が判明したので、
対応方法をメモ。

#発生する現象
Cookieに「SameSite」という属性がありますが、これは現行ではデフォルトが「None」で動作しています。
この状態では、別ドメインのサイトから遷移する場合でもCookieを送信してくれるので、サーバ側でセッションタイムアウトでもしていなければ、遷移前のセッションが保持されます。
その属性が、2/17日以降、Chrome 80ではデフォルトで「Lax」になり、これは「GETの場合は送信しても良いが、POST等、特定の条件ではダメ」という挙動になるようです。
その結果、リンク型決済サイトで別ドメインのページから決済完了画面にPOSTで遷移されると、
Cookieの中のJSESSIONIDが、決済サイトへの遷移する前とは異なる値になってしまい、「別セッション」として扱われます。

#事前の検証方法
1:Chromeで以下の設定ページを開きます。
chrome://flags/
2:設定の中から、「S

元記事を表示

hibernateの複合キー

“`java
@Entuty
@Table(name=”sample”)
public class SampleRecord {

@Column(name = “id”)
private long id;

@Column(name = “name”)
private String name;

// 省略
}
“`

“`
Exception in thread “main” org.hibernate.AnnotationException: No identifier specified for entity: com.sample.jpa.SampleRecord
“`

`@Entity`を使う場合は`@Id`を指定しないといけないっぽい

“`java
@Embeddable
@Table(name=”sample”)
public class SampleRecord {

@Column(name = “id”)
private long id;

@Column(name = “name”)

元記事を表示

Java 基礎知識 1

#はじめに
現在、私はRubyを中心に学んでおります。
学習を進める中、他言語にも興味が沸いた為、Javaに関して用語等を整理していたいと思いました。
もうすでにご存知の方、省略の仕方等ご存知でしたら、ご教授願います。

#Javaとは

– プログラミング言語の1つであり、世界的に人気の高い言語であること

###人気の理由は?

– 多くの現場で使われていること
– 汎用的でOSに依存しないこと(超重要)

#Javaで何ができるのか?
– 上述の通り、OSに依存をしないことからどんな環境でもソフトを動かすことができる。
– [こんなものが作れるようです。すごい!有名なのが多いです!](https://eng-entrance.com/java_product_summary)
– それだけ信頼されているのかと思いました。

#Javaのメリットは?

– 処理速度が速いこと
– 起動にコンパイルを必要とするコンパイラ言語であること
– Ruby等のスクリプト言語よりも処理速度が速いのが特徴のようです。

– プラットフォームに依存しないこと
– 上述の通り、OSに

元記事を表示

IntelliJでJavaをKotlinへ変換する 〜その1〜

# はじめに

[過去の記事](https://qiita.com/kaad/items/efa6833df1e3f1eb1f18)で作ったものをkotlinへ変換してみました。(まだ途中)
この記事では、java(spirng-boot)からkotlinへ変換するステップやちょっとしたテクニックを紹介します。

## なぜkotlin?

ぼくはjavaが結構好きですし、kotlinに精通しているわけではないです。
そして、javaは不滅だと思っています。

不滅と言うと言い過ぎですが、今javaで作られているアプリケーションは多く、javaのスキルを求められるケースも多いです。
そのため、javaエンジニアも多く、今後も使われ続ける言語だと思っています。

しかし、より生産性、安全性を高めるために「ラムダ式や関数型プログラミングの機能」や「non null/nullable」を搭載し、よりシンプルにかけるkotlinを学んでみようと思いました。

## Source

こちらにコミットしています。
比較の際には、kotlinへ変換したリポジトリの履歴を見てもいいですし、kotlin

元記事を表示

ColdFusionにCA証明書をインストールする

ColdFusionで接続先のWebサーバーやメールサーバー、LDAPサーバー(OpenLDAP、Active Directoryなど)が利用している証明書がプライベートCAから発行された証明書や自己証明書だと通信できないので、それを解決する方法です。

※この記事はColdFusion 2018をデフォルトの設定でインストールしている場合を前提としています。ColdFusion 2016でもパスを読み替えれば使えると思います。

# ぱぱっと知りたい

ColdFusionはJVMで動作しているので、keytoolコマンドを利用してcacertsキーストアに証明書をインポートするJavaの方法がそのまま使えます。付属のJavaランタイム(JRE)にもkeytoolが同梱されています。

– JREは `C:\ColdFusion2018\jre` にあります。
– cacertsキーストアのパスワードは `changeit` がデフォルトです。

基本これだけ分かればあとはググればいろいろと出てきますが、私が良く利用しているWindows環境での方法をまとめてみました。

# 手順

元記事を表示

[Java] TreeMap successor method and entrySet complexity

## Succcessor Method

As we know `TreeMap` is implemented by Binary Search Tree. So I am very curious about the `entrySet` or `subMap` method implementation and complexity.

It turns out java do it very straight forward. For entrySet, it start from the first node and by finding successor to move to next node.

It has a successor method to find next node by the following steps.

– if current node is null, then no next, return null
– if current node has right child
– find the most left one of

元記事を表示

で、結局APIのパスパラメータ、クエリパラメータ、リクエストボディってどう違ってどう設計するが正しいの?

## 事の発端
基本フロントのお仕事をしているのですが、RESTfulAPIの設計をしてね、と言われてRESTfulAPIについて色々調べることがありました。
パスパラメータ、クエリパラメータ、リクエストボディの使い分けについてヘ〜〜〜と思ったので、その結果を備忘として残したいと思います。
(かなり基礎的な情報なので、初心者向けです。)

### この記事で書くこと
– パスパラメータ、クエリパラメータ、リクエストボディってHTTPリクエストで言うどれのこと?
– パスパラメータ、クエリパラメータ、リクエストボディにはどういう情報を持たせればいいの?

### この記事で書かないこと(この記事を読む上での前提知識)
– HTTPリクエストとは何か?
 これを読めば大体OKです。→
[「HTTPリクエスト」と「HTTPレスポンス」 / ITSakuraさん](https://itsakura.com/network-http-get-post)
– RESTful APIとは何か?
   これを読めば大体OKです。→
[RESTful APIとは何なのか /
@Na

元記事を表示

今月はJava強化月間と決めました

 こんにちは、ヨースケです。[以前](https://qiita.com/ysk75/items/278c52bf4052991eb99d)投稿した記事でコメントしてくださった方ありがとうございます。大変勉強になりました!
## アプリ開発する上での危機感
 その記事でコメントにあったソースコードを見て「このままじゃダメだな」と感じ、もう一度勉強しなおそう!と思いました。こんな書き方があったんだ!という衝撃と自分の勉強不足さがあらわになって今月2月はJavaを隅から隅まで勉強し直そうと決めました。
 次に作る予定があるアプリもありますが、いったんはお休みしてJavaを強化したいと思います。
 まぁ、うつ病のせいで毎日がっつりはできないんですが少しずつでも進めていきます!

元記事を表示

2020年オープンソースWebクローラー10選

[Webクローラー](https://www.octoparse.jp/blog/what-is-web-crawler/)とはインターネット上に公開されているテキスト・画像・動画などの情報を自動で収集し、データベースに保管するプログラムのことです。さまざまなウWebクローラーがビッグデータのブームで重要な役割を果たし、人々がデータを簡単にスクレイピングできるようにしています。

さまざまなWebクローラーの中には、オープンソースのWebクローラーフレームワークがたくさんあります。オープンソースのWebクローラーを使用すると、ユーザーはソースコードまたはフレームワークに基づいてプログラミングでき、スクレイピング支援のリソースも提供され、データ抽出が簡単になります。この記事では、おすすめのオープンソースWebクローラーを10選紹介します。

#1. Scrapy

**言語: Python**

Scrapyは、Pythonで最も人気のあるオープンソースのWebクローラーフレームワークでです。Webサイトからデータを効率的に抽出し、必要に応じて処理し、好みの形式(JSON、XML、C

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事