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

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

アルゴリズム Search Rotated Array

#Search Rotated Array
任意の数だけ右へ回転されたソート済み配列と、指定された数(key)が渡されて検索します。

## 説明
任意の数だけ回転されたソート済み配列で、指定された数(key)を検索します。 Keyが存在しない場合は-1を返します。 配列に重複が含まれていないと仮定します。
以下は、回転前の元の配列です。
![Screen Shot 2019-12-17 at 15.15.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/9b6a965b-f871-213e-edce-03834e801332.png)
この配列で6回、回転を実行すると、次のように変わります。
![Screen Shot 2019-12-17 at 15.18.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405022/d31c4003-7270-ee87-2111-5eb94e3cf8aa.png

元記事を表示

インポート宣言/パッケージ宣言

個人的な勉強のためにまとめました

##インポート宣言/パッケージ宣言

###パッケージの目的

パッケージの目的は3つ

①名前空間を提供し、名前の衝突を避ける
②アクセス修飾子と組み合わせてアクセス制御機能を提供する
③クラス分類を提供する

①は、もし、クラス名が重複してしまうとコンパイラやJVMは、どちらのクラスを利用すればよいか判断できないので、このような事態を防ぐために、コンパイラやJVMは、クラスを「**パッケージ名.クラス名**」の**完全修飾クラス名**で扱うから
 ※慣習としてドメイン名を逆にしたものがパッケージ名に使われる

②は、クラスを複数のパッケージに分けると、パッケージ単位でアクセス制御ができるようになる

 例)publicなSampleクラスの宣言

“`Sample.java
package jp.co.xxx;
public calss Sample{
//any code
}
“`

 例)Testクラスの宣言

