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

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

【JavaServlet】千里の道も一歩から 二歩目

#jspファイル作りましょう
まずはひな形から

“`html:login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




ログイン画面



“`
1行目の<%@ ~ %>はjspファイルを記述するときのお約束で、それ以外は基本的にHTMLのように扱える
ではbody内を実装していくよ

“`html:login.jsp

name:
password:
Integerメモ

今回はIntegerクラスのメソッドの使い方について学んでいきます。
随時更新予定です。

#compare(int x, int y)
2つのint値を数値的に比較します。
x == yの場合は値0、
x < yの場合は0より小さい値、 x> yの場合は0より大きい値

“`java
System.out.println(Integer.compare(1, 2));
System.out.println(Integer.compare(2, 2));
System.out.println(Integer.compare(5, 2));
“`
“`java
-1
0
1
“`

#compareTo(Integer anotherInteger)
2つのIntegerオブジェクトを数値的に比較します。

このIntegerが引数Integerと等しい場合は値0。
このIntegerが引数Integerより小さい数値の場合は0より小さい値。
このIntegerが引数Integerより大きい数値の場合は0より大きい値。

“`java
Integer number = new

元記事を表示

jarコマンド入門

# 第5章 成果物をアーカイブする

JARファイルのオプションについて理解するための事前知識として、
まずはJARファイルの仕様について説明します。

## JARファイルの構成

JARファイルには、以下の要素を含めることができます。
それぞれの要素について、「sample-root.jar」というJARファイルがあると仮定し、説明します。
スクリーンショット 2020-05-27 15.11.58.png

それぞれの概要について、以下に説明します。

### INDEX.LIST
jarコマンドの-iオプションで生成されるファイル。
このファイルが格納されているJARファイルと、それが依存している他のJARファイル内に
格納されているパッケージの位置情報をインデックス化することで、
クラスローダの処理高速化

元記事を表示

javaコマンド入門

# 第4章 コードを実行する

## Javaアプリケーションの種類

javaコマンドによるアプリケーションの実行について説明する前に、
Javaのアプリケーションにはどういったものがあるのかを見ていきます。

以下、Javaアプリケーションの大まかな分類です。
説明もざっくりしているので、気になった方はご自身で調べてください。

– コンソールアプリ
PromptやTerminalなど、コンソールから対話方式で利用するアプリ。
– デスクトップアプリ
1端末内で完結しているアプリ。GUIと言われることもある。
– Webアプリ
Webサーバとクライアント間の通信により処理を行うアプリ。
– Androidアプリ
Android向けのデスクトップアプリ。(ものの例えです)
– 組み込み系プログラム
家電など、ハードウェアに直接組み込まれたプログラム。

javaコマンドでは主に、コンソールアプリやデスクトップアプリの実行を行います。

## javaコマンドの概要

javaコマンドを実行すると、Javaアプリケーションが起動します。
javaツールはまずJREを

元記事を表示

javacコマンド入門

# 第3章 ソースコードをコンパイルする

## Javaにおけるコンパイルとは
コンパイルとは、平たく言えば人間にわかるように書かれたソースコードを
機械が理解できる機械語に翻訳する作業です。

Javaのコンパイルの仕組みは独特で、javacコマンドはソースコードを
Javaバイトコード(中間コード)というものにコンパイルします。

なぜ、機械語に変換しないのかというと、
Javaの基本理念「Write once, run anywhere.」の実現のためです。
ソースコードを直接機械語に変換してしまうと、コンパイルされた機械語は
コンパイルを実行した環境に「依存」するようになりますが、
JVMにはJavaバイトコードを機械語に変換する機能が実装されているため、
JVMさえ導入すればどのような環境であってもJavaを実行できるようになります。
つまり、「ソースコードを一度書いてしまえば、環境が異なっても実行できる」のです。

## javacコマンドの概要

javacを実行した際のコンパイルは、以下のような動きで行われます。

1. 指定したクラスを解析し、依存関係のある型を検索

元記事を表示

【弊社新人に向けて】開いたら必ず閉じよう

# 何が言いたいの?
**開いたら必ず閉じよう**ということです。
ファイルが開きっぱなしになっていると、場合によってはファイルの読み書きが行えなくなります。
それでは困りますね。

# 例えば?
`FileReader`クラスや`FileWriter`クラスを用いて、テキストファイルを読み書きする場合などです。
昔は`BufferdReader`クラスなんかを使っていましたが、今どきは`Scanner`クラスなるものが使われているようですね。

実際にテキストファイルの内容を読み込み、内容をコンソールに出力するプログラムを以下に示します。

“`java:サンプルプログラム
import java.io.File;
import java.util.Scanner;

public class FileOpenTest {
public static void main(String[] args) {
try {
// テキストファイルを開く
Scanner scanner = new Scanner(new File(“F1歴代チャンピオン一覧.csv”));

元記事を表示

Spring Bootでテストがコマンドラインから実行できない問題を解決

## 動作環境
java 1.8
Spring Boot 2.2.4
JUnit4

## プロジェクト構造
+ 初学者のため構造が雑なのはご容赦下さい

“`shell
src
│   ├── main
│ │ └── 省略
│ │
│   └── test
│   └── java
│   └── com
│   └── testTool
│   ├── TestToolApplicationTests.java
│   └── web
│   ├── controller
│   │   └── TestToolControllerTest.java
│   └── service
│   └── TestToolServiceTest.java

