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

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

血圧測定結果管理プログラムのソースコードを公開いたします

血圧測定結果管理プログラムのソースコードを公開いたします
+ ”’Java

//
//
// 血圧記録プログラム
//  新規作成日 2021/03/19(Ver1.0)
// 作成者   乃木坂46好きのITエンジニア
//
//
//
//
//
//

//パッケージの定義
package Ketsuatsu;

//importするAPIを定義
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

//標準入力クラス
class top_ketsuatsudata{
//日付オブジェクトを呼び出す
//Date d = new Date();
//日付フォーマットオブジェクトを呼び出す
//SimpleDateFormat d1 = new SimpleDateFormat(“yyyy/MM/dd”);
//文字列型のデー

元記事を表示

Java: EasyBuggy – 30分でわかる!SQLインジェクションの脆弱性

# 概要

[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)を利用して、SQLインジェクションの脆弱性をシミュレーションし、その修正を試みます。

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

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

## 注意事項

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

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

絶対にやめましょう。

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

元記事を表示

【Java】AtCoderのABC-196に参加しました(レート:251→220)。

こんばんは。

2021/3/20に、AtCoderのABC-196に参加しました。
レートは以下の通りとなっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402487/ab6cc4f3-dec0-c7cd-d0aa-362baf008a20.png)

https://atcoder.jp/users/ishikawaryou

A,B問題は解けました。
家の都合で40分ほど遅れて参加し、C問題は間に合いませんでした。
すると、、レートは251→221に低下!ぐあっ。
遅れて参加するのは止めた方が良いのか、A,Bをミスなしで解くだけでは下がってしまうのか、どうなのかな。

###A問題
a,b,c,dの4つの数字を入力。
a

元記事を表示

ActivityResultContracts.RequestMultiplePermissions チートシート

最近はパーミッション関連の処理が随分と簡潔に書けるようになったのは嬉しいのだけれども、なにが困るってJavaで書かなければならない時に少し混乱することがあるのでチートシートとして :scroll:

