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

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

SharedPreferencesを自前で難読化するのはもう古い?これからはEncryptedSharedPrefenrecesを使おう

## EncryptedSharedPreferencesとは

Android Developersのサイトにある通り、「SharedPreferencesのKeyとValueを暗号化する実装」を提供するものです。

([Android Developers](https://developer.android.com/reference/androidx/security/crypto/EncryptedSharedPreferences)公式サイトより引用)
>An implementation of SharedPreferences that encrypts keys and values.

今までのgetSharedPreferences()などで使用していたAPIの使い勝手はそのままに、暗号化する機能を提供してくれるので、手軽にセキュリティを高めることができます。

## 動作条件
・プロジェクトのminSdkVersionが23以上であること

これはandroidx.securityのライブラリのminSdkVersionが「23」に指定されているためです。

元記事を表示

【Java】classファイルからクラスの情報を取得してみる

## 概要
Javaはビルドを行うとclassファイルを出力します。このclassファイルの中身をあえて解析しようという人は、あまりいないかもしれません。がしかし、ソースコードの分析とかに役立つかもということで、今回は試しにclassファイルの情報を取得してみたので、その方法を紹介してみたいと思います。

## 今回取得する情報
* `java.lang.Class`で取得できるものを取得します。[こちら](https://www.ne.jp/asahi/hishidama/home/tech/java/reflection.html)の記事で紹介されているようにフィールド名やメソッド名など、クラスに関する基本的な情報は一通り取得できます。
* `javap`で取得できるものを取得します。javapでは[クラスファイルはすべからくjavapしよう](https://www.sakatakoichi.com/entry/2015/08/20/181123)の記事で紹介されている通り、ファイルサイズやチェックサム、コンパイルしたバージョンやコンスタントプールなどが参照できます。コンスタント

元記事を表示

【Javaについてまとめてみたオブジェクト編】インターフェースについて

#はじめに
今回はJavaのインターフェースについて書いていきたいと思います。
抽象クラスとの違いなど理解するのが難しい印象です。
少しでも理解につながれば幸いです。
抽象クラスについては下記の記事で書いているのでぜひご覧ください。
[【Javaについてまとめてみたオブジェクト編】抽象クラスについて](https://qiita.com/ken_0321/items/73967fd036bddfd2d648 “抽象クラス”)

##インターフェースとは
まず、インターフェースは抽象クラスと似ていますが、クラスではありません。
javaの参照型の一つであり、**抽象クラスを親クラスで使いた時は「継承」と言いますが、インターフェースは「実装」**と言います。
特徴としては、

– クラス宣言時にinterfaceを付ける
– newをしてインスタンスを作成することが出来ない。
– メソッドは抽象メソッドしか作成できない。
– アクセス修飾子はpublicかpackageしか使えない。
– 抽象クラスは一つしか継承できないが、インターフェースは複数実装できる。

といったものがあげられます。

元記事を表示

【Java】AtCoderのABC-193に参加しました。

こんばんは。

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402487/bdf51ae4-1f22-de68-c080-79133545630f.png)

https://atcoder.jp/users/ishikawaryou

残念ながらC問題でつまずきました。

順位は5353位でした。C問題が解けた前回よりも良かったです。
レートは184→197に更新!200まであと少し!たぶん次は超えるでしょう。

###A問題

A円の品物がB円で売られていた。何割引か?
まあこれは問題の通りですな。

“`java
import java.util.Scanner;

public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
double

元記事を表示

AWSでJava開発環境を構築する

# 概要
最近PGする機会がめっきり減ってきたので、コーディング力を維持する(というか成長させる)ために、Javaでも書いてみようと思いました。
せっかくなのでクラウドの統合開発環境の代表格(?)であるAWSを使ってみます。

# やること一覧
1. Gitでリポジトリ作成
* Cloud9 の環境作成
* READMEをGitにpush
* プログラムを一本push

## 1. Gitでリポジトリ作成
![20210227_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287953/771f4c62-33b8-2260-26f8-95a90ef6de61.png)

いつもの画面が出てきます。
![20210227_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287953/3ecc95ca-8e88-dc8e-6b6a-aa671316d92e.png)

## 2. Cloud9 の環境構築
* AW

元記事を表示

【正規表現】

#初めに
`<何か>`のような始点Aから終点Bまでの文字列を正規表現で指定する方法について述べただけの記事です

#本題
始点(今回は「<」)から終点(今回は「>」)までの文字列を単純に正規表現で表すと

“`java:正規表現[不正解]
String regExp = “<.*>“;
“`

こんな形になると思いますがこれだとうまく動きません。

なぜかというと、.*で指定した文字数は貪欲でマッチしうる文字列(最長文字列)にマッチするためです。
そのため、出現するデリミタが一つだけならばいいですが、2つ以上出た場合に途中の文字列全てにマッチしてしまいます。

そのため、最短でマッチするように指定するためには「+」や「*」の後に「?」をつけてあげると最短の文字列にマッチします。

“`java:正規表現[正解]
String regExp = “<.*?>“;
“`

#最後に
今回はJavaの記述で行いましたが、基本的に正規表現は共通で扱われるので他の言語でも動くはずです。
最短マッチはあまり参考資料がないので(僕がみた中では)ハマると結構時間が取られてしまうかなと思い筆を取

元記事を表示

[Minecraft Plugin]簡単なPlayer vs Enemyのミニゲームを作成してみよう

![2021-02-27_20.23.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/854414/cca3369f-2c9e-c4e0-9edb-db17e417f897.png)

#開発環境
– IDE: Intellij IDEA Ultimate
– java version: 1.8.0_271
– Minecraft: 1.16.4
– Spigot Plugin

#どのようなPluginなのか
プレイヤー同士協力して敵Mobを退けながらゴールを目指すシンプルなゲームを実装します
Youtube: https://youtu.be/lEvXYIoAG48
github: https://github.com/FratikaK/L4D_gamepl

#Enemyの湧かせ方について
これはとても悩みました。Locationで指定した位置に湧かせるのが自然でいいかもしれませんが、
Mapの広さ故、かなり莫大な量のLocationを書かなければいけません。

そこでSpigotが提供してい

元記事を表示

超絶初心者がMacでEclipseを動かすまで

自分が通っていた職業訓練校ではEclipseを使ってコードを書いていたので、家でも同じようにしよう!と思ったのですが、訓練校で使っていたのは Windows、家のはMacで、微妙に違う!
しかも自分はMacを持ってるにも関わらずMac初心者(今使ってるノートパソコンが初Mac)なので、今後同じ事をする必要がある時用の覚え書きに。

注:自分が後で見返す用にスマホ撮影した写真を載せてますが、自分用なので汚いです。

とりあえずEclipseを日本語で使いたいので、
https://mergedoc.osdn.jp/
から日本語化のプラグインを纏めてインストールします。
![3BCD9F86-9E5C-4C67-A80E-BE85C7051376.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1153544/136f3154-f0f0-8719-c473-f2cdab480b7f.jpeg)

![A65ECBB8-611F-4D83-96D0-1001046CEE86.jpeg](https://qi

元記事を表示

【備忘録】JavaでWebブラウザ(IE)の操作を自動化

これまでPowerShellでWebブラウザの自動操作をしていましたが、javascriptで言うところの「getElementsByClassName()」メソッドが上手くいかず「Javaで作れないかな~」ということで簡単なひな形だけ先に作ってみました。

上述のPowerShellはInternet Explorer(略称:IE)との相性が良かったので、今回も同じWebブラウザを使います。

今回は「Selenium IE Driver」と「IEDriverServer」を使いました。
##前提条件
・Windows 10 pro 64bit
・Java 1.8
・Eclipse(Pleiades)
・Apache Maven 3.6.3
・Internet Explorer 11 ←自動操作したいWebブラウザ

##最終的なプロジェクトの構成とmain()
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1057373/83af9d7b-d94c-3198-b90a-387140c

元記事を表示

RaspberryPiにJAVA用のOpenCVをインストールしてWindows+Eclipseからリモートデバッグする方法①

記)2021/02/27
具体的な導入方法を順次追加する。
Windows10を基準に書く。Macは持っていないので不明
無茶苦茶長いので、頑張って読み込んで下さい。

ちなみに、以下の記事(英語)を読めばわかると言えば身も蓋もないので日本語で詳しく書くことにする。
https://qengineering.eu/install-opencv-4.5-on-raspberry-pi-4.html

①RaspberryPiにOSをインストールする。
https://www.raspberrypi.org/software/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/3157cc87-8433-9b65-79df-0fa2f02efbef.png)
あ)Windows10PCにマイクロSDカード(16gでも実験だけなら可能だが、実用的なものを作るには最低でも32G以上を推奨)をセットし前記ソフトをインストールし起動。指示に従い書き込み
い)マイクロSDをラズベリパイへセッ

元記事を表示

google-java-formatをVSCode・macOS環境で利用する

#対象とする読者
VSCode・macOS環境でのjava開発にて[Google Java Style](https://google.github.io/styleguide/javaguide.html)に自動整形するフォーマッタ([google-java-format](https://github.com/google/google-java-format))を適用させたい方

#環境
macOS Catalina (version: 10.15.7)
VSCode for macOS (version: 1.53.2)

#設定法
– ターミナルにてHomebrewでgoogle-java-formatをインストール

“`bash

brew install google-java-format
“`

– VSCodeにて拡張機能emeraldwalk.runonsaveをインストール
![Screen Shot 2021-02-27 at 10.27.37.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

先頭から7bitが年、4ビットが月、残り5ビットが日 (Elixir)

# はじめに
– [Elixir](https://elixir-lang.org/)楽しんでいますか:bangbang::bangbang::bangbang:
– [Android](https://developer.android.com/?hl=ja)でSuicaの履歴をみるというものを作ってみました
– 「先頭から7bitが年、4ビットが月、残り5ビットが日」、「とある2バイトが残高、ただしリトルエンディアン」こういった処理って地味にけっこうたいへんではないでしょうか
– [Elixir](https://elixir-lang.org/)ならパターンマッチですっきり書けますのでご紹介します
– 2021/2/27に開催する[autoracex #12](https://autoracex.connpass.com/event/205985/)というもくもく会の成果とします

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

元記事を表示

あらためてJavaを学習する(その1)変数

Java学習の備忘録です。
Javaインストールから簡単なクラスの説明などは「あらためてJavaを学習する(その0)」で解説してます。
[あらためてJavaを学習する(その0)](https://qiita.com/takuyaTT/items/982a2706cf716f34774b)

## 変数(variable)
メモリ領域(記憶装置)に名前(識別子)をつけて値を保存すること。
変数を用いることで、データを一定期間記憶し必要なときに利用することができる

1. メモリの場所に変数名をつける
2. `データ型`を指定して、`値(value)`を代入する
3. 値を呼び出す際は、変数名 → メモリ番地を参照 → 値を取得 の順になる

変数に入れる値のことを`リテラル`と呼ぶ。

### 識別子のルール

* 予約語以外であれば任意で指定可能
* 英数字、アンダースコア(_)、ドルマーク($)が利用可能。
* 数字で始まることはできない

<重要ポイント>
**小文字と大文字は区別される**

### データ型
データ型は2種類ある。

* 基本データ型(プリミティブ型)
変数

元記事を表示

Java小テスト② 〜 for 編 〜

これは友達向けのJavaの小テストです。
Java初心者の文法腕試しでお使いくださいー!!

今日はfor文の小テストを作りたいと思います!

問題1:ミスを探しなさい。

“`java
public static void main(String[] args) {
for i = 0; i < 10; i++ { System.out.println(i); } } ``` 問題2:出力されるものは何か? ```java public static void main(String[] args) { for(int i = 0; i < 100; i += 10) { System.out.print(i); } } ``` 問題3:以下を満たすプログラムを書きなさい。 - 100回繰り返す。 - 回数が3の倍数のときは, 「Fizz」を出力する - 回数が5の倍数のときは. 「Buzz」を出力する - 3と5の公倍数である場合は「FizzBuzz」を出力する - それ以外は数字をそのまま出力する。

元記事を表示

Javaの機能

#クラス定義

“`java
class クラス名 {

}
“`
クラス名は**英字の大文字で始まる名詞**にする。**キャメルケース**で命名。

#mainメソッド

“`java
class クラス名 {
public static void main(String[] args){

}
}
“`

プログラムの処理を開始する場所。
クラスの中に定義され、JVMは`main`メソッドの先頭から処理を実行する。

#データ出力

“`java
System.out.println(“こんにちは”);
System.out.println(1);
“`

“`java:出力
こんにちは
1
“`

`System.out.println`は出力時、**改行される**。

“`java
System.out.print(“こんにちは”);
System.out.print(1);
“`

“`java:出力
こんにちは1
“`

`System.out.print`は出力時、**改行されない**。

#コメントアウト

“`java

元記事を表示

【Java】String型と数値型の型変換をまとめてみた

#プログラミング勉強日記

#本題
String型 → int型
Integer.parseInt();
Integer.valueOf();

String型 → byte型
Byte.parseByte();
Byte.valueOf();

String型 → short型
Short.parseShort
Short.valueOf

String型 → logng型
Long.parseLong();
Long.valueOf();

String型 → float型
Float.parseFloat();
Float.valueOf();

String型 → double型
Double.parseDouble();
Double.valueOf();

数値型 → String型
String.valueOf();

int型 → String型
Integer.toString();

byte型 → String型
Byte.toString();

short型 → String型
Short.toString();

long型 → String型
Long.t

元記事を表示

Quarkus – Creating Your First Application  やってみた

AWS Lambda などの Function-as-a-Service (FaaS) に投入する関数を Java で書こうと思って調べたところ、Quarkus (クォーカス) という、Java でマイクロサービスを作るのに適したフレームワークがあると知ったので、試してみました。

一応サーバーが起動するところまで到達できましたが、Quarkus をこれから使いたいという方に役立つ情報というよりは、新技術を試すときにありがちな試行錯誤の記録です。一般に、うまくいった事例だけが記事になって残る傾向があり、新技術にトライする際のトラブルにどう立ち向かうか、あるいはいつ立ち向かうのをやめるかということは記事になることが少ないと思います。今回は、一つの事例として公開させていただきます。

Quarkus の Creating Your First Application で示されているアプリをビルドすることにだけ関心があるという方は、[GraalVM で再度試す](#graalvm-%E3%81%A7%E5%86%8D%E5%BA%A6%E8%A9%A6%E3%81%99)の節だけ参考にしてい

元記事を表示

Java 小テスト① 〜if 編〜

これは友達向けのJavaの小テストです。
Java初心者の文法腕試しでお使いくださいー!!

今日はif文の小テストを作りたいと思います!

第1問:ミスを探し, 動く状態を作りなさい。

“`java
public static void main(String[] args) {
int grade = 90;

if grade >= 90 {
System.out.println(“秀”);
} else if grade >= 80 & grade < 90 { System.out.println("優"); } else if grade >= 70 & grade < 80 { System.out.println("良"); } else if grade >= 60 & grade < 70 { System.out.println("可"); } else {

元記事を表示

文字列連結時、大量の場合➡効率について

文字列連結時、大量の場合➡効率について、以下は参考になります。

“`sample.js
//効率悪い例:
  detail += “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”;
  detail += “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”;
  detail += “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”;
//改善例:
  detail += “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”
+ “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”;
+ “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”

元記事を表示

Javaで学ぶアルゴリズム 第7弾:乱数

# #Javaで学ぶアルゴリズム < 乱数 >

##はじめに
Javaは授業で触れただけで全くの初心者であり,何もわかっていない.なので,基本的なアルゴリズムをJavaで実装し,アルゴリズムの理解を深めるとともに,Javaにも慣れていきたい.
その第7弾として乱数を扱う.

##乱数
意味としては無作為に得られるランダムな数値であるが,コンピュータ言語にある乱数発生ライブラリはすべて**擬似乱数**と呼ばれる計算によって求められる乱数である.ここでは,その発生方法の仕組みや,評価も実装を通して学ぶ.なお,その2つは**一様乱数(線形合同法)**と**ボックス・ミュラー法**である.

##一様乱数(線形合同法)
一様乱数の説明を示した後,実装を行う.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951300/07267cdc-100d-ac9a-0ff8-4a8131695a1b.png)

####実装
以下にソースコードとそのときの出力を示す.
#####ソースコード: 一様

元記事を表示

OTHERカテゴリの最新記事