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

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

【#1】PythonでMinecraftを作る。【下調べと設計】

Part of pictures, articles, images on this page are copyrighted by Mojang AB.

![minecraft.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535270/4c03684c-1ee7-4b2f-01b7-92836d12a930.png)

#概要
世界的に超有名なサンドボックスゲーム「Minecraft」をプログラミング言語「Python」で再現するプロジェクトです。

##きっかけ
僕がプログラミングに初めて触れたのは、「Minecraft」がきっかけでした。

4年以上前の事です。
Minecraftにおける「MOD」と呼ばれる所謂改造コンテンツに興味があり、「自分でも作ってみたい!」とプログラミングの世界に足を踏み入れました。
総プレイ時間は数万時間を超えており、色々と思い出深いゲームの一つです。

小学校低学年の頃からウェブサイトを制作したりと、多少はクリエ

元記事を表示

良いコードの書き方

# 概要

チームによる継続的開発を前提としたコーディングのガイドライン。
特定の言語を対象としたものではないが、主に静的型付けのオブジェクト指向言語を想定している。
サンプルコードは別段の定めがなければSwiftで記載。

### ガイドラインの目的

– 生産性を高め、メンテナンスコストを下げる
– バグが生まれづらくする
– 開発メンバー(特に新規参加者)がコードを理解しやすくする
– 初心者プログラマーの教育

### 内容の説明
タイトルの頭についた【:star:数字】は重要度。
高いほどシステムに与える影響が大きいが、低いものの方が影響が小さく改修しやすいものが多い。

# 【:star:5】変数を少なくする

変わり得る値は複雑さを生み誤解やバグに繋がるため、プログラムは変数が少ないほど問題が生まれづらい。
プログラミングの大原則として、変数は必要最低限を心がけ、むやみに増やさないようにする。

また、変数はスコープや寿命が大きいほど悪影響が大きいため、変数を使う場合はスコープと寿命を最小にするよう心がける。
基本的には以下の上のもの程スコープが広くなるので使用

元記事を表示

Twitter4Jの使いかた