“`

## 問題点
+ `$ m

元記事を表示

formatter-maven-pluginを使用したenumのフォーマット方法(Java)

#概要
[formatter-maven-plugin](https://github.com/revelc/formatter-maven-plugin) を使用してenumのコードの自動フォーマットを行います。

#実現したいフォーマット
###実行前

“`
public enum Answer {

YES(1),NO(2),MAYBE(3);
}
“`

###実行後

“`
public enum Answer {

YES(1),
NO(2),
MAYBE(3);
}
“`

#設定箇所
設定ファイル(xml)の `alignment_for_enum_constants` の値を `49` にすることで上記フォーマットをかけることができました。

“`

“`

元記事を表示

WSlで,Vue.jsによるアンドロイドアプリ開発環境を構築しようとしたときにハマった

備忘録

[【Vue.js】WSL 上で Vue.js を用いた Android アプリを開発する](https://github.com/NativeScript/nativescript-cli/issues/5304)
こちらを用いて,よっしゃ開発環境作るどーーと意気込んでいたら…

“`bash

sudo $ANDROID_HOME/tools/bin/sdkmanager “tools” “emulator” “platform-tools” “platforms;android-28” “build-tools;28.0.3” “extras;android;m2repository” “extras;google;m2repository”

Error: Could not find or load main class com.android.sdklib.tool.sdkmanager.SdkManagerCli
“`

とのエラーが出た.調べていると,JDKが8よりも新しいものを使うとうまくいかないとのこと.この段階で最新版のjava14を入れていた

元記事を表示

JavaScriptのロゴを調べた話(そしてわからなかった話)

## 謎ロゴとの出会い

先日、YouTubeでプログラミング関係の動画を見ていたらJavaScriptの話題とともにこんな画像が出てきました。

これを見て僕は「あちゃー、JavaとJavaScriptを混同しちゃってるのね:sweat_smile: 初心者よくある、どんまい:hand_splayed:」と思い、コメント欄に「JavaとJavaScriptは別物ですよ?」と書き込み、送信ボタンを押そうとしたその瞬間、突然嫌な予感がしてその手を止めました。

(いや、動画内で一瞬表示させるためにJavaのアイコンとテキストを組み合わせてロゴを作ったとは思えないし、このロゴは本当に存在しているのでは…?)

ググってみたら案の定、素材として配布されているロゴでした。

スクリーンショット</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Java</div>
<div class='tag-cloud-link'>JavaScript</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/studio15/items/12b607fe919d02e49ddc'>元記事を表示</a></div>
<h3 id=GradleのArtifactとはなんぞや

毎回忘れるのでメモ。

## Artifactとはなんぞや

該当プロジェクトが、一意に参照できるようにするためのもの。
プロジェクトの名前やライブラリの名前になることが多いと思う。

javaのライブラリ管理はドメイン名と Artifact で行われており、それぞれをつなげたのものファイル名にする。
そのため、_example.com_ というドメインを所持している会社の _foo-library_ というライブラリを配布する場合、

“`shell
com/
└── example
└── foo-library
“`

といった形になる。
また、Gradleの設定ファイルである`build.gradle`には、ドメイン部分の

“`
group = ‘com.example’
“`

が記載される。

## じゃあNameってなんなん

Gradleでは、複数のプロジェクトを1つのプロジェクトファイルにまとめることができる。
その際に使用するalias。
なので、単一プロジェクトではArtifactと同じで良いと思う。

## 参考

### Artifactに

元記事を表示

カウンターアプリ1号

とりあえず、自分の中でまとまった内容から追記していきます。
#Javaファイル

“`Java:MainActivity.java
package com.example.counterapp1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity
implements View.OnClickListener{
int number;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreat

元記事を表示

Javaで直和型を使ってプログラミングする(ネタ)

(Javaよくわかっていないですが)デフォルトで直和型をサポートしていて良いと思いました。直和型を使う勉強を兼ねて、「逆ポーランド記法の式(`1 2 +` = `3` みたいな)を計算するインタープリター」を作ってみました。

## 今回書いたコード

“`java
package neta;

import java.util.Stack;

public class Main {
// 数値型をあらわす型
static class IntType extends Exception {
int v;
IntType(int v) {
this.v = v;
}

@Override
public String toString() {
return Integer.toString(v);
}
}

// プラス演算をあらわす型
static class PlusOperation extends

元記事を表示

null かもしれない配列をストリームに変換する

毎回ちょっと悩むので備忘録として書いておく

# まとめ

orElse で空のストリームを返す、というアイデアだけ覚えておけばOK

“`java:まとめ
Optional.ofNullable(arr)
.map(Arrays::stream).orElse(Stream.empty())
.forEach(System.out::println);
“`

# 詳細

### やりたいこと

null の可能性がある配列に対してストリーム処理をしたい。

### 問題

拡張 for 文や `Arrays#stream`、`Stream#of` は null セーフではない。
でも毎回 null チェックするのは面倒。

“`java:for文を使う場合
String[] arr = null;

for (String s : arr) { // ここで NullPointerException
System.out.println(s);
}
“`

“`java:Arraysを使う場合
String[] arr = null;

Arrays.str

元記事を表示

SPAの文字揃えゲーム作成

# 背景
過去記事:[JavaとJavaScriptでwebブラウザとのソケット通信①
](https://qiita.com/take4eng/items/d0b009c48ee8c3fe420a)
過去に非同期通信を用いてチャットアプリを作成した。
⇒改造してチャットとは異なるアプリケーションを作成。

twitterで見かけた『~揃えゲーム』を作成。
個人制作の備忘録。
![無題.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634805/1aac4371-8142-8e01-0e3c-9c4e855142df.jpeg)

## 目的
– ソケット通信で送受信されているデータを取得して編集する
– JavaScriptを用いて受信データの表示方法を学ぶ

# 実践内容
1. クライアントから送信されたデータをサーバーサイドプログラムによって編集
2. 編集したデータをクライアントへ送信
3. サーバーから送信されたデータ(文字列)を1文字ずつ順番に表示

# 成果物
1. なんでも揃えゲーム

元記事を表示

2変数、4分岐の if 文について

### 変数 min_value, max_value が存在するとき、それぞれの条件で処理を変えたい

例えば…

|min_value|max_value |処理 |
|:——- |:——– |:——-|
|null |null |なにもしない |
|null |not null |上限より小さいことを検証 |
|not null |null |下限より大きいことを検証 |
|not null |not null |範囲内にあることを検証 |

普通はこんな感じ

“`java:Main.java

class Main {

public static void main(String[] args) {

}

private static String hoge(int value, Integer min_value, Integer max_value) {
if (min_value == null && max_value ==

元記事を表示

AtCoder【ABC086A】技術メモ

#はじめに
第2弾、AtCoderのことをメモしていく

#AtCoderの問題
シカのAtCoDeerくんは二つの正整数 a,bを見つけました。
aと bの積が偶数か奇数か判定してください。

#解説
これまた入力された数字を元に計算を行えばいいので
nextInt()の出番かな。

入力できるように準備して

“`
Scanner scanner = new Scanner(System.in);

int a = scanner.nextInt();
int b = scanner.nextInt();

if((a * b) % 2 == 1) {

System.out.println(“Odd”);

} else {

System.out.println(“Even”);

}
“`

今回の問題は前回使ったScannerとnextInt()を使えたので瞬殺でした。

では、また次回。

元記事を表示

JavaのHttpClientにおける3つのTimeoutの違いに関して

ApacheのHttpClientを使う際に、以下の3つのタイムアウト値(ミリ秒)を設定できるものの、違いをよくわかっていなかったので自分なりにまとめてみた。

“`
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;

RequestConfig config = RequestConfig.custom()
.setConnectTimeout(30000)
.setConnectionRequestTimeout(30000)
.setSocketTimeout(30000)
.build();

HttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(config)
.build();
“`

#ConnetionTimeout
サーバーへの接続要求を送信して、接続が確立されたとレスポンスを受け取

元記事を表示

Image Searchのフィルタを検証してみる

V2から追加された IntAttr、StrAttrの挙動について調べました。

# フィルタを使った絞り込み
フィルタを使い場合は、setFilterにフィルタ条件を設定します。

“`
request.setFilter(“int_attr=10000 AND str_attr=\”あああ\””);
“`

全体のソースは、【検索編】を参照してください。

# IntAttr の検証
int_attr フィールドは、>、>=、<、<=、= の演算子をサポートしています。 ``` request.setFilter("int_attr=10000"); ``` IntAttrの値が10,000の情報がヒットします。 ``` request.setFilter("int_attr<10000"); ``` IntAttrの値が10,000未満の情報がヒットします。 ``` request.setFilter("int_attr>10000″);
“`

IntAttrの値が10,000より大きい情報と、**設定されていない(NULL)**のデータがヒットします。
設定されて

元記事を表示

Java SDKを使ってImage Searchの類似検索を試す【登録編】

# はじめに
前回は、Image Searchのインポート機能を使って画像を登録しました。インポート機能では、V1の時のパラメータしか登録できずV2で新たに追加されたパラメータを登録する事は~~できません~~でした。**できました。すみません。**

ということで、Image Searchにデータを投入するにはAPIを使って登録する方が良いと思います。データを登録する際はいくつか気を付ける点があるので、そのあたりを記述していきたいと思います。

# データの登録方法
今回は、Java SDKを使って登録を行います。環境構築等は【検索編】を参照してください。

“` SimpleAdd.java
package imagesearch.sample;

import java.io.InputStream;
import java.util.Base64;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.imagesearch.model.v201903

元記事を表示

OTHERカテゴリの最新記事