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

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

燃やす埋める問題とProject Selection Problemの整理

2021年3月から毎日問題が公開されている「[競プロ典型90問](https://qiita.com/e869120/items/1b2a5f0f07fd927e44e9)」、皆さま解いていらっしゃいますでしょうか?

一昨日、第40問として公開された「[Get More Money](https://atcoder.jp/contests/typical90/tasks/typical90_an)」が解説を読み、その後いろいろな記事を見ても理解が難しかったので整理してみました。
当然のことながらこの問題の解法に触れますので、問題に挑戦したい方はこの記事は後からお読みいただくことをお勧めします。

– [AtCoder常設ジャッジ](https://atcoder.jp/contests/typical90/tasks/typical90_an)
– [問題画像](https://github.com/E869120/kyopro_educational_90/blob/main/problem/040.jpg)
– [公式解説](https://github.com/E869120/

元記事を表示

Java Gold SE11 合格体験記

## はじめに

入社時の新人研修の一環で、Java Gold SE11をなんと~~**3週間で**~~取得できました。

・・・嘘ではないですけど、ちょっと盛りました。実際のところ**Silverに2週間・Goldに3週間の1ヶ月強**です。Silverから続けて受験したから合格できたところがあるので。

Silverの体験記はインターネットの海にたくさんありますが、**Goldの合格体験記は少なかった**ので記事を書くことにした次第です。参考になれば幸いです。

## 勉強開始時のスペック・受験理由

入社前は大学の研究でpythonを3年、アルバイトでPHP(WordPress)を3年、Swiftを半年使っていました。基本独学です。

Javaに関しては完全に未経験ですが、オブジェクト指向についてはおおむね理解していたところです。ラムダ式やStream APIも(他言語と細かい仕様は違うと思いますが)読めばわかるくらいの知識がありました。

受験理由についてです。

研修の間にSilverの取得が必須だったのですが、せっかちなのでさっさと受験して合格しました。その結果、**配属前

元記事を表示

最近学んだBuilderパターンと有効な状況を自分なりに整理してみた

Javaの開発に限らずオブジェクト指向プログラミングをするにあたり、
デザインパターンというものを知っていると、詳細設計やコーディング時に非常に重宝する。

デザインパターンの中でも今回はBuilderのデザインパターンについて整理しようと思う。

この記事は基本的なJavaのBuilderパターンの考え方を私なりに説明し、
玄人でなくても即実践投入できるようにがんばります。

Javaに慣れてきたらこれ↓

VSCodeでJava開発 – H2データベースとJDBC接続するまで

Java でIDEといえば Eclipse や IntelliJ な気がします。しかしそれほど本気ではないが楽しく気軽に Java コーディングしたいという時に、VSCodeで簡単にデータベース接続まで理解する。以上を表題の3つで実現する事を考えてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/e4ca76a7-d69c-d190-e884-308e5cfa8cc4.png)

以下2つが分かりやすかった。

https://qiita.com/takuma-jpn/items/b49785a314fb4db85775

https://qiita.com/msakamoto_sf/items/d65947ddf509acbc98cb

## 予備知識

### Visual Studio Code で Java を使うにはJDK11が必要になりました

https://od10z.wordpress.com/2020/08/01/vscode-java-req

元記事を表示

[備忘録]Java/Android 実行環境での改行コード取得

#改行コード

– CR: 復帰、\r
– LF: 改行、\n
– CR + LF: \r\n

\n とか \r はエスケープシーケンスで、16進数の数値にすると `0X0A`, `0X0D`らしい。
また、WindowsではCR+LF、unix系ではLF、MacOSではCRなど、実行環境によって使用する改行コードが異なる。

#実行環境での改行コード取得方法

“`java
final String BR = System.getProperty(“line.separator”);
“`

これで、(アンドロイドに限らず)このコードの実行環境でのエスケープシーケンスが取得できる。

##アンドロイドでの改行コード
↓実行してみた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139020/054ab9cc-5050-a576-b3ed-4c3e1bb9fb96.png)
アンドロイドでの改行コードは”\n”(LF)ということが分かった。

###(おまけ)(どうでもいい話)

元記事を表示

Java Security Managerを有効にしてSpring Bootを起動する

Spring BootをJavaのSecurity Managerと一緒に起動することで、お手軽にサンドボックス化できます。例えば外部から送られてくるスクリプトをアプリケーション上で実行しなきゃいけないけど、セキュリティが不安な時とか。

# Java Security Manager
JavaのSecurity Managerという機能を有効にすると、プログラムが実行してもよい操作を制限することができます。例えばファイルや環境変数の読み書き、ネットワークへの接続など、想定外の挙動をした場合にそれを検知して、失敗させることができます。
許可する権限はポリシーファイルというものに書き連ねます。

“`example.policy
grant {
// 全て許可する
permission java.security.AllPermission;
};
“`

そして、Javaを実行する際に“`-Djava.security.manager“`と“`-Djava.security.policy“`オプションも付けます。“`-Djava.security.mana

元記事を表示

2021年 給料が一番高いプログラミング言語 5選

多くの人が高給のためにプログラミング業界を選びますが、世界で最も収益性の高いプログラミング言語は何か知っていますか?
##1)Java
「Javaは時代遅れですか?」と尋ねるかもしれません。もちろん、そうではありません。
なぜJavaはまだ人気があるのですか?Javaは最も古く、堅牢なプログラミング言語の1つです。また、主にAndroidアプリケーション開発に使用されるオブジェクト指向言語です。これが、今日でも使用されている主な理由の1つです。しかし、Kotlin(Android開発にも適しています)のようなプログラミング言語の出現により、Javaの人気は低下しています。
![Java.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482909/d279971b-2269-8c56-943d-a8e72896a1c6.jpeg)
ただし、Javaは依然として最も高額なプログラミング言語の1つであり、かなりの需要があります。Indeedによると、ソフトウェア開発会社はJava開発者に興味があり、毎年10万

元記事を表示

Kotlin学習記②


# はじめに
### 今回はKotlinのデータ型についてJavaとの比較を交えながらまとめたいと思います。

# 記事投稿の経緯
### Kotlinのデータ型はIntなどが存在するが、Javaにはint,Integerの2パターンが存在する。(プリミティブ型と参照型)
### そこで、Kotlinのデータ型がJavaのデータ型とどのように対応しているのかについて疑問を持ち、調査することにした。

# 実装
### IntelliJ IDEAを用いてKotlinコードからJavaコードにDecompileして確認してみる。
### Tools > Kotlin > Show Kotlin Bytecode > 「Decompile」ボタンクリック

“`Kotlin
import kotlin.jvm.JvmStatic

class KotlinDecompile {
fun foo(): Int { return 1 }

fun foo2(): Double { return 1.

元記事を表示

【Java】ラムダ式を何となく理解する

#ラムダ式を理解するための前置き
##関数オブジェクト
JavaSE7まででは、変数に代入できるのは第一級オブジェクト(データ、インスタンスなど)のみであるとされていたが、
JavaSE8以降では、***関数***も変数に代入できるようになった。

関数にとって、名前はあってもなくても良いものである。
入力(引数)と出力(返り値)さえあれば関数の役割は果たせる。

例えば…
===============================
職場の上司に、
「この手順書に沿って折り紙折っといて~、午前中に100個作っておくように!」
と指示され、手順書と折り紙100枚を渡された(どんな仕事やねん)

しかし、手順書には折り方が載ってあるだけで、
何が出来上がるのかとか、手順書の名前なんてものはない。
それでも、手順に沿って折り紙をしていった結果、
なにか良くわからないけど100個分完成した
===============================

…みたいな感じである。

プログラミングにおける関数も同様で、
「名前なんか無くても入力・出力さえあれば関数でいいよね~」
って考えでJ

元記事を表示

【Java アルゴリズム修行⑯】文字列探索 ~力まかせ法~

###文字列探索とは

ここまでは数列からの探索や、数列を期待通りにソートするなど、
数字を中心に扱ってきましたが、次に文字列を扱う探索を学んでいきたいと思います!

文字列探索というのがどういうことかという話なんですが、
**ある文字列中とは別の文字列が含まれているかどうかを調べ、含まれていれば、その位置も調べるということ**です。

例えば、`STRING`という文字列から`ING`を探索すれば、それは含まれていることになり、
文字列中の4番目に位置しているということになります。

**探索される側の文字列はテキスト、探索する文字列をパターンと呼ばれることが多いようです。**
今回はその文字列探索の中でも基礎的な力まかせ法について見ていきましょう。

###力まかせ法とは

力まかせ法とは、その名の通り、
**パターンが現れるまで、テキストを頭からひたすら走査していく**という、
効率もへったくれもない筋肉質なアルゴリズムのようです。。笑

テキストが `ABABCDEFG` で、パターンが `ABC`としたら、

最初の `ABA`と比較し、合ってなかったら1文字ずつずらして照合

元記事を表示

MinecraftでMODを開発したい#5

*MinecraftでMODの開発をします*
*試行錯誤を書いていくだけのものになります*

##概要
MODをjar形式にし、一般の人に配布して使えるように

##動作環境 2021/05/12
||Version|
|:-:|:-:|
|Mac OS Big Sur|11.1|
|IntelliJ IDEA|2021.1.1|
|AdoptOpenJDK (HotSpot)|1.8.0_282|
|Minecraft|1.16.5|
|Forge|36.1.0|

##目次
- 設定
- 確認

##設定
build.gradleのversionを1.16.5-1.0.0に変更
IntelliJ IDEAのGradle Tool Windowを開き、Tasks > build > buildをダブルクリックで実行

##確認
IntelliJ IDEAの画面下側に表示される実行ログに「BUILD SUCCESSFUL」と表示され、build/libs/にexamplemod-1.16.5-1.0.0.jarが生成されたことを確認してください。

他のMODを導入する時と同様に、j

元記事を表示

MinecraftでMODを開発したい#4

*MinecraftでMODの開発をします*
*試行錯誤を書いていくだけのものになります*

##概要
MOD一覧などに表示される情報の登録

##動作環境 2021/05/12
||Version|
|:-:|:-:|
|Mac OS Big Sur|11.1|
|IntelliJ IDEA|2021.1.1|
|AdoptOpenJDK (HotSpot)|1.8.0_282|
|Minecraft|1.16.5|
|Forge|36.1.0|

##目次
- リソースパックの情報
- mods.toml
- ロゴ画像
- build.gradle

##リソースパックの情報
“`src/main/resources/pack.mcmeta
{
“pack”: {
“description”: “Example Mod Resources”,
“pack_format”: 6
}
}
“`

##mods.toml
“`src/main/resources/META-INF/mods.toml

modLoader = “j

元記事を表示

MinecraftでMODを開発したい#3

*MinecraftでMODの開発をします*
*試行錯誤を書いていくだけのものになります*

##概要
特殊な機能を持たないブロックの追加

##動作環境 2021/05/12
||Version|
|:-:|:-:|
|Mac OS Big Sur|11.1|
|IntelliJ IDEA|2021.1.1|
|AdoptOpenJDK (HotSpot)|1.8.0_282|
|Minecraft|1.16.5|
|Forge|36.1.0|

##目次
– プログラムの記述
– Block Stateの記述
– ブロックモデルの記述
– アイテムモデルの記述
– テクスチャの配置
– 翻訳設定
– ルートテーブルの記述
– 確認

##プログラムの記述
“`src/main/java/com/ドメイン名/examplemod/ExampleMod.java
package com.tntmodders.examplemod;

import net.minecraft.block.AbstractBlock;
import net.minecraft.block.Block

元記事を表示

Kotlin学習記


# はじめに
### 今回はKotlinのnull安全についてJavaとの比較を交えながらまとめたいと思います。

# null安全とは?
### null安全とは、コードからnull参照の危険性を排除することを目的としたKotlinの機能であり、null参照を使用とするとコンパイルエラーが発生する。
### この機能はJavaで頻出のNullPointerExceptionを避けるために有効であると考えられます。

# Non-Null型とNullable型
### KotlinにはNon-Null型とNullable型が存在しており、以下のように実装する。

“`Kotlin
var str : String = “あいうえお” //Non-Null型
str = null //コンパイルエラー
“`
“`Kotlin
var str2: String? = “かきくけこ” //Nullable型
str2 = null //問題なし
“`
### 上記のように、nullを格納できないNon-N

元記事を表示

【Java】ArrayListの使い方

#ArrayListとは
Javaの通常の配列では、最初から配列の数を決める必要がありました。

“`java
a=new int[10]
“`

これでは、後から配列の数を変更できなかったり、最初から配列の数が決まっていないときなどに不便ですね。
ArrayListは、このような不便を解決してくれる**予め用意されたJavaのクラス**です。

#ArrayListの特徴
下記のような特徴があります。
1. **オブジェクトであればどんな型でも扱える**
2. **配列に値を後から追加することができる**
3. **追加した順に並ぶ**
4. **nullも値として追加できる**
5. **重複した値も追加できる**
6. **スレッドセーフではない**

通常の配列に比べて、各段に使いやすいですよね。
実際の開発では、配列よりもArrayListを使うことが多いようです。

#ArrayListの書き方
ArrayListは、次のように書きます。

“`java
ArrayList<型> リスト名 = new ArrayList<型>();
“`
「型」には、クラス名を指定

元記事を表示

初学者なりにPythonのクラス定義を調べてみた

# Pythonのクラス定義の特徴

自分はJavaからプログラム言語の世界に入ったため、静的型付け言語のJavaやC#の記述方法が好き。
そのため、Pythonの勉強を始めたときも、クラス定義はJavaのように、クラス宣言、フィールド、コンストラクタ、メソッドのように作ったりしていた。

ただ、当然ながらPythonはJavaとは違うので、適当に作るとうまく動かなかったり、ネットに転がっている既存のPythonのクラスを見てもいまいちよく分からない記述があったりで、理解するのになかなか苦労した。

というわけで本記事は、Pythonのクラス定義に関する自分向けもしくは初学者用の備忘録だ。
自分もPythonに触れ始めてまだ間もないため、誤っている点がいくつかあると思う…

## Pythonのクラス定義の基本

Pythonのクラス宣言は以下のようにやるらしい

“`python:python
class TestClass:
pass

tc = TestClass()
“`
passは何もしないとい

元記事を表示

MinecraftでMODを開発したい#2

*MinecraftでMODの開発をします*
*試行錯誤を書いていくだけのものになります*

##概要
特殊な機能を持たないアイテムの追加

##動作環境 2021/05/12
||Version|
|:-:|:-:|
|Mac OS Big Sur|11.1|
|IntelliJ IDEA|2021.1.1|
|AdoptOpenJDK (HotSpot)|1.8.0_282|
|Minecraft|1.16.5|
|Forge|36.1.0|

##目次
– プログラムの記述
– アイテムモデルの記述
– テクスチャの配置
– 翻訳設定
– 確認

##プログラムの記述
“`src/main/java/com/ドメイン名/examplemod/ExampleMod.java
package com.ドメイン名.examplemod;

import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraftforge.eventbus.api.IEventBus;
impo

元記事を表示

ざっくり理解するプログラミング入門基礎編(Java)第2回

この記事は、ざっくり理解するプログラミング入門基礎編(Java)第1回の続きです。
読んでない方はぜひそちらを読んでからこの記事を読んでください。

https://qiita.com/tntn70200751/items/e7540f1650d2a64bdf92

今回は前回に引き続き、Javaにおける基本的なプログラムの書き方について、解説していきたいと思います。
この辺は何回もコードを書くうちに必ずわかるようになると思うので、わからなかったらとりあえず、こういうものがあるんだなくらいの感じで進めてもらっても構いません。

##Javaプログラムの書き方2
今回の内容は以下の二つです

* コンピューターに計算をさせる。
* 変数について知る

###コンピューターに計算をさせよう
まずは、プログラムでコンピューターに計算をさせる方法です。計算が使えるようになると一気にプログラミングをしている感が強まると思います。計算といってもそんなに難しくはないので、数学が苦手な方もそんなに身構えずにやっていきましょう。

####四則演算
まず計算の基本の足し算、引き算、割り算、掛け算です。

元記事を表示

How to Update Android Apps

I’ll explain how to update Android Apps. I am using Android Studio.

[Steps]
1. Open “build.gradle” file on the Android Studio.
2. Update Version. We must set the versionCode as an Integer.
(ex.) You must write the versionCode and version name in the file like this.
versionCode 4 to 5
versionName “1.0.4” to “1.0.5”
3. Click “Sync Now” on the upper right.
4. After the sync, Click Build on the menu. And then, choose Generate Signed APK…
5. Choose “Android App Bundle” on another pop-u

元記事を表示

MinecraftでMODを開発したい#1

*MinecraftでMODの開発をします*
*試行錯誤を書いていくだけのものになります*

##概要
環境構築をする

##動作環境 2021/05/12
||Version|
|:-:|:-:|
|Mac OS Big Sur|11.1|
|IntelliJ IDEA|2021.1.1|
|AdoptOpenJDK (HotSpot)|1.8.0_282|
|Minecraft|1.16.5|
|Forge|36.1.0|

##目次
– IntelliJ IDEAのインストール
– Forgeのインストール
– Example Modの削除

##IntelliJ IDEAのインストール
ダウンロードページから「Community」をダウンロード
ダウンロードしたインストーラを実行し、デフォルト設定のまま画面に従ってインストール
IntelliJ IDEAを起動し、タイトル画面で「New Project」を選択
「Project SDK」から「Download JDK」を選択
「Version」に「1.8」、「Vendor」に「AdoptOpenJDK (HotSpot)」を

元記事を表示

OTHERカテゴリの最新記事