Twitter4Jを使ってみました。
流れは、
アカウント申請をする。3~4時間で許可出ます。(Botにするとか、簡単なものに使うとすれば。)
アクセスtokenをメモする。
mavenのpox.xmlにTwitter4Jに必要なビルドを統合する。
Javaでコード書いてメモしたtokenを入力する。
実行してタイムラインを確認する。です!
詳しくは[Github](https://github.com/hatsuki0111/Twitter4J)にあげています。

元記事を表示

新卒1年目でJavaGold合格できたので勉強法について語っていく

#はじめに
Javaの資格で最も難しい試験は?
と聞かれた時に**JavaGold**と答えるエンジニアは多いと思います。

その最難関の資格であるJavaGoldを**1年目で合格できました**ので、

– 勉強内容
– 1年目で合格できてどうだったか

についてお話したいと思います。

#勉強開始時のスペック
###業務経験
– 新卒1年目(学生時代は文系でプログラミングとは無縁)
– 3ヶ月間の研修(Java/SQL/JDBC/Servlet/JSPなど)を経て、Javaの案件に配属
→ただし、当時コードを書くことは殆ど無かった

###保有資格
– 基本情報技術者(1年目の4月に受験し合格)
– JavaSilver(1年目の8月に受験し合格)

####合格体験記は以下参照
– 基本情報技術者:[【未経験】基本情報技術者試験に合格できる勉強法【合格体験記】]
(https://qiita.com/ebichan_88/items/8409c9b99bf5a2977cc7)
– JavaSilver:[【JavaSilver】Java SE8 Silverに合格した勉強

元記事を表示

クラス、メソッドの呼び出し方

###Foodクラスのfruitsメソッド(Food.java)
“`Food.java
public class Food {
// 以下のメソッドすべてを、Personクラスに移動してください

public static String fruits(String fruitsName) {
return fruitName;
}
“`

###Mainクラスのmainメソッド(main.java)
Food.java内にあるFoodクラスのfruitsメソッドを呼び出し。

“`Main.java
public class Main {
public static void main(String[] args) {

Food.printData(Food.fruits(“apple”));
Food.printData(Food.fruits(“straeberry”, “Smith”), 65, 1.75, 80.0);
}
}
“`

別のクラスのメソッドを呼び出すときは、クラス名、メソッド名の前にそれぞれ、呼び

元記事を表示

spring-bootでリソースファイルを外出しする方法

解決したいことはタイトル通りです。spring-boot では、DB接続情報などを src/main/resources 配下の application.properties に書くことが多いですが、このファイルを外部に置いて、コンパイル時とは別の定義で動作させる方法説明をします。
以前、[『Mavenを使ってリソースファイルをJARの外部に配置する方法』](https://qiita.com/greencoffeemaker/items/18b5bb938dbc5a4e21c0)というのを投稿しましたが、それの spring-boot 版です。

# 解決方法
spring-boot では実に簡単です。外部に配置したいリソースファイル(application.properties等)を別フォルダに配置して、実行時のクラスパスとして指定するだけです。

つまり、my-java-app.jar を実行するとして、external_resource フォルダの application.properties を読み込みたい場合、external_resource フォルダを実行時クラスパス

元記事を表示

何でも言うことを聞いてくれるアカネチャン

# 聞いてよアカネチャン!
[俺] 良いこと思いつきました!
[ア] なんや?
[俺] 俺, アカネチャンの列挙型をつくります!
[ア] あ ほ く さ
[俺] …
[俺] ええええええええええええええええええ(ry

※[元ネタはこちら](https://www.youtube.com/watch?v=OVuYIMa5XBw) – 何でも言うことを聞いてくれるアカネチャン

# キッカケは友人との会話
その場のノリで話してただけなので,詳しい経緯なんてものは覚えていません.

とりあえず『何でも言うことを聞いてくれるアカネチャンの返事はboolean型みたい』みたいな話をしたんだと思います.

理想は

“`java
if (Seyana) {
System.out.println(“True!!”)
}
“`

ですが,Seyanaをboolean型の代わりとして直接使うことはできないので,できる範囲でやってみました.お遊びです,何のメリットもありません.

# 作るよアカネチャン!
## アカネチャンのセリフ
アカネチャンのセリフは採用したもの以外は受け付けたくな

元記事を表示

VM引数を変更しつつマイクロベンチマークする方法

VM引数を変更しながら、マイクロベンチマークを取りたいケースってあると思うのですが、
JITコンパイラに影響のある引数の場合、ただプログラムを実行して時間を計測するのみでは
うまくその影響を測れません。なぜなら、プログラムの実行中にVMが判断したタイミングでJITコンパイラが走りコードが最適化されるので、どの程度そのVM引数の変更の効果があったのか測れないからです。

# JMH の利用
このようなケースでは、ベンチマークツールである JMH を使用するのが便利です。
JMH の使用方法についてはこちらのの[記事](https://www.codeflow.site/ja/article/java__java-jmh-benchmark-tutorial)で説明されていますので、以降では、JMHでのベンチマークの際にVM引数を指定する方法を説明します。

# VM引数の指定方法

以下のようにベンチマークを行うメソッドにForkアノテーションを付与し、JvmArgsAppend属性を利用することによってVM引数を指定することができます。
この例では、「-XX:-Inline」を指定てい

元記事を表示

apkからjavaファイル生成(BytecodeViewer式)

dex2jarでは精度がいまいちだったので精度の良かった物を紹介します

# Bytecode Viewer
https://bytecodeviewer.com/

dex2jarの代わり。
GUI操作です。JD-GUIのような類ですね。
普通に便利です。apkやdex、jar、zip、classがデコンパイルできます。
デコンパイル後は好きなデコンパイラーで見れます。
apkから出たclassの保存とか、デコンパイラーでデコンパイルしたjavaの出力とか出来ます。
ただjavaへの出力は不安定です。

# Procyon
https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler

Bytecode Viewer内臓のデコンパイラーですね。
安定していると思います。

手順としてはBytecode ViewerのFile->Save As Zipでapkから出たclassを保存。
できたzipをProcyonでデコンパイル。

ソースコードを見て比較とかしましたがFernflowerより良いなと思った点が2つ。

元記事を表示

javaでAtCoder Beginner Contest 152を解く

AtCoder Beginner Contest 152お疲れ様でした!
[公式ページ](https://atcoder.jp/contests/abc152)

今回の自分の書いたコードは[こちら](https://github.com/ko-flavor/atcoder-java/tree/master/atcoder/src/abc/abc152)
結果はA-DまでAC、EがWAでした。

以下簡単に解説します。

##[問題A](https://atcoder.jp/contests/abc152/tasks/abc152_a)

引数のNとMを比較する問題。
同じ場合は`Yes`、違う場合は`No`を出力すればOK

##[問題B](https://atcoder.jp/contests/abc152/tasks/abc152_b)

aをb回繰り返した文字列とbをa回繰り返した文字列のどちらが**辞書順**ではやいかを出力する問題。
辞書順なので、aとbのうち小さいほうが先です。

aとbの小さい方をaとbの大きい方ぶん繰り返した文字列を出力できたらACです。

##[問題

元記事を表示

Javaで実行しているディレクトリの絶対パスを取得する方法

##はじめに
Qiita初投稿です。
#環境
java1.8.0_221
#やりたいこと
`C:\Users\Miyayu\IDEA\example\example.jar`を実行しているとする。
`C:\Users\Miyayu\IDEA\example`(String型)を取り出したい。
#コード
“`java
FileSystems.getDefault().getPath(“”).toAbsolutePath().toString()
“`
これだけ!かんたんでしょ?
##指定したファイルの絶対パスを知りたいときは
`.\expdir\hoge.json`の絶対パスを知りたい

“`java
FileSystems.getDefault().getPath(“expdir”,”hoge.json”).toAbsolutePath().toString()
“`

元記事を表示

【Java】多重forループを一重にする方法

**ネタです**

# はじめに
Javaに限らず,プログラムを書いていると何重ものforループを書かなければならない時が発生します.

例. int型三次元配列の全ての要素を1にしたい.

“`java
final int n = 10;
final int[][][] cube = new int[n][n][n];

for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { cube[i][j][k] = 1; } } } ``` しかし,このようなループはネストが深くなったり行数が無駄に増えるため,プログラムの保守性が悪化する原因となります. そこで,多重forループを一重にする方法を考えます. # forループの構文 問題を解決するために,まずはforループの構文を確認して行きます. [Eclipse JDT](https://help.eclipse.org/2019-12/index.jsp?topic=%2F

元記事を表示

Javaのインライン展開についてちょっと実験してみる

JavaではJITコンパイラがインライン展開を行っているということは聞いたことがあるのですが、それによってどれだけの恩恵を受けているのか、ちょっと実験してみたくなりました。

## そもそもインライン展開とは
詳細は[Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E5%B1%95%E9%96%8B)を参照してください。
要はメソッドの呼び出しにはオーバーヘッドがあるため、メソッド内の処理をメソッドの呼び出し側に埋め込んでしまえば、メソッド呼び出しのコストを抑えることができるということですね。JITコンパイラが必要に応じてこれを行っています。

## 実験

今回試してみるコードは以下の通りです。StringBuilderに文字列をappendするだけのメソッドを用意して、繰り返し呼び出してみました。
同じメソッドを何度も呼び出していますので、インライン展開される/されないによってパフォーマンスに差が出るのではないかと仮説を立ててみました。

“`java:I

元記事を表示

macOS での Java のバージョン管理

ちょっと真の本題で書いたことを調べようと思って、いろいろ調べた結果の備忘録です。
でも、真の本題の方は、いまいち解決していないという。。

## Java のバージョンについて

Java については、まず、言語そのものと、その動作環境である JVM があり、それらについて、公式の仕様の部分と、公式 (Oracle) やその他さまざまなところが出している実装の部分があります。

Oracle が出している Java の仕様は Java SE (Standard Edition) と呼ばれます。
アプリケーション実装に踏み込んだ仕様である Java EE (Enterprise Edition) (現在は Jakarta EE として移管) や組み込み用途での Java ME (Micro Edition) というのがあった影響で、 Java SE と名付けられていますが、完全に歴史的経緯ですね。

Oracle による Java 実装は、通称 [Oracle JDK](https://www.oracle.com/technetwork/java/javase/downloads/in

元記事を表示

【2020年3月5日まで】RDS証明書を更新する for java

# プロローグ

[新しい SSL/TLS 証明書を使用して MySQL DB インスタンスに接続するようにアプリケーションを更新](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/ssl-certificate-rotation-mysql.html)

2020年3月5日までにRDSのcaを更新してくださいという話。
手順通りやれば問題ないのだが、いくつかハマりポイントがあったので記事にした。

# 前提

・java
・tomcat
・mysql
・証明書はJKS形式
・クライアントの証明書を先に更新し、mysqlの証明書は後から更新
(同時の場合は、ダウンロードする証明書が異なる)

# 手順

### 1.証明書の取得

先にクライアントを更新するので、2015,2019のバンドル版をダウンロード
場所は現在と同じでよいかと。

“`
$ cd /etc/pki/java
$ wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bun

元記事を表示

過去1世紀の間に日本で出回ったすべての本のデータベースを作ろう

# 0. 初めに(対象読者など)

釣りタイトルです。すみません。
本当は、過去1世紀の間に日本で出回ったすべての **「699 テレビ・ラジオ」に分類される**本のデータベースを作ります。
また、 **国会国立図書館のサーバへの自動アクセスを大量に行うこととなるので、くれぐれも自己責任でお願いします**。

対象読者

– 国会国立図書館サーチを(API使わずに)自動で行いたい人
– javaがある程度できる人
– privateメソッドで怒らない人
– 自己責任を理解できる、精神的に大人の方(極稀に、これに残念ながら該当しない社会ガク者の方がいます)

# 1. 実験
国会国立図書館サーチで詳細検索し、分類記号「699」だけを条件に検索すると、
1925年~2020年の、テレビやラジオに関する本をすべて検索することができる。
 しかし、誠に残念ながら、一回の検索で見ることができるのは、上位500件の結果のみである。(501件目以降は、そもそも検索結果に表示されない)
また、出版年

元記事を表示

Yellowfinのカスタムフォーマッターを作って数値のマイナスを△(三角)で表示する

経理関係の資料などでマイナスの数値を「△100,000」のように表記するケースがあります。
Yellowfinでは **カスタムフォーマッター** を使えばこのような表示を実現することができます。

カスタムフォーマッター等の **Yellowfinのプラグイン** はJavaで開発します。
今回はEclipse(を日本語化した [Pleiades](https://mergedoc.osdn.jp/))を用いています。

なお、開発方法はYellowfinのオンラインマニュアルに記載があります。
[プラグイン開発の基礎](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=10945559)
[カスタムフォーマッターの作成](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=10945478)
本記事では端折りながら進めていきますので、適宜マニュアルを参照してください。

# Javaプロジェクトの作成

新規Javaプロジェクトを作成します。Javaのバ

元記事を表示

[MySQL][java]日時を受け取る

##概要
MySQLに登録された日時をjavaで取得する方法、javaからMySQLへ日時を登録する方法を紹介する。
MySQLへ接続する方法はこちらを見て頂きたい。https://qiita.com/QiitaD/items/d605b07e849e3bec0722

##MySQLに定義する列
日時をtimestamp方で定義する。列名は”date_time”、フォーマットは”yyyy-MM-dd HH:mm:ss”である。

##MySQLからjavaでの取得

~~~java
String mySql = “select * from table_name”;//日時のあるデータを取得するSQL文
ResultSet rs = stmt.executeQuery(mySql); //SQL実行、データを取得
while (rs.next()) {
rs.getTimestamp(“date_time”); //取得データから日時情報を取得
}
~~~

##javaからMySQLへ日時を登録する

元記事を表示

Java合併 & マージを解除Excelセル

本論文では、どのように使うかを紹介しますSpire.XLS for Java Excel Java合併 & マージを解除Excelセル

使用ツール: [Free Spire.XLS for Java無料版](https://www.e-iceblue.com/Introduce/free-xls-for-java.html)

Jarファイルの取得と導入:

Method 1:ホームページを通じてjarファイルのカバンをダウンロードします。ダウンロード後、ファイルを解凍して、libフォルダの下の[Spire.xls.jar](https://www.e-iceblue.com/Download/xls-for-java-free.html)ファイルをJavaプログラムに導入します。

Method 2:[maven倉庫](https://www.e-iceblue.com/Tutorials/Licensing/How-to-install-Spire.PDF-for-Java-from-Maven-Repository.html)設置による導入。

合併Excelセル

Spi

元記事を表示

Java 11 (OpenJDK: AdoptOpenJDK) を Homebrew で macOS にインストールする

## 今回の環境

– macOS Catalina 10.15.2

## インストール

公式資料通りにインストールする。
[GitHub \- AdoptOpenJDK/homebrew\-openjdk: AdoptOpenJDK HomeBrew Tap](https://github.com/AdoptOpenJDK/homebrew-openjdk)

“`
$ brew tap AdoptOpenJDK/openjdk
$ brew cask install adoptopenjdk11
“`

## java_home コマンドでインストールされたディレクトリの場所を確認

“`
$ /usr/libexec/java_home -v 11
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
“`

## 環境変数 JAVA_HOME と PATH を設定

必要に応じて .bash_profile や .bashrc などに記述する。

“`
export JAVA_HOM

元記事を表示

OTHERカテゴリの最新記事