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

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

Java小テスト③ ~ while 編 〜

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

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

問題①:次のプログラムを10未満の偶数の数を出力するように訂正せよ。

“`java
while(i < 10) { System.out.println(i); } ``` 問題②:次の出力は何か? ```java public class WhileClass { public static void main(String[] args) { int i = 0; while(i < 10) { if(i % 3 == 0 && i % 5 == 0) { System.out.println("FizzBuzz"); } else if(i % 3 == 0) { System.out.println("Fizz"); } else if(i % 5 == 0

元記事を表示

Microsoft の SMT ソルバー、Z3 でマクドナルドで一日分の栄養を取れる組み合わせを計算してみたら衝撃の結果が・・・出ない!?

普段は研究開発の現場で、開発で使う様々なツールを動かす、試験が通っているか確認する、比較のために先行研究のプログラムを条件を整えて動かしてみる、論文にならないようなちょっとしたアルゴリズムの改善をするなど、研究を下支えするエンジニアリングの仕事をしています。

Qiita を始めたので、いつか Z3 の記事を書こうと思っていました。ナンプレか何かでやろうと思っていたところ、恐るべきバズり記事が爆誕したので、予定を変更して「マクドナルド問題」を扱いたいと思います。ここでマクドナルド問題とは、「[マクドナルドで一日分の栄養を取れる組み合わせを計算したら衝撃の結果に (2021年02月22日 17時01分 (JST))](https://qiita.com/takobaya391076/items/49b15c1fa36734b3fa53/revisions/15?type=preview)」のダイエット問題を解き、最高のメニューの中身、つまり何をいくつ食べるのかを求めるものとします。

Z3 はナンプレのような問題には強いですが、果たしてマクドナルド問題を解くことはできるでしょうか?

元記事を表示

ハンター・フレームワーク理論とは(ライフハック)

#HFT
##Hunter Framework Theory
ハンター・フレームワーク理論とは

>- 人類は、狩猟に適した体に進化した。
– 現代におけるさまざまな仕事を、狩猟というフレームワーク(獲物ー狩りー捕獲物、敵ー戦いー勝利)に当てはめて考えると、合致する部分が多いという理論。

すなわち、**「人間は知的生産向けの体を未だ獲得していない」**と言うこと。
**「知的生産をするためには、運動が必要不可欠である」**と言える。

例を以下に示す。
>【狩猟  : 獲物   ー 狩り(運動)ー 捕獲物】
【戦争  : 敵    ー 戦い(運動)ー 勝利 】
【スポーツ: 対戦相手 ー 対戦(運動)ー 勝利 】
【農業  : 自然   ー 農耕(運動)ー 収穫物】
【製造業 : 製造目標 ー 製造(運動)ー 製造物】
      (製造台数、製造コスト低減、品質向上 etc.)

知的生産について考察してみる。知的創造は、運動を伴っていない。なので、狩猟というフレームワークに合致していない。プログラマもこれに含まれる。
>【知的生産: 目標   ー 知的創造  ー 創造物】
 

元記事を表示

Javaのデータ型の種類と用法

# はじめに
私は、現在Javaを学習しており、データ型の種類と用法についてまとめてみました。
データ型とは、変数が数値や文字列かなどを定義するためのものです。
Javaでは、変数を定義する場合、

“`java
変数宣言
型 変数名;
int age;
“`
のように定義しなくてはなりません。

# データ型種類 用法

|分類|型名|格納するデータ|変数宣言の例|
|—|—-|———–|———|
|整数|long|大きい整数|世界の人口|
| |int|普通の整数|給与金額|
| |short|小さな整数|年齢|
| |byte|さらに小さな整数|腕時計の数|
|少数|double|普通の少数|円周率|
| |float|少し曖昧な少数|体重|
|真偽値|boolean|trueかfalse|真偽|
|文字|char|1文字|イニシャルなど|
|文字列|String|文字の並び|自分の名前|

# 型の変換
Javaには型を変換するしくみが3つあります。
①と③は自動的に行ってくれるので我々は気にする必要がありません。

元記事を表示

[Android Studio] DatePickerDialogの使い方(備忘録)

#DatePickerDialogを使ってみた
DatePickerDialogはフラグメントの一種で、写真のような日付選択ツールが使えるようになるらしい。
![スクリーンショット 2021-02-28_DatePickerDialog.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139020/80a2f5b5-fc55-3625-065c-68e68f69b070.png)

フラグメントについてわからなかったので調べてみると、
>フラグメントを作成するには、Fragment(またはその既存のサブクラス)のサブクラスを作成する必要があります。
[(フラグメントを作成する (Android Developers))](https://developer.android.com/guide/components/fragments?hl=ja#Creating)

とあったので、ほほーそうかと思ってDatePickerDialogのクラスを作ってみた。

“`java:DatePickerDialo

元記事を表示

オープンソース化したCoherence(インメモリデータグリッド)のEclipse利用での使い方

# Coherenceの使い方
オープンソース化したCoherenceを使ってみる!
実際に使いそうな、DBからデータ取得して、メモリにキャッシュする流れをやってみよー
windows機でEclipseを使ってアプリケーションを作るので、実際の開発工程がなんとなく分かるし、
発展させて、自分流のアプリケーションを作ってみるのも楽しいかもですね

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103334/6dccf647-4861-c018-54a9-8a835c54892c.png)

日本語の使い方の情報が少ないし、本があっても激古情報なので、有益なはず

なお、DBはderbyを使います

## Coherenceダウンロード

mavenの設定するのめんどいので、mvnのセントラルレポジトリから直接jarを仕入れます!
依存関係がないので、このjarだけで動きます、意外とシンプル!

※本格的なプロジェクト運用するなら、eclipseでmavenプロジェクトとかgradleプロ

元記事を表示

【Java】Listの重複を削除する方法

# 1. Setクラスを使う方法

以下では、HashSetクラスに数値が重複する List を渡し、重複なしのリストに詰め替えています。

“`java
//数値が重複するListを作成
List listWithDuplicates = Arrays.asList(0, 1, 2, 3, 4, 4, 5, 5);

//HashSetに数値が重複するListを渡し、重複なしのリストに詰め替える
List listWithoutDuplicates = new ArrayList<>(new HashSet<>(listWithDuplicates));

System.out.println(listWithoutDuplicates); // 出力 -> [0, 1, 2, 3, 4, 5]
“`

# 2. Streamのdistinct メソッドを使う方法

以下では、Streamのdistinctメソッドで重複を削除し、新たなListに詰め替えています。

“`java
//数値

元記事を表示

Keycloak

Keycloakとは

Keycloak(キークローク)とはWeb上でのSSO(シングルサインオン)を実現するためのJavaベースの認証ソフトウェアです。初版は2014年9月にリリースされ、最新版は2021年2月にリリースされた12.0.3になります。また、2016年にRed HatはRH SSO製品を、PicketLinkフレームワークからKeycloak upstreamプロジェクトをベースとしたものに切り替え、それに伴い、PicketLinkのコードベースがKeycloakにマージされました。現在、シングルサインオやAPIアクセスの認証・認可制御を実現するソフトウェアの分野において、最も勢いのあるソフトウェアの1つと言われています。

機能

Keycloakの主な機能は以下の通りになります。(ドキュメントから抜粋)

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事