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

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

[Android] Jetpack LiveData (Jetpack ViewModel MVVM+Repositoryパターン)

Android Studio 4.1.3(windows版) での流れとなります

ここではMutableLiveDataをRepositoryで持ち単純なデータのModelを扱うだけの
シンプルな構成で一連の流れを説明します

以下の記事のプロジェクトベースでの説明となります

https://qiita.com/smurata_pvt/items/a8454cc635ba693df6b8

Android DeveloperのJetpack LiveData/MVVM+Repositoryパターンの説明は以下です

https://developer.android.com/jetpack/guide?hl=ja

## Layoutの準備
ここではViewBindingを使用して実装します
ViewBindingの設定方法を知りたい方は以下を参照してください

https://qiita.com/smurata_pvt/items/99cd5f878b4eedb84dc8

MainFragmentのテンプレートにあるTextViewはidが指定されていないため
ここではtext

元記事を表示

美大生のためのプログラミング入門:繰り返し(ループ)

※ Qiita では、本文部分のみの印刷に苦労します。そのため、同じ内容を以下のページにも掲載しています。プリンツアウトしたり PDF 化したい人は、こちらのページを利用して下しさい:

http://gurakura.sakura.ne.jp/hellomondrian/loop/

一覧はこちら:
http://gurakura.sakura.ne.jp/series/美大生のためのプログラミング入門/

Qiita 版の総合目次:
https://qiita.com/iigura/items/37180d127da93d0b8abb