– [ActivityResultContracts.RequestMultiplePermissions  |  Android Developers](https://developer.android.com/reference/androidx/activity/result/contract/ActivityResultContracts.RequestMultiplePermissions)
– [Getting a result from an activity  \|  Android Developers](https://developer.android.com/training/basics/intents/result)

## Java

“`java
private final ActivityResultLauncher reque

元記事を表示

forwardPath+URL?action=”done”の条件分岐

URL?action=”done”で受け取ればelse if(true)
action次第fowardPathの行き先変更

“`forwardPath_action.java
String forwardPath = null;
String action = request.getParameter(“action”);

if(action == null) {
forwardPath = “/WEB-INF/jsp/registerForm.jsp”;
}else if(action.equals(“done”)){
forwardPath = “/WEB-INF/jsp/registerDone.jsp”;
}
RequestDispatcher done = request.getRequestDispatcher(forwardPath);
done.forward(request, response);
}
“`

元記事を表示

JavaにおけるDB操作(その2)

[この記事](https://qiita.com/zaburo/private/b8c2ab8db7b972d614e7)の続き。
長くなるので分けました。Hibernate(JPA)による操作。とりあえずは動いたがいまいち構成や依存関係がわからない。

## 事前知識(段取り)

Hibernateを利用する場合、おおよそ下記のものを作ることになるらしい。
Javaの世界は不慣れなので表現とかが間違ってるかもしれない。

* hibernate.cfg.xml(DBの接続情報やクラスのマッピング等を指定)
* Modelクラス(DBテーブルと対応するクラス)
* SessionFactory(Config)クラス(xmlから設定を読み込んで利用できる状態にする?っぽい)
* 実行ファイル(App.java)

## 準備

### テンプレート生成

まずはテンプレートの生成。quickstartで特に問題ない。

“`bash
mvn archetype:generate \
-DarchetypeArtifactId=maven-archetype-quickstart \

元記事を表示

JavaにおけるDB操作(その1)

NonJava開発者が諸事情でHibernate利用しなければならない状況になったので基本部分を含めメモ。

## パターン?

JavaでDBを操作するパターンはいくつか。まあ、他の言語とパターン的には変わらない。

* JDBCでまんま接続
* DAO/DTOパターン?
* Hibernate(O/Rマッパ利用)

>Hibernateは長いので[別記事](https://qiita.com/zaburo/private/28c4af4233e4a4f46391)にしました。

## 環境

Javaの開発環境はもっさりしているので好きじゃない。いつもどおりvscodeで。

* macOS利用
* 開発環境はvscode(java extension入り)とコマンドライン

>MacでのJava環境作りは[こちら](https://qiita.com/zaburo/items/cd4923e52ffbf70658ab)を。

## DBの準備

私はMacでMAMPのMySQLを利用していますが、何でもOK。

“`bash
create database testdb;
u

元記事を表示

Maven最低限のメモ

Android開発以外でJava使うことがない人間のMavenメモ。SPI開発が目的。

### プロジェクト生成

“`bash
mvn archetype:generate \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false \
-DgroupId=com.hoge \
-DartifactId=Hello
“`

>どのようなオプションが標準化もよくわからない。

### 実行

こうすると動くらしいが、

“`bash
cd Hello
mvn -q compile exec:java -Dexec.mainClass=com.hoge.App
“`

エラー。

![スクリーンショット 2021-03-16 9.48.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55188/8712fbb3-4795-ab53-fb03-9a16f66bda12.png “スクリーンショット

元記事を表示

Javaで複数バージョン切り替え

# ローカル
“`bash
$ update-java-alternatives –list
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64

$ sudo update-java-alternatives –set /usr/lib/jvm/java-1.8.0-openjdk-amd64
update-alternatives: error: no alternatives for mozilla-javaplugin.so
update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so
“`

# IntelliJ

元記事を表示

CData JDBC Driver for Google Calendar2019の動作確認メモ

# CData JDBC Driver for Google Calendar2019の動作確認メモ

1年前くらいに残したメモですが、もったいないなと思ったので公開します。

## [CData JDBC Driver for Google Calendar](https://www.cdata.com/jp/drivers/googlecalendar/jdbc/)とは

[CData社](https://www.cdata.com/jp/)が作ったGoogleカレンダーにアクセスするJDBCドライバーです。

JDBCインターフェースを通して、他のユーザーの予定一覧を取得できるだけでなく、予定を入れたり削除したりできてしまいます。

機械的にGoogleカレンダー利用者の予定を操作できるので、管理職系の業務で役立ちそうなことが多そうです。またBIツールのようなデータ分析アプリケーションであれば他データとの関連づけも期待できます。

## 前提

– GCPアカウント https://console.cloud.google.com/
– OAuth2.0クライアントの情報(ク

元記事を表示

MVCのモデルをわかりやすく説明

_現在、railsでアプリケーションを開発しながら勉強をしているのですが、
MVCモデルを使って開発をしていて、V=View「わかる( ´∀`)」要は画面の表示をするフロントの部分だ。
C=Controller「わかる( ´∀`)」routeファイルに書いたモデルの対応したアクション(メソッド)で処理内容が違うし、表示させるファイルを呼び出したり、リダレクトしたり、呼び出すモデルが違ったり対応するアクション(メソッド)によって
行う処理が全く違う。_

_ではモデルとは???
モデルのファイルにはbelongs_toやhas_manyなどのモデルの結びつきなどが記載されています。
よくググるとデータベースとデータのやりとりを行う機能を実装したりする。など記載されていますが
なんのこっちゃよく分からん( ゚д゚)
なので、自分なりにモデルとはこういうものだよと解説していきます。_
#モデルの概念
モデルとは日本語で、型や模型を意味しています。
この型とは?なんの型なのでしょうか?何を意味しているのでしょうか?
例えば「User」モデルがあるとします。Userとは使用者、使い手などを意味し

元記事を表示

絵文字およびゼロ幅ジョイナーを含む文字列を反転させる

# はじめに

最近、プログラミングに関するQ&Aのサイトstackoverflowに興味深い質問が投稿されました。

[java – How to reverse a string that contains complicated emojis? like “???????” – Stack Overflow](https://stackoverflow.com/questions/66706976/how-to-reverse-a-string-that-contains-complicated-emojis-like#66706976)

興味を持ったので解答してみようとしたのですが時間がかかってしまい、もたもたしているうちにクローズされてしまいました。質問者がチャレンジしたコードが記載されていないために「This question needs to be more focused. It is not currently accepting answers.」となってしまったようです。
この投稿ではこの質問に対する解答を与えてみようと思います。
(ここで記述したコードはすべて

元記事を表示

djUnitをJava15、eclipse2021-03で使用する

#概要
@umed0025さんの[eclipse4.5(mars)以降でdjunitプラグインを使う方法](https://qiita.com/umed0025/items/85709ca887593548a75c “eclipse4.5(mars)以降でdjunitプラグインを使う方法”)と似た内容ですがこちらはJava15、Eclipse2021-03でdjUnitを使う方法です。

#動作環境
・Ubuntu 20.04.1 LTS
・Eclipse IDE 2021-03 R Packages for Enterprise Java and Web Developers Linux x86_64(日本語化せず)
・Java15(Eclipse 2021-03に内蔵)
・djunit 0.8.6

#手順
1. Create a ProjectでPlug-in Projectを選び枠組みを作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132879/5d46928c-e8

元記事を表示

[Java]インナークラスのstatic修飾子の動作

# インナークラスのstatic修飾子
クラス内で定義されたクラスがインナークラス。
それにstatic修飾子があるかないかで振る舞いが異なる。

“`java
class Fruits {
static ArrayList fruits = new ArrayList(
Arrays.asList(“Apple”, “Banana”)
);
// appleをstatic有りで、bananaをstatic無しで定義
static String apple = “Apple”;
String banana = “Banana”;

// Appleというインナークラスをstatic有りで定義
static class Apple {
void eat() {
// りんごを食べる
fruits.remove(apple);
}
}

// Bananaというインナークラスをstatic無しで定義
class Banana {
void eat() {

元記事を表示

[Java]ListとSetの違い

#### List
https://docs.oracle.com/javase/jp/8/docs/api/java/util/ArrayList.html
順序つきの配列で、値の重複が可能。

“`java
ArrayList fruits = new ArrayList<>();
fruits.add(“りんご”);
fruits.add(“ばなな”);
fruits.add(“ぶどう”);
fruits.add(“りんご”); // りんごを複数登録する

for (String f : fruits) {
System.out.println(f);
}

-> りんご
-> ばなな
-> ぶどう
-> りんご
“`

格納した順序で、かつ重複登録したりんごが格納できています。
順序を保持するため、2番目のりんごと4番目のりんごをそれぞれ別に扱えるようになっています。

#### Set
https://docs.oracle.com/javase/jp/8/docs/api/java/util/HashSet.html
要素の順番を保証しない配列で、

元記事を表示

[Java]ArrayListとLinkedListの違い

### LinkedList
https://docs.oracle.com/javase/jp/8/docs/api/java/util/LinkedList.html
ArrayListと対になる存在で、連結リストと呼ばれる。
構造が違うためパフォーマンスが異なる。

|クラス名|要素の検索速度|要素の追加削除速度|
|:–:|:–:|:–:|
|ArrayList|高速|低速|
|LinkedList|低速|高速|

##### ArrayList

連続して要素を並べることで順序を保持しています。
そのため、要素の追加や削除が行われると後ろの要素を1つずつ玉突き方式で移動させていきます。
この処理が遅く、ArrayListの要素の追加削除速度が遅い原因になります。

A,B,C,D の4つの要素からBを消した場

元記事を表示

java

sss

元記事を表示

ProtocとWireで生成されるJavaファイルとバイトコードのサイズを比較してみた

GradleでProtocol Bufferを使う時には[GoogleのProtobuf Plugin for Gradle](https://github.com/google/protobuf-gradle-plugin)か[WireのGradle Plugin](https://github.com/square/wire/blob/master/wire-library/docs/wire_compiler.md)が主流だと思いますが、それぞれのコンパイラ(protoc/wire)で生成されるJavaファイル(およびKotlinファイル)のサイズと、さらにそれをJVMバイトコードにコンパイルした時のファイルサイズを比較してみました。

きっかけはSquare社の[Introducing Wire Protocol Buffersという記事](https://developer.squareup.com/blog/introducing-wire-protocol-buffers/)で、Protocol Bufferの実装を**protocからwireに変えたらメソッドが10,0

元記事を表示

【Java】独自クラスのListで重複した要素を除外する

# はじめに

Javaにて自分で作成したクラスのListから重複した要素を除外する方法について、いつもやり方を探してしまうので個人的なメモとしてまとめてみます。

# 前提

こんな感じの`Person`クラスがあったとします。

“`java:Person.java
public class Person {
private String id;
private String name;
private int age;

public Person(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}

public String getId() {
return this.id;
}

public String getName() {
return this.name;
}

public int ge

元記事を表示

[Android] Jetpack ViewBinding

Android Studio 4.1.2(windows版) で動作検証してます

ViewBindingを採用することで各コントロールをfindViewById()で呼び出さなくてもよくなりました
Android Developerの説明にある通りnullや型の安全性があるので積極採用する流れになると思います
※ActivityやFragmentでコントロールのIDに重複が無いように定義する必要があります

ViewBindingはAndroid Developerの説明で十分理解ができるかとは思いますが軽く説明してみます

Android DeveloperのViewBindingの説明は以下です

https://developer.android.com/topic/libraries/view-binding?hl=ja#java

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

“`build.gradle
android {
viewBin

元記事を表示

OTHERカテゴリの最新記事