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

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

【Java】Mapのキーと値のペアを拡張for文を使って取得する

#はじめに
Map のキーと値のペアを`Map.entrySet`を使って取得する方法です。
Map のキーと値を取得する方法は他にも`keySet`や`values`があります。
これらはキー・値のどちらかを取得するだけですが、`entrySet`を使うとキーと値のペアを取得することが出来ます。

#entry.Set の使い方

###Mapに値を設定

“`java
Map animal = new HashMap<>();
animal.put(“monkey”, “猿”);
animal.put(“dog”, “犬”);
animal.put(“cat”, “猫”);
“`

###Mapのキーと値のペアを取得

以下の処理ではentrySetメソッドを使用してキーと値のペアを取得し、getKeyメソッドでキーを、getValueメソッドで値を取得しています。

“`java
for (Map.Entry animalNameInJapanese : animal.entrySe

元記事を表示

RhinoでJavaの中からJavaScriptを利用する 2021年版

JavaVM で JavaScript エンジンを動かして、DSLとして JavaScript を利用したいようなケースは結構あったはずだが、JavaVM に標準で搭載されているJavaScriptエンジン Nashorn はすでに Java11 で[非推奨](http://openjdk.java.net/jeps/335)となっていて、プロダクションで使っている勢にとっては不安の種となっている。

Nashorn 非推奨の理由は、最新の ECMAScript 仕様に追随しきれないというもの。

確かにモダンなESを使いたいモチベーションはあるが、それが足枷となってJVMそのものの進化のスピードが律速されてしまうのであれば、非推奨としてJVM本体の進化のペースとは切り離すという判断は合理的。

ではどうしたらいいのか。Alt JVM として開発されている他言語対応JVM GraalVM を使うというのが第一の選択肢である。GraalVM に関しては色々なところで触れられているのでここでは触れない。

実運用上は VM を変更して運用することはないとはいえ、Javaのプログラムが特定の

元記事を表示

Dockerを用いて掲示板を作った1

# これは何

DockerとWebアプリ作成の勉強のため,[この本](https://www.amazon.co.jp/Web%E3%82%B5%E3%83%BC%E3%83%90%E3%82%92%E4%BD%9C%E3%82%8A%E3%81%AA%E3%81%8C%E3%82%89%E5%AD%A6%E3%81%B6-%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AEWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80-%E5%89%8D%E6%A9%8B%E5%92%8C%E5%BC%A5-ebook/dp/B01GNXNIWE)の第3章をDockerコンテナの上で実装してみた際のメモ.

## ファイル構成

“`sh
$ tree .
.
├── Dockerfile
└── testbbs
└── WEB-INF
├── classes

元記事を表示

Eclipseインストール

IBMが Java で開発した、オープン・ソースの統合開発環境(IDE)である
『Eclipse』をインストールしていきます。

## 『7-zip』をインストールする。
https://sevenzip.osdn.jp/