# はじめに
![Composition with Grid IX](https://uploads5.wikiart.org/images/piet-mondrian/composition-with-grid-ix-1919.jpg!Large.jpg)
Composition with Grid IX by Piet Mondrian, 1919.
[https://www.wikiart.org/en/piet-mondrian/compo

元記事を表示

JavaでAtCoder青色になりました

遭難者です。[ARC115](https://atcoder.jp/contests/arc115)でに青色になったので記事を書くことにしました。![スクリーンショット 2021-03-22 0.57.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1227863/3c819cbc-17b9-34a5-c190-16aa3d0845e3.png)
緑色に4ヶ月程度いたのに水色には1ヶ月もいないのは春休み中毎日競プロと数学しかしていなかったからだと思います。
#自己紹介
現在高専1年の、情報系の学生です。
得意分野は数学とグラフ問題、苦手分野は文字列の操作とデータ構造、DP等です。
学校の授業でJavaを扱っていたということもあり、競プロをJavaで始めました。

#精進量

![スクリーンショット 2021-03-22 1.13.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1227863/eb8cf377-5

元記事を表示

Java: EasyBuggy – 30分でわかる!XMLエンティティ拡張(XEE)の脆弱性

# 概要

[EasyBuggy](https://github.com/k-tamura/easybuggy/blob/master/README.jp.md)または[EasyBuggy Boot](https://github.com/k-tamura/easybuggy4sb/blob/master/README.jp.md)を利用して、XMLエンティティ拡張(XEE)の脆弱性をシミュレートし、その修正を試みます。

環境構築はこちらの記事から。

https://qiita.com/flyaway/items/4922af5dbaafa1942e88

## 注意事項

本記事では脆弱性をついた攻撃手法について解説しています。

しかし、実際に第三者が運用しているWebサービスなどに対して、勝手に脆弱性の検査をおこなうのは違法行為となる可能性が非常に高いです。無害な検査用文字列を送信しているだけのつもりであっても、意図しない破壊を招いたり、監視システムによって攻撃と勘違いされる可能性があります。

絶対にやめましょう。

参考事例: [脆弱性検査について](https://ww

元記事を表示

セッション管理

### セッション
サーバ内に情報を保存し、異なるページ間で同一のクライアントを認識する仕組みのことです。

### セッション管理
##### 1.クライアントが初めてServletプログラムにアクセスした際、セッションIDが生成されます。

##### 2.生成されたセッションIDはクライアントに返され、保管されます。

##### 3.再びクライアントがServletプログラムにアクセスする際にセッションIDがクライアントから送信されます。

##### 4.Servletプログラムでは送信されたセッションIDにより、同一クライアントかどうかを判断します。
これらの一連の処理はcookieにより管理されます。cookieが使えない環境では、URLリンクでセッションIDを管理することもできます。

| 戻り型 | メソッド | 説明 |
|:———–|————:|:————:|
| HttpSession | getSession( )| HttpServletRequestインタフェースで定義されているメソッドです。セッションオブジェ

元記事を表示

[Android] Jetpack Navigation 画面遷移とFragment間のデータ受け渡し

Android Studio 4.1.3(windows版) での流れとなります

以下の記事のプロジェクトベースでの説明となります

https://qiita.com/smurata_pvt/items/a8454cc635ba693df6b8

Android DeveloperのJetpack Navigationの画面遷移とFragment間のデータ受け渡しの説明は以下です

https://developer.android.com/guide/navigation/navigation-pass-data?hl=ja

https://developer.android.com/jetpack/androidx/releases/navigation

## SafeArgs を追加する
※ 現時点ではandroidx.navigation:navigation-safe-args-gradle-pluginをimplementationでは動作しないようです
※ androidx.navigationのバージョンに合わせて設定してください

“`build.gradl

元記事を表示

文字列を指定文字数で分解し、逆順で出力する

# 目次

[1.はじめに](#1)
[2.リトルエンディアン](#2)
[3.import](#3)
[4.文字列を指定文字数で分解](#4)
[5.逆順に並び替える](#5)
[6.splitを使う場合](#6)

1.はじめに

…主に自分が見直すための記録です…

16進数の文字列データをリトルエンディアンにしたかった。

調べると split で正規表現を用いて分解する例が多かったが、今回は
0E0A0D6F0014A55F29
みたいな区切られていない文字列を
[0E,0A,0D,6F,00,14,A5,5F,29] (配列)
       ↓
295FA514006F0D0A0E (リトルエンディアン文字列)
にしたかった。

2.リトルエンディアン

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/721559/6f8fca4c-a7b9-5260-2513-84d68ba64e85.png)

元記事を表示

EC2にJavaWebアプリ環境を構築 #4

[EC2にJavaWebアプリ環境を構築 #1](https://qiita.com/harusiso/items/551a0a438c68586eca3d)
[EC2にJavaWebアプリ環境を構築 #2](https://qiita.com/harusiso/items/80ffb3201d65078a4c4d)
[EC2にJavaWebアプリ環境を構築 #3](https://qiita.com/harusiso/items/103760e7ba20ffe2032d)
__EC2にJavaWebアプリ環境を構築 #4__

#目次

__1.はじめに__
__2.プログラム作成__
__3.データベース作成__
__4.動作確認__
__5.アップロード__

##はじめに

* 前回
* インストール作業終了

##プログラム作成

簡単なプログラムを動してみる

eclipse起動

新規→動的Webプロジェクト
今回はプロジェクト名を”sample”にする

Tomcatは10を使用する
プロジェクト作成Java学習 基礎編 mainメソッドとは?

Java学習の備忘録になります。
内容は初心者なので基礎的な部分となります。
Javaに興味がある方やJava学習初心者の参考になれば幸いです。

* * *
#### mainメソッドとは?

Javaのmainメソッドとは、**Javaで処理を実行するときの入り口となるもの**。
いわゆる**エントリーポイント**。
(コンピュータプログラムを実行する際に、一番最初に実行することになっている箇所のこと)
mainメソッドに書かれた処理からJavaの実行がはじまる。

* * *
###### さらに詳しく見ていくと

一般的なプログラミング言語では、プログラムの実行が、どこから・どのようにはじまるかは、大きく以下の2種類にわかれる。

**1.プログラミング言語の仕様で決められた、関数・プロシージャ・メソッドからはじまる**
(C言語、C#、Go、kotlinなど)

**2.プログラムの先頭行から最後の行まで順番に実行されていく**
(Perl、Ruby、Python、PHPなど)

Javaは、上記1ののプログラミング言語になる。
この仕様で決められた関数・プロシージャ・メソッ

元記事を表示

SpringBoot2+JUnit5+DBUnitでREST API(POST)のブラックボックステスト

はじめに

REST API(POST)のテストをController,Service,Daoのレイヤ単位ではなく機能単位でJUnitでテストするために必要な準備、テストケースの作成方法を記載します。

※API単位の試験ならPostman叩いて実行すればいいじゃん!ってなるのですが、
以下の理由によりJUnitで行っています。

– レスポンスのJSON、実行後のDBの状態、機能内で呼び出している外部APIへのリクエストの内容をアサーションしたい
– テストデータを自動登録して実行後は元の状態に戻したい
– 変更が発生しても容易に回帰テストできるようにしたい
– カバレッジを取得できるようにしたい

クラス構成

今回のテスト対象機能のクラス構成は下図の通りです。
![クラス構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1141594/f472bbd2-67af-2197-74f9-5793dcf2211b.png)
JUnitからRestControllerにリクエストを送信し、実行結果を

元記事を表示

勉強メモ17_Javaの勉強(復習用、つどつど更新)

##はじめてのJava0 はじめに

Java Goldの資格持ってるが、ここ1年、Java触っていないため、
復習の意味をこめて、ドットインストールを使って、念のためJavaを学びました。
学んだ内容のURL
https://dotinstall.com/lessons/basic_java_v3

##はじめてのJava1 Javaを学んでみよう
0、説明
 ・Java にはいくつかの実装があるのですが、今回はオープンソース版の OpenJDK を使っていきます。
 ・Java は移植性に優れた言語で広い業界で使われているのですが、今回初めての Java ということで簡単な数当てゲームを作りながら雰囲気を掴んでいきましょう。

1、実行ソース

“`Java:MyApp.java
import java.util.Scanner;
import java.util.Random;

//Java を実行するには class とその中にメインメソッドが必要とまずは覚えておきましょう。
class MyApp {
public static void main(Strin

元記事を表示

Javaで地図を書く時に使うGeoToolsのリポジトリが変わっていました(←勘違い)

Javaで地図を書きたくてネット上のサンプルを写経したらGeoToolsライブラリがダウンロードできない問題に遭遇しました。
末尾に挙げた「[Gradleを介してGeoToolsdependencisを解決するための正しいURLは何ですか](https://knews.vip/postcrawl/stack/view?site=gi&key=13355981&alias=gradle-o-kaishite-geotoolsdependencis-o-kaiketsusuru-tame-no-tadashii-url-wa-nani-desu-ka)」に記されているとおり依存ライブラリのダウンロード先を変更したら解決しました。

# 遭遇した問題

“`bash
$ ./gradlew build
> Task :compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ‘:compileJava’.
> Could not res

元記事を表示

改めてpure javaでHello World

#はじめに
今やどこの開発現場でも何かしらのフレームワーク・ビルドツールを使うのが主流になっているかと思います。が、javacとかいうコマンドを使ってコンパイルする方法、みなさん覚えていますか?(私は覚えておりませんでした)
先日ふと「研修で習ったjavacコマンドってどうやって使うんだっけ?」と思い復習しましたので記録しておきます。

# 基本の流れ

1. javaファイルを作成
2. コンパイル
3. 実行

# さっそくHello World

## javaファイルを作成

Main.javaというファイルを作成しました。
標準出力するだけの簡単な内容です。
![スクリーンショット 2021-03-21 19.16.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395809/9714487f-d49c-b45a-8194-8c9895369296.png)

## コンパイル

先ほど作成したMain.javaをコンパイルします。

コンパイルとは、ソースコードの内容をコンピューター

元記事を表示

EC2にJavaWebアプリ環境を構築 #2

[EC2にJavaWebアプリ環境を構築 #1](https://qiita.com/harusiso/items/551a0a438c68586eca3d)
__EC2にJavaWebアプリ環境を構築 #2__
[EC2にJavaWebアプリ環境を構築 #3](https://qiita.com/harusiso/items/103760e7ba20ffe2032d)
[EC2にJavaWebアプリ環境を構築 #4](https://qiita.com/harusiso/items/5b8c99799efe0a41e7ba)

#目次

__1.はじめに__
__2.インストール__

##はじめに

ざっくり説明するとeclipseで作ったアプリをEC2で動かす

* 前回
* インスタンスの作成が完了

##インストール
__JDK__

開発環境と同じjdk11を使用する
インストールはamazonが提供しているパッケージからおこなう

>__インストール__
>
“`bash
sudo amazon-linux-extras install java-openjdk

元記事を表示

public static void mainとは何なのか(Java学習1日目)

#はじめに
java初学者による備忘録になります。
なにか間違っている事などございましたらご指導して頂けると幸いです。

#エントリーポイントとは

プログラムを開始する場所をエントリーポイント(開始点)と呼びます。
javaのエントリーポイントはmainメソッドです。
mainメソッド=開始点ですから、これが存在しない場合や正しく記述されていない場合は
他のメソッドを使用する事が出来ません。
さて。このmainメソッドですが、定義する為のルールがいくつか存在します。

#mainメソッドを定義する上でのルール

ルールは5つあります。

1.アクセス修飾子はpublic
2.staticメソッド
3.メソッドの戻り値はvoid
4.メソッド名はmain(小文字)
5.メソッドの引数はStringの配列(またはStringの可変長引数1)のみ

上記のルールを守った記述をした場合、以下の様なコードになるでしょう。

“`
class Main {
public static void main (String[] args) {
// 処理
}
}

元記事を表示

実はJrubyはgradleだけで管理できる

# はじめに
Jruby覚えてますか?JRubyはまだ現役です。こういう言語を扱うと必ずと言っていいほど、「javaでいいじゃん」と言われます。確かにJRubyでできることはJVMでできることです。
現状ではRubyが好きな人がたまに使うといった感覚でしょうか。

ですが、私はJrubyでJava開発のテストを書いてます。理由は生産性が高いからです。

この記事では普段Java使いのみなさんがJrubyで楽できるtipsを紹介します。

##依存環境
* gradle
* https://gradle.org/releases/
* Jruby
* https://www.jruby.org/
* jruby-gradle-plugin
* http://jruby-gradle.org/
これだけです。

ですが、全て意識なくていいです。管理はすべてgradleで行います。ここでは一旦、jrubyのコマンドも忘れてしまいましょう。

## 初期プロジェクトを立ち上げる
必要なのは2つのファイルだけです。

“`bash:terminal
mkdir sam

元記事を表示

[Android] Jetpack DataBinding

Android Studio 4.1.3(windows版) での流れとなります

Jetpack DataBindingでボタンイベントを設定する方法を例にして説明します

Android DeveloperのJetpack DataBindingの説明は以下です

https://developer.android.com/topic/libraries/data-binding?hl=ja

## 準備
以下を参考にJetpack Navigation + ViewModelを作成してください

https://qiita.com/smurata_pvt/items/a8454cc635ba693df6b8

## DataBindingを使用するための設定
build.gradleに以下を追加します
DataBindingを有効にするとBindingクラスが自動生成されます

“`build.gradle
android {
dataBinding {
enabled = true
}
}
“`

## ViewModelでの準備
ボタンイベ

元記事を表示

仮引数と実引数

###実引数
渡す値の事

“`Sample.java
List list = new ArrayList<>();
finalSample(list);//これ

add(100,200)//これ
“`

###仮引数
受け取る変数(変数名はなんでもいい)

“`Sample.java
public static void finalSample(List list)//これ
public static void add(int x , int y) //これ

“`

元記事を表示

参照渡し+値渡し+String+オブジェクトの場合+List

###Stringクラスのオブジェクトの場合
Stringクラスのオブジェクトをメソッドに渡した場合、メソッド側の引数には同じオブジェクトの位置が渡されるのは配列と同じですが、文字列変数に新しい文字列を代入するとまったく別の場所にオブジェクトが新しく作成され、その新しい場所の位置がメソッド内の変数に代入されます。その為、元の場所には元の文字列が格納されたままなのでメソッド呼び出し元の文字列には何も影響を与えません。

“`String.java

public static void main(String[] args) {
String str = “abc”;
test(str);//先にここのtext()が実行される
System.out.println(str);
}
private static void test(String str) {
str = “def”;
System.out.println(str);
}
実行
def
abc

“`
###List

参照型の変数の場合は、final修飾子をつけても値の変更が可能になっ

元記事を表示

参照渡し+Method

##参照渡し(引数にアドレスを渡す)
#####基本型変数などではなく配列など引数としてアドレスを渡していることを参照渡し、参照渡しを行うと呼び出し先で加えた変更が呼び出し元にも影響を与える
『配列をメソッド呼び出しで渡すと』
.呼び出し元の配列のアドレスが、呼び出し先の引数にコピーされる
.呼び出し先で配列の実体を書き換えると、呼び出し元にも影響を与える

##値渡し(値そのものが渡されること)
『基本型の変数をメソッド呼び出しで渡すと』
.呼び出し元の変数の内容が、呼び出し先の引数にコピーされる
.呼び出し先で引数の内容を書き換えても呼び出し元の変数は変化しない

##参照渡しと値渡しの例

“`MethodArray.java

public static void main(String[] args) {
int num = 8;
int array[] = {10, 4};

System.out.println(num);
System.out.println(array[0]);

test(num, arra

元記事を表示

OTHERカテゴリの最新記事