“`Test.java
package jp.co.xxx;
calss Test{
//any c

元記事を表示

JavaでExcelデータの取り込み2

前回の続きで今回もApachePOIの内容です。

※前回
https://qiita.com/Mk-4000/items/908266355307bcaf6993

#セルの値の取得について
前回のセルの値の取得部分について別メソッドで記載していた部分についてです。
セルの値は単純にそのまま持ってこれるようではないようです。
前回のメソッドをそのまま抜粋。

“`SamplePOI.java
private static String getCellStringValue(Cell cell) {
String retStr;
CellType cellType = cell.getCellType();
switch (cellType) {
case STRING:
retStr = cell.getStringCellValue();
break;
case NUMERIC:
retStr = String.value

元記事を表示

java インストール編

今日はjavaの開発キットである
JDKのインストールについて書きます。

# JDKとは
Java Development Kitの略です。

javaはOracleによって提供されています。
よりビジネスに使われた方がoracle社としても都合がいいので
他の言語にとって変わられないよう
リリースから随分時がたった今でも頻繁に更新がされています。

# JDKのインストール確認

前提としてJDKのインストールがされてるか
verはどうなっているか確認します。

“`bash:ターミナル
java -version
“`

# JDKのインストール

こちらのリンクよりJDKの提供元であるOracle社のHPに行きます。

[oracle社](https://www.oracle.com/technetwork/java/javase/downloads/index.html)

そして画像中央のjavaのアイコンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

Androidアプリで端末の画像を取り込む

#はじめに
AndroidStudioのデフォルトだけで完結するアプリ作りにも飽きてきたので、OpenCVを使って画像を色々編集できるようにしてアプリの幅を広げてみる。
はじめに編集するための画像をデバイスから取り込む。

#環境
OpenCV 4.1.2
AndroidStudio 3.4.1

#画像を取り込む
[公式ドキュメント](https://developer.android.com/guide/topics/providers/document-provider?hl=ja)がこちら

まずは適当にベースとなるコードを書く。
いまだにGUIでレイアウト画面作るの慣れていないのでxmlで書いちゃう派です。

“`java:MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity ex

元記事を表示

ABC093 C – Same Integers

3つの整数が与えられ、2つの手法に則って同じ数にするには何回の操作が必要かを求める問題。
模範解答の解説は読んでも理解できなかったため、自分なりの解法で解いた。
#解法
3つの数字を配列に入れ、ソートを昇順でかける。
例)4,8,5
Arrays.sortメソッドを使うと
4,5,8の順番に入れ替わる。
array[0]

元記事を表示

【中小企業のエージェントを選ぶ理由をフリーランスエンジニアに聞いてみた】

#こんにちは!:open_hands:

株式会社アイスタンダードの本橋です。:raised_hand:

今回はフリーランスエンジニアに有益な情報を提供させていただきます。

既に株式会社アイスタンダードの「at-engineer」
https://at-engineer.jp/
を利用している方は、

他のイケてるエンジニアの投稿を見て知識を蓄えてください。:pray:

##一般の考え

初めてフリーランスになった方、フリーランス経験の浅い方は大手のエージェントを使いがちです。

もちろん、「長い物には巻かれろ」という言葉があるように、

大手のエージェントを使えば、安心します。:relaxed:

しかし、大手のエージェントは登録量が半端ないです。

そして、フリーランスエンジニアの方へ担当をつけるために

企業は多種多様な営業マン(新卒含め)を大量に採用します。

大体30-40人のフリーランスエンジニアに対してエージェント1人って感じですかね。
もっと多いかもしれないです。:frowning2:

###—こっから本題—:point_up:
##【中小企業のエージェ

元記事を表示

Androidアプリ開発で国民の祝日を表示するのに試行錯誤。後編

 どうも!ヨースケです。なかなか良いタイトルが思いつきませんw簡潔にかつ具体的でなんかいい感じ(笑)のタイトルは難しいですね。ブログとかとはちょっと違う気がしますし、僕も内容もそうですがいい感じになるように精進します!

 [前編](https://qiita.com/ysk75/items/90151559e08551ed58e8)は国民の祝日の日付について説明しました。後編ではソースコードを組むにあたっての考え方(と言っても僕はこう考えましたよ。と示すものですが…)やソースコード、そしてまぁまぁの欠点があったのでそれも含めてご紹介します。
 前編でのおさらいとして祝日の曜日と備考をもう一度載せておきます。

|祝日名|日付|備考|
|:—:|:—:|:–:|
|元日|1月1日|-|
|成人の日|1月の第2月曜日|-|
|建国記念の日|2月11日|-|
|天皇誕生日|2月23日|-|
|春分の日|3月の19~22日のうち1日|西暦年を4で割った余りで日にちを決定|
|昭和の日|4月29日|-|
|憲法記念日|5月3日|-|
|みどりの日|5月4日|-|
|こどもの日|5

元記事を表示

Dockerを利用してScalarDLを使ってみた

# Scalar DLとは
Scalar社が開発した、ブロックチェーンにヒントを得た分散元帳プラットフォームソフトウェア。

(参考)
[Scalar DLT | Scalar, Inc.](https://scalar-labs.com/product/)
[Scalar DL Docs](https://scalardl.readthedocs.io/en/latest/)

改ざん耐性と分散性を備える点ではブロックチェーンと同様だが、ScalarDLはさらに以下の特長を持っている。

* ノード数増加に伴う性能劣化が少ない、高いスケーラビリティ
* 高い可用性を備えたACID準拠のスマートコントラクト実行
* 正確なファイナリティ
* 線形化可能な一貫性

同時に、いくつかの制約事項を設けて、設計者や開発者が意図しないコントラクトの挙動を防いでいる。

* 登録したスマートコントラクトは削除できない
* 外部システムからスマートコントラクトのAssetを直接操作できない
* 自作したスマートコントラクトを継承できない

Scalar DLで実行されたスマートコントラクトの実行結果

元記事を表示

ShiftJIS死すべし

結論

shift_jis使うなMS932使え

いきさつ

csvUploadの処理を作っていて”~”が?に化けた
OracleはJA16SJISTILDEだから~使えるはず

と思って調べたらjsp側の文字コードが悪かった

<%@ page contentType="text/html;charset=Shift_JIS"%>

<%@ page contentType="text/html; charset=MS932" %>
に変更したら解決した

元記事を表示

Jacksonの基本的な使い方メモ

# Jacksonのインストール

build.gradleは以下の通りです。

“`gragle:build.gragle
// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
compile group: ‘com.fasterxml.jackson.core’, name: ‘jackson-databind’, version: ‘2.9.9.1’
“`

# 基本的な使い方

## オブジェクトに変換したいJSON

“`json:user.json
[
{
“name”: “amy”,
“age”: 10
},
{
“name”: “john”,
“age”: 25
},
{
“name”: “lisa”,
“age”: 49
}
]
“`

## JSONをマッピングするクラス

“`java:UserJson

元記事を表示

同一性/同値性

個人的なメモです

##概要

・同じインスタンスであることを**同一**、同じ値であることを**同値**という
・複数の変数が同じインスタンスを参照している性質のことを**同一性**
・同一性は**==演算子**で判定
・インスタンスは異なるけど、同じ値を持っていることを**同値性**
・参照先にあるインスタンスが同じ値を持っているか判定するには**equalsメソッド**を使う

##注意点

・equalsメソッドは、**Objectクラス**に定義されている**同値性**を確かめるためのメソッド
ただし、Objectクラスに定義されているequalsメソッドは、次のように同一性を確認する実装になっている

“`Sample.java
public boolean equals(Object obj) {
return (this==obj);
}
“`

・「同じ値を持っている」という定義は、すべてのフィールドが一致することを条件とするのか、それとも一部のフィールドでも一致すればよいと判断するのかがクラスごとに異なるため、どのような条件にするのかを定め、**equalsメ

元記事を表示

Java 8の疑似乱数

# はじめに
日本語で検索しても情報はないですね. Knuth先生なら大丈夫と思いますが,
自分が使うものは検証して使います. さらに自分自身も信じていないため, 検証しないと気がすみません.

# テストコード
4GBのバイナリファイルを作成します. 4GBでも少ないか.

テストコード

“`
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;
import java.util.SplittableRandom;
import org.apache.commons.math3.random.Well512a;
import java.security.SecureRandom;

class RandomBin
{
public static void main(String[] args)
{
try{
int size = (1024*1

元記事を表示

Java シリアライズ

# シリアライズとは
直列化。Javaオブジェクトをバイト配列として出力すること。シリアライズすることによってファイルに書き出せるようになります。

## `Serializable`インタフェース
`Serializable`インタフェースを実装したクラスはシリアライズ可能になります。

## オブジェクトをファイルに書き出す
“`java
import java.io.Serializable;

public class Person implements Serializable {

private String greeting = “hello”;

Person(String greeting) {
this.greeting = greeting;
}
}
“`

“`java
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class SerializeSampl

元記事を表示

卓球練習用 球種カウントアプリ メインロジック

![339.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258938/7c555081-bc7d-5858-03ff-13e6f87b0874.jpeg)
![340.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258938/f14b7da2-4655-56be-3c69-22d59394418e.jpeg)
![341.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258938/b097a775-9e63-57db-b0c3-e8e6c2c8a63f.jpeg)
卓球の練習時に、どの球種でのミスが多いか分析するためのアンドロイドアプリを作成した際のメインロジックです。

テーマとしては、画面遷移をしてみたいというのと
操作時間が短くて済むような作りにしたい
という2点です。
なお1クラスしか使用していない+作り自体は複雑なものではな

元記事を表示

Mockito引数null想定テストで型指定してしまいdoReturnしてくれなかった

JUnitで業務中、モックオブジェクトの一種としてMockitoというフレームワークを使っていた際、思った通りにOutputを返してくれず半日溶けたので備忘録。

↓Mockito紹介サイト。
[Mockitoの飲み方](https://orizuru.io/blog/java/mockito-primer/)

###前提
例えば以下のソースにおいてControllerクラスの`getContent`メソッドの引数にnullが入るパターンをテストしたい場合。(コードは上記のサイトから引用・改変しています。)

`getContent`はその内部でServiceクラスの`getContentById`を使用するメソッドですが、`getContent`直下のロジックだけをテストしたい際、`getContentById`内のロジックを気にしたくありません。そこでMockitoを用いて`getContentById`内のロジックによらないI/Oを指定し、クラスごとに独立なテストを行います。

“`Java:Controller.java
public clas

元記事を表示

Keycloak 拡張機能のDocker Image作成及び Gatlingによるパフォーマンステスト

# 概要

KeycloakはOSSの認証基盤システムであり、OAuth2.0、OIDCなどに対応してします。またKeycloakはOpenID Provider(OP)を提供するサービスのアカウントとの連携も可能です。たとえばGoogleアカウント、Facebookアカウントからもログインできるとのことです。

認証及びKeycloakの説明は以下の記事に詳しく書いてます。
https://www.atmarkit.co.jp/ait/articles/1708/31/news011.html

こちらの記事ではKeycloakの拡張機能開発について書きます。


KeycloakはSPIというフレームワークから構築されており、既存機能を拡張することが可能です。

拡張機能を開発際に動作確認するにはMavenによるビルド、KeycloakサーバーへのDeploy及び設定ファイル変更などが必要になります。

今回はこの一連の作業をDecker Imageを作成する際に行うことを目指します。

また、この方法ではローカルにMaven、Javaなど設定する必要がなく、Docker

元記事を表示

【Java】【Play Framework】Gradleでプロジェクトを起動するまで

数年ぶりに[Play Framework](https://www.playframework.com/)を触ろうとしたら変化があったことと、Gradleを使いたいと思ったので、Gradleを使ったプロジェクトの起動までを忘備録として残しておきます。
Play Frameworkは、JavaまたはScalaを使った開発ができるフルスタックのWebアプリケーションフレームワークです。
今回は比較的入りやすい、Javaでのプロジェクトを想定して書いています。

# この記事での目標
– Play Frameworkを使うのに必要なツールをインストールする
– Gradleを使ってPlay Frameworkの開発用サーバーを起動する

# 環境
– macOS Catalina 10.15.2
– HomeBrew

# 概要
1. [必要なツールをインストールする](#必要なツールをインストールする)
1. [Java](#java)
1. [sbt](#sbt)
1. [Gradle](#gradle)
1. [プロジェクトを作成する](#プロジェクトを作成する)
1.

元記事を表示

ArchUnitを利用して、アーキテクチャのユニットテストを行う

# 概要

**ArchUnit**なるライブラリを使用することで、Javaソースコードがアーキテクチャ違反を犯していないかを、ユニットテストで確認することが可能となります。

ArchUnitでできること、実際にどんなコードになるのか等紹介します。

# ArchUnitについて

ArchUnitは、Javaアーキテクチャに関するユニットテストの実行を支援する[ オープンソースライブラリ ](https://github.com/TNG/ArchUnit)です。
[TECHNOLOGY RADAR](https://www.thoughtworks.com/radar/tools/archunit)にも掲載された注目ライブラリです。

## ArchUnitでできること

ArchUnitを使うと、以下のようなことをユニットテストで確認することができるようになります。([※]( https://www.archunit.org/userguide/html/000_Index.html#_what_to_check ))

* パッケージ間の依存関係のチェック
* クラス間の依

元記事を表示

新しいライブラリを導入するときの考え方

この記事は[2019新卒 エンジニア Advent Calendar 2019](https://qiita.com/advent-calendar/2019/2019-graduates)の17日目の記事になりました。

# TL;DR
– ライブラリ無しで解決できないか確認しよう
– 解決できない場合、まずは導入しているライブラリの中から探そう
– 検索で出てきたライブラリを即導入するのは割と悪手かもしれない
– 導入するなら基準を持ってライブラリを選ぼう

# 前書き
自分は2018年10月1日より社員としてエンジニアをはじめました。
扱いとしてはギリギリ19卒の人間なので、このアドベントカレンダーに投稿させて頂こうと思います。

この記事では、1年強の間開発する中で得た「新しいライブラリを導入するときの考え方」についてまとめます。

なるべく一般的な内容を目指しますが、言語は`Java`/`Kotlin`(= `JVM`系)で、`Intellij`系`IDE`を用い、何かしらのフレームワーク(e.g. `SpringBoot`)を用いる前提で書きます。

また、この記事はあ

元記事を表示

OTHERカテゴリの最新記事