## 『Pleiades All in One』をダウンロードする。
[Pleiades All in One ダウンロード](https://mergedoc.osdn.jp/)
① 左上の『Eclipse 2020』をクリック。
②『Windows 64bit-Full Edition-Java』をダウンロードする。
![2021-01-10_22h18_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565881/eb5d7b15-02f8-ff56-1ce0-cd87513ad095.png)

## ダウンロードしたファイルを、7-zipを使用して解凍
◆ Windows環境では『7-Zip』という解凍ソフトで解凍してください。
それ以外

元記事を表示

読書メモー「オブジェクト指向でなぜ作るのか」

## はじめに

技術書等を読んで得た知識をまとめた、自分用の読書メモです。なので、自分の所感多めでまとめていきます。
#### 今回は[「オブジェクト指向でなぜつくるのか(著 平澤章)」](https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A7%E3%81%AA%E3%81%9C%E3%81%A4%E3%81%8F%E3%82%8B%E3%81%AE%E3%81%8B-%E7%AC%AC2%E7%89%88-%E5%B9%B3%E6%BE%A4-%E7%AB%A0-ebook/dp/B00ISP0QB2/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=35LBK7KM96SAZ&dchild=1&keywords=%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90

元記事を表示

リファクタリングの初歩知識・Java

# はじめに
リファクタリングに必要と思われる基本的なことを随時追加していく
基本的には、以下の書籍を参考にした

* 結城浩 著『[Java言語で学ぶリファクタリング入門](https://www.amazon.co.jp/exec/obidos/ASIN/4797337990/hyuki-22/)』ソフトバンククリエイティブ(株)刊

# 意識しておくべき原則
– DRY原則
– Don’t Repeat Your Self
– 繰り返し(重複)を避けること
– KISSの原則
– Keep it simple, stupid
– 設計の簡潔性は大切、不必要な複雑性は避けるべき
– YAGNI原則
– You ain’t gonna need it
– 機能は実際に必要となるまでは追加しないのがよい

# 前提知識
– OOP(オブジェクト指向プログラミング)の基礎的な理解
– クラスとインスタンスの関係
– アクセス修飾子
– 継承(抽象クラスとインタフェース)
– オーバーライド、オーバーロード

元記事を表示

getPackageManagerでインストールアプリ一覧が表示されない(SDK30・Android11)

これまでgetPackageManager()#getInstalledPackages()を用いれば簡単に端末内のインストールアプリ情報を取得することができました。
しかし、Android 11(SDK30)からは単に下記のようなコードを記載するだけではシステムアプリ情報しか取得できなくなりました。

**例)デバイス内のインストールアプリをLog出力する**

“`MainActivity.java
PackageManager pm = getApplicationContext().getPackageManager();
List appInfoList = pm.getInstalledPackages(0);
for(int i =0;i

元記事を表示

VSCodeでJavaの開発環境を構築!

Visual Studio Code (VSCode) で Javaの開発環境を構築してみました。

### 開発環境
OS : Windows10
VSCode : Version 1.52.1

### 手順
– [JDK] インストール
– [Java Extension Pack] インストール
– [Java.home] で [JDK] へパスを通す

## JDK (Java SE Development Kit) をインストール!
[JDK15ダウンロードページ](https://www.oracle.com/java/technologies/javase-jdk15-downloads.html) へアクセス
Windows x64 に合わせて**【jdk-15.0.1_windows-x64_bin.exe】**をダウンロードします。
その後、画面の指示に従いデフォルト設定でインストール。
![2021-01-10_21h15_42.png](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

Spring Boot + Java + GitHub認証ログイン

OAuth2を使ったSSOに苦戦したので、備忘録として残しておきます。

1. GitHubで「OAuth Apps」のクライアントIDとクライアントシークレットを生成する。
1. GitHubを開く
2. 右上のプロフィール画像を押下し、「Settings」を押下
3. サイドバーの「Developer Settings」を押下
4. サイドバーの「OAuth Apps」を押下
5. [New Auth App]ボタンを押下
6. 「Application name」に任意でアプリケーションの名前を入力
7. 「Homepage URL」に作成中のアプリのトップページのURLを入力、ローカル環境で作成中なら「http://localhost:8080」
8. 「Authorization callback URL」に「http://localhost:8080/login/oauth2/code/github」を入力
9. 上記の手順で作成が完了したらクライアントIDとクライアントシークレットを控えておく

2.

元記事を表示

2分探索法の練習

#やったこと概要
基本情報処理技術者試験のアルゴリズムを自己流で練習として書いてみました。

##他のアルゴリズムでも使う用の共通部品
線形探索法などの練習でも流用できるように作ったクラス。

###探索結果をプリントするクラス。
“`java:MessagePrinter.java
/**
* 探索結果のメッセージをプリントするクラス
*
* @author hatena
*
*/
import java.util.List;

public class MessagePrinter {

public void printFoundMessages(int targetNumber, List targetList) {
System.out.println(“リストの中に探索対象の数” + targetNumber + “が存在しました。”);
System.out.println(“探索対象リストは” + targetList + “でした。”);
System.out.println(“探

元記事を表示

線形探索法の練習

#やったこと概要
基本情報処理技術者試験のアルゴリズムを自己流で練習として書いてみました。

##他のアルゴリズムでも使う用の共通部品
2分探索法などの練習でも流用できるように作ったクラス。

###探索結果をプリントするクラス。
“`java:MessagePrinter.java
/**
* 探索結果のメッセージをプリントするクラス
*
* @author hatena
*
*/
import java.util.List;

public class MessagePrinter {

public void printFoundMessages(int targetNumber, List targetList) {
System.out.println(“リストの中に探索対象の数” + targetNumber + “が存在しました。”);
System.out.println(“探索対象リストは” + targetList + “でした。”);
System.out.println(“探

元記事を表示

Eclipse + Codewind で、コンテナ化された Java Web アプリを開発してみる

2020年8月頃に、IBM のクラウドネイティブアプリ/コンテナ向け開発環境「Accelerators for Teams(Appsody Stacks)」を紹介いたしました。
※ Accelerators for Teams を、以下 「AfT」 と略します。

・[「Appsody Stacks」を30分 x 3回で理解できるかやってみる(1回目)](https://qiita.com/masa03/items/7fc548466094cdb8d9a8)
・[「Appsody Stacks」を試してみる(2回目:パイプラインで自動化)](https://qiita.com/masa03/items/3506343797b48beaf634)
・[「Appsody Stacks」を試してみる(3回目:GitHubとパイプラインの連携)](https://qiita.com/masa03/items/6f98c6090b673898447c)

前回は、Appsody Stacks の CLI環境である appsody CLI の利用方法を紹介しましたが、プログラミング では VSCo

元記事を表示

WSWSL2 Docker VSCodeでJava開発環境を構築

# WSL2 Docker VSCodeでJava開発環境を構築

WSL2とDockerとVSCodeで開発環境を作るのがホットな話題だったので試してみたのですが、
作ったものの開発環境の動作が重すぎてドはまりしました。
オチとしては開発ソースを軽量Linuxのフォルダ内でなくWindowsフォルダにおいていたのが原因でした。
自分への戒めのため手順を残しておきます。

## WSL2のインストール

### Linux 用 Windows サブシステムを有効にする

管理者として PowerShell を開き、以下を実行します。

~~~powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
~~~

### 仮想マシンの機能を有効にする
管理者として PowerShell を開き、以下を実行します。

~~~powershell
dism.exe /online /enable-feature /featurename:

元記事を表示

ThymeleafでTimestamp型をフォーマットする

“`java
@GetMapping(value = “”)
public String init(Model m) {
LocalDateTime ldt = LocalDateTime.now();
Timestamp ts = Timestamp.valueOf(ldt);
m.addAttribute(“ts”, ts); // ts = 2021-01-09 17:38:27.918333
return “index”;
}
“`

“`html


“`

元記事を表示

【Java】全角⇔半角の変換

・参考
[TERASOLUNA Server Framework for Java 7.6文字列処理](http://terasolunaorg.github.io/guideline/5.6.1.RELEASE/ja/ArchitectureInDetail/GeneralFuncDetail/StringProcessing.html?highlight=%E6%96%87%E5%AD%97%E5%88%97%E5%87%A6%E7%90%86#stringprocessinghowtousefullhalfconverter)

# ライブラリの追加
https://mvnrepository.com/artifact/org.terasoluna.gfw/terasoluna-gfw-string

“`xml:maven


org.terasoluna.gf

元記事を表示

リダイレクト先に値を渡す(メッセージ表示)

リダイレクト先でメッセージを表示させたかったが少し手こずったので学習記録用記事

###リダイレクトで遷移先に値を渡す

値を渡す側のコントローラー?

“`Controller.java

@RequestMapping(value=”/create”, method=RequestMethod.POST)
public String create(RedirectAttributes redirectAttributes){

redirectAttributes.addFlashAttribute(“message”,”リダイレクト先に表示したいメッセージ”)

return “redirect:/index”
}
“`

値を受け取る側のコントローラー?

“`Controller.java

@GetMapping(“/index”)
public String getIndex(@ModelAttribute(“message”) String message,Model model){
model.addAttribute(“messag

元記事を表示

[.net、Java連携]C#.netで.jarを実行するンジャー

どうしてもJavaを使わないとできない処理をC#.netから起動する必要が出た場合、
その実装に困りますよね…
そこで参上!C#.netで.jarを実行するンジャー!!(ここまで茶番)
# Java側のプログラム
java側のプログラムはmainメソッド(関数)を入れます。
main関数のコマンドライン引数”args”でC#から値を受け取ります。
下記サンプルプログラムでは、1つの引数でメッセージ:msgを受け取り、それを表示しています。

“`java:Sample.java
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
if (args.length <= 0) { System.out.println("出力メッセージなし"); } else { System.out.println("出力メッセージ:" + args[0]); } // Enterキー入力待ち // 参考:https://stackoverflow.com/questions/261844

元記事を表示

パスワード変更機能

Springでパスワード変更機能の実装
学習の記録用として記載

##DBのパスワードと入力されたパスワードの照合

・パスワードはハッシュ化されたものが登録されている状態

※DBにハッシュ化(暗号化)してパスワードを保存⬇️

“`java:Service.java
@Autowired
PasswordEncoder;

public Entity save(Entity user, String rawPassword){

String encodedPassword = passwordEncoder.encode(password);
user.setPassword(encodedPassword);
return Repository.save(user);
}
“`

####PasswordEncoderとは
Spring Securityが提供するクラスで、DBなどにログインパスワードを保存するときの暗号化に関わるクラス
・パスワードを暗号化(ハッシュ化)をする
・認証時に入力のパスワードと、保存した暗号化パスワードが一致するかを確認

元記事を表示

特定の maven task を実行したときだけ ClassLoader で目的のクラスがスキャンできない

# TL;DR
– `maven-surefire-plugin` というのが、 classpath 内のたくさんの jar ファイルを `surefirebooter~~~.jar` というものにまとめてしまう
– `ClasspathHelper.forClassLoader()` の後に `ClasspathHelper.forManifest()` を挟むことで内部の URL 一覧を取得できる

# 詳細
実行時に特定の interface を持つサブクラスをスキャンするために、次のようなコードを書いてました。

“`java
List classLoadersList = new LinkedList<>();
classLoadersList.add(ClasspathHelper.contextClassLoader());
classLoadersList.add(ClasspathHelper.staticClassLoader());

Reflections reflections = new Refle

元記事を表示

javaの基礎の基礎②~if文とswitch文~

・if文
①if文を使うと「もしも・・・ならば」という文章をプログラムで表現することができます。
 「もしも降水確率が50%以上なら、傘を持っていく」をプログラムで書いてみましょう。
 (if文を説明するためのプログラムの断片です)

 if (p >= 50) {
  System.out.println(“傘を持っていきます”);
}

 これは「変数pの値を調べ、その値がもしも50以上なら、”傘を持って行きます”と画面に表示する」という動作をします。
 上のプログラムは次のような構造をしています。
 
 if (条件式) {
  条件が成り立つときの処理
}

 条件式の値は、「条件を満たすときtrue(トゥルー)」、「満たさないときはfalse(フォルス)」になります。
 条件式の値は、必ずこのどちらかになります。
 ()でくくられた条件式の後には{}でくくられた処理がやってきます。これは条件が満たされたときに行う処理の範囲を示します。
 if文は、()の中の条件が満たされるかどうかを調べ、もし満たされるなら{}の中を実行し、満たされなければ{}の中を実行しません。

元記事を表示

OTHERカテゴリの最新記事