- 1. [Java] n次多項式の効率的な計算
- 2. jEnvでJavaのバージョンを管理しながら、Gradleの実行環境を整える(fish shell 編)
- 3. 本日の曜日を取得する方法
- 4. Javaのシステムプロパティの記載順について
- 5. React NativeのビルドにAndroid Studioに同梱されているJavaを使う
- 6. Mac + IntelliJ IDEAでJUnit5が動くようになるまでの手順メモ
- 7. エンジニア向けSNSアプリを孤独にフルスクラッチした時の技術要素とか苦労話とか
- 8. Tomcatのインストールと自動起動の設定
- 9. 国民の祝日クラス 修正版
- 10. 【Android Studio】【Java】画面を縦で固定する方法
- 11. TERASOLUNAのJdbcCodeListの読み込みが遅いので一度に複数登録出来るようにしてみた
- 12. SpringBoot2.2+ThymeleafでHTTP PUT/DELETE メソッドを扱う
- 13. JavaのXML組み立てクラスを自作
- 14. GitLab CI/CDを使ってCI実施!(Java+MySQLの環境でJUnitテストを自動化)
- 15. ダメダメコード集 屍(過去の僕)を乗り越えて…
- 16. Java 同一クラスのオブジェクトのプロパティ同士の差分だけ取り出す汎用メソッド
- 17. Visual Studio CodeでJava (その2)
- 18. javaのhello world、コンパイル、実行
- 19. 【Python版】なぜ,あなたはJavaでオブジェクト指向開発ができないのか
- 20. Javaのコンソールプログラムの起動をGraalVMのnative-imageで高速にしてみる
[Java] n次多項式の効率的な計算
多分何番煎じかわからんくらいありふれた内容だと思うけど、そんなこと知るか
## “Math.pow()“からの離脱
なんか適当に「Java 累乗」とかで検索すると“for“文回して解けとか“Math.pow()“を使うと一発で求まるとか言ってるのが割とすぐ見つかる
$n$次多項式を解こうと思うとまず“Math.pow()“が思い浮かぶので、
$$ Ax^3 + Bx^2 + Cx + D $$
みたいな多項式をメソッドで用意しようとすると“`Java
static double f(double x) {
return A * Math.pow(x, 3) + B * Math.pow(x, 2) + C * x + D;
}
“`のようにしがちになっちゃうと思う
ただ、“Math.pow()“って引数が“double“型であることから分かるように$x^{0.3}$だったり、$x^{log4}$だったり、指数部が整数でない場合に用いると真価を発揮するもんなんだと思ってて、逆に指数部が整数である演算なんかで使うとかえって無駄に時間かかっちゃうこ
jEnvでJavaのバージョンを管理しながら、Gradleの実行環境を整える(fish shell 編)
## はじめに
とあるプロジェクトでサーバサイドエンジニアさんから [Corda](https://www.corda.net/) を使ったリポジトリをいただきました。内容としては、CordApp と Corda RPC を実行する Ktor Web API Server で構成されているものです。Kotlin のビルドは Gradle で行われている様子なので、それらの実行に必要な環境をセットするのが今回の目的です。## 環境
– 執筆日:2020年2月2日(????)
– macOS 10.15.2(Catalina)
– fish 3.0.2
– Homebrew 2.2.4## まずはJavaとGradleが必要
#### 1. Homebrew の更新確認
“`
$ brew update
“`
#### 2. Homebrew のエラーチェック
“`
$ brew doctor
“`
#### 3. Javaインストール
“`
$ brew cask install java
“`
#### 4. Gradleインストール
“`
$ brew inst
本日の曜日を取得する方法
#曜日を取得する方法
###曜日
String[] weekName = {“日曜日”, “月曜日”, “火曜日”, “水曜日”,
“木曜日”, “金曜日”, “土曜日”};@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);Calendar calendar = Calendar.getInstance();
int week = calendar.get(Calendar.DAY_OF_WEEK) – 1;
Log.v(“checkCalendor”,” + ” + weekName[week]);}
###その他の情報の取得方法
int year = calendar.get(Calendar.Y
Javaのシステムプロパティの記載順について
定期的に毎回悩んで、思い出しているのでメモしておきます。
Javaのコマンドに付けてメモリの確保量などを定義する「システムプロパティ」
ですが記載順によってクラスから参照できる/できないが明確になっています。**環境**
“`
$java -version
java version “1.8.0_131”
“`**サンプルクラス**
「kusatest」というシステムプロパティをクラスから参照して出力します“`java:Test.java
import java.util.*;public class Test {
public static void main(String[] args) {
System.out.println(“start”);
System.out.println(System.getProperty(“kusatest”));
System.out.println(“end”);
}
}
“`**参照できる例**
“`sh
$ java -Dkusatest=a
React NativeのビルドにAndroid Studioに同梱されているJavaを使う
React NativeでAndroid向けにビルドする場合、環境にJavaがインストールされている必要がある。
メジャーなのはOracleの配布しているJava。しかしAndroid StudioにはそれでなくOpen JDKが同梱されている。
Android Studioのと合わせた方がトラブルが生じにくいだろうし、またOracle Javaのライセンス変更[^1]を気にする必要もなくなるため、Android Studioに同梱されているJavaをReact Nativeのビルドに使う。
[^1]: [「Oracle Java」のライセンスが変更 ~無償利用は個人での開発・テスト・デモ目的のみに](https://forest.watch.impress.co.jp/docs/news/1180607.html)
## 環境
– macOS Mohave 10.14.6
– react-native: 0.61.5## 手順
`.bash_profile`に下記のように記述する。
“`sh
export PATH=$PATH:/Applications/”Andr
Mac + IntelliJ IDEAでJUnit5が動くようになるまでの手順メモ
# はじめに
タイトルの通りの雑多なメモです。個人的な備忘録なので、画面キャプチャもない手抜き記事です。
また、「こうやったらできたよ」という内容なので、もっといい方法があるかもしれません。## 環境
* macOS Catalina# 内容
## JDKのインストール
もともと入っていたので今回作業をしてないですが、以下のような手順でやった覚えがあります。
まずHomebrewをアップデートします。“`
$ brew update
“`次に下記コマンドでインストール(現時点で最新版のJava13がインストールされる)。
“`
$ brew cask install java
“`## IntelliJ IDEAのインストール
もともと入っていたので(ry
公式サイトからインストーラをダウンロードして、ポチポチやるだけだと思うので省略してもいいですよね?いいってことにしよう。## Gradleのインストール
下記コマンドでインストールします。“`
$ brew install gradle
“`が、既に入っていると怒られたので下記で再インス
エンジニア向けSNSアプリを孤独にフルスクラッチした時の技術要素とか苦労話とか
# 作ったもの
エンジニア同士、デザイナ同士、エンジニアーデザイナが一緒に「なんか作ろうぜ」「なんか勉強しようぜ」というつながりを実現できるSNSアプリEDICPAT
https://play.google.com/store/apps/details?id=com.engineer_forum.engineer_forum# 作った動機
エンジニア向けSNSアプリってもう色々あるんでしょうけど、既存の団体に自分が参加する形式とか、作ったものを見てもらうとかの形式だったりすると思います。そうじゃなくて、未経験者とか、フリーランスエンジニアとか、**そこら辺の仲間と「勉強会やろうぜ」とか「何か作ろうぜ!」ってやりたい。**休日とか、ライトなノリで。自分自身がそういうのに
Tomcatのインストールと自動起動の設定
# はじめに
# 使用した環境
* OS
* CentOS 7.7(1908)
* Java(Amazon Corretto)
* Java 1.8.0_242
* Tomcat
* Tomcat-9.0.30# Javaのインストール
* Javaは[こちらのページ](https://aws.amazon.com/jp/corretto/)のリンク先から、Amazon Corretto8をダウンロードしました。
* Amazon CorrettoはRPM形式が選択できるため、パッケージ管理がしやすい`yum`コマンドでインストールしています。“`shell-session
[root@akagi ~]# yum install -y https://corretto.aws/downloads/latest/amazon-corretto-8-x64-linux-jdk.rpm
[root@akagi ~]# java -version
openjdk version “1.8.0_242”
OpenJDK Runtime Environment Corrett
国民の祝日クラス 修正版
こんにちは、ヨースケです。去年投稿した[国民の祝日を表示するクラス](https://qiita.com/ysk75/items/0d045cc744d372e984b1)で成人の日のように〇月の第〇月曜日という部分が間違っていたので修正版をここで載せておきます。以前はCalendarクラスのWEEK_OF_MONTHを使っていましたが、これはその日がその月の第何週目にあたるかを取得するものでした。どういうことかと言うと、![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534506/6c78f826-b3fd-21f9-7281-c94fb640099f.png)
1月13日が成人の日です。これを判定しようとすると以前のプログラムでは“`java:machigai.java
//省略
int month, day, youbi, week;
Calendar calendar = Calendar.getInstance();public void holiday(){
【Android Studio】【Java】画面を縦で固定する方法
#使用するファイル
・AndroidManifest.xml#追加するコード
13行目のみ“`
android:screenOrientation=”portrait”
“`
TERASOLUNAのJdbcCodeListの読み込みが遅いので一度に複数登録出来るようにしてみた
TERASOLUNAの`JdbcCodeList`はデータベースからSQLで検索した結果をコードリストとして登録する機能で、よく使われていると思います。
1つや2つのコードリストなら大したことはないのですが、コードリストの数が数百のクラスになってくると起動にかかる時間が耐えがたいレベルにまでなってきます。そこで下記のように`UNION ALL`で複数のコードリストを1度に登録できないものかと。
“`sql
SELECT code_bean_name, code_id, code_name FROM t_sample_codes WHERE code_bean_name = ‘CL_ORDERSTATUS’
UNION ALL
SELECT code_bean_name, code_id, code_name FROM t_sample_codes WHERE code_bean_name = ‘CL_HOGE’
ORDER BY code_bean_name, code_id
“`コードリストは1コードリスト1Bean定義となっているので、複数のコードリストを登録するには
SpringBoot2.2+ThymeleafでHTTP PUT/DELETE メソッドを扱う
SpringMVCのControllerではHTTPメソッドとしてPUT/DELETEを扱うことが出来ますが、HTML5ではいまだにこれらのHTTPメソッドを扱うことができません。
このギャップを埋めるためにこれまでは、– ControllerのマッピングではPUT/DELETEメソッドへのマッピングを定義する
“`Controller.java
@Controller
@RequestMapping(“/item”)
public class ItemController {
…
@DeleteMapping(“{id}”)
public String delete(@PathVariable(“id”) Long id) {
service.delete(id);
return “redirect:/item”;
}
}
“`– thymeleaf側でput/deleteメソッドのフォームを定義するとpostに置き換えて_methodというhiddenパラメータを埋め込む
“`template.h
JavaのXML組み立てクラスを自作
# XML組み立てクラス
DOM使うのもいいけど、自作しちゃおうかな~。って作ってみたもの。
## 下記3つのクラスを実装
Java11以上推奨。
古いJavaを使用している場合は適宜修正すればOK。### 1/3 – XmlBuilder.java
“`java
import java.util.List;
import java.util.function.Consumer;/**
* XMLを組み立てるクラスです
*/
public class XmlBuilder {/**
* 組み立てる元となるDtoのリスト
*/
ListdtoList; /**
* 組み立て結果となる文字列
*/
String text = “”;/**
* コンストラクタ
* @param dtoList 組み立てる元となるDtoのリスト
*/
public XmlBuilder(ListdtoList) {
this.dtoList = dtoList;
GitLab CI/CDを使ってCI実施!(Java+MySQLの環境でJUnitテストを自動化)
# GiLab CI/CD 構築
初投稿です・・・!
目標「GitLabにPushしたら、自動的にJUnit5のテストが走り、GitLabのWeb管理画面で結果が見れる。」
プロジェクトの環境は、
– Java11
– MySQL8
– Tomcat9
– Eclipse2019-6
– Junit5
– Gradle5GitLab自体は自身で立てたホストです。
GitLab.comでも同じようにできるはずです。図解すると、こんな感じの環境を構築しました。
![cicd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575391/35fc8381-1125-c4f6-a57a-73517d9e187d.png)
## どういう仕組み?
ローカルPCからGitLabにPUSH→GitLab CI/CD機能により、Runnerが起動される→Runnerがビルド&テストをしてくれる。
## Runnerって?
GitLab Runnerといって、ビルド&テストをしてくれるマシンだと思っ
ダメダメコード集 屍(過去の僕)を乗り越えて…
# はじめに
過去に使っていた祖父のノートPCの中身を見返してみた。
今も人の事言えた実力はないけど 過去の自分はもっとひどい。
ということで共有。# さぁつるすぞ…
## 謎な変数名
“`javaint b = event.getBlock().getId();
“`
b…
ちなみにこの後こういうコード書いてた“`java
int b = event.getBlock().getId();
if(b == useb){
//…
“`なんのこっちゃ。
一目でどういう値を保持しているのかわかるような変数名がいいですね。
そういう意味では繰り返し文の例で使われる“i, j, k“の文化も個人的には好きではないです
(良悪はさておき)## ふざけたメソッド名
“`php
public function getArrayURLJsonDataText($key, $jurl){
“`
なんのこっちゃ。PHPDocもないし処理見てみるかー
“`php
public function getArrayURLJsonDataTe
Java 同一クラスのオブジェクトのプロパティ同士の差分だけ取り出す汎用メソッド
### 導入
String.equals(“A”,”B”)みたいな感じで,オブジェクト同士の比較はそれぞれあるけど,
`オブジェクトの中のプロパティ同士の比較と,その相違がある部分の抽出ってどうやるの?`
と思って調べました.やりたいこととしては,以下のような感じのオブジェクトがあったときに,
(オブジェクトの中身をjsonで説明するのがわかりやすいと思ったので,jsonで表現しました.使用言語はあくまでもJavaです)~~~json
//object1
{
“id”:1,
“name”:”オリジナルです”,
“description”: “同一です”,
}//object2
{
“id”:2,
“name”:”クローンです”,
“description”: “同一です”,
}
~~~このパターンの`Object1`と`Object2`のプロパティ同士を比較して,
相違があるプロパティのみ出力してくれる,以下のようなやつが欲しいです.~~~java
//以下のような例で比較できて,
CompareHelper.diff(Object1,Ob
Visual Studio CodeでJava (その2)
# Visual Studio CodeでJava (その2)
Windows7のサポートがついに終了したので、Windows10にこれまでの開発環境を構築することにした。
そういえば、1年以上前に[こんな記事](https://qiita.com/gitcho/items/a6c0bb781bc395e43ec4)を書いたのを思い出したので、Javaの開発環境をeclipseやIntelljではなくVSCodeにしてみようと思い、Windows Subsystem for Linux(WSL)のUbuntuに構築するまでを記事にまとめることにした。
[以前の記事](https://qiita.com/gitcho/items/a6c0bb781bc395e43ec4)で、Ubuntuに環境構築する方法はまとめたので、今回は主にWSLとVSCodeの連携をメインに記事にする。## 構築する環境
– Windows 10 Pro 64bit [1809]
– Windows Subsystem for Linux(WSL)のUbuntu 18.04を前提とする
– OpenJDK
javaのhello world、コンパイル、実行
完全に忘れてたので覚え直し。
classの中にmain()がある。
class名とファイル名は一緒にして、拡張子は `クラス名.java`
コンパイルすると `クラス名.class`ができる
# **実行は `java クラス名` で、拡張子をつけない!!!**
“`java
$ cat HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println(“Hello World!”);
}
}# compileする
$ javac HelloWorld.java# ファイルができる
$ ll HelloWorld.class
-rw-r–r– 1 root staff 426B 2 1 15:18 HelloWorld.class# 実行時、拡張子はつけない!!!
$ java HelloWorld
Hello World!# 拡張子をつけると、こんなエラーが出る
$ java HelloWor
【Python版】なぜ,あなたはJavaでオブジェクト指向開発ができないのか
## 概要
オブジェクト指向再学習のために「なぜ,あなたはJavaでオブジェクト指向開発ができないのか」を購入したが、Java・Rubyでしか[公式サンプル](http://gihyo.jp/book/2005/4-7741-2222-X/support)がなかったのでPythonで作成してみました。
(あくまで参考程度にしてください。私も初心者です。)## Lesson 5 まで(ジャンケンプログラム)
### 全体の処理進行
“`python:object_janken.py
from judge import *
from player import *
from tactics import *# 審判(斎藤さん)のインスタンス生成
saito = Judge()# プレイヤー1(村田さん)の生成
murata_tactics = RandomTactics()
murata = Player(“村田さん”,murata_tactics)# プレイヤー2(山田さん)の生成
yamada_tactics = StoneOnlyTactics()
yamad
Javaのコンソールプログラムの起動をGraalVMのnative-imageで高速にしてみる
# 概要
このエントリでは、[GraalVM](https://www.graalvm.org/)の「[Native Image]」(https://www.graalvm.org/docs/reference-manual/native-image/) の機能を用いて、Javaのコンソールプログラムの起動時間を短くすることを扱います。
## 要約すると
あれこれやったら、特定の計算機(OCIのマイクロインスタンス相当)の性能で、JVMでの起動に1秒程度かかっていたプログラムが、ネイティブバイナリ化することで、起動が100ms程度になりました。
## 想定読者
– Javaについて基本的な知識がある方
– GraalVMのネイティブバイナリ作成について興味がある方# やりたいこと
– Javaで書いた、コンソールアプリケーションがある。別エントリの「Javaでコンソールでのキー入力を1文字ずつハンドルしたいときにJLineを使う」(https://qiita.com/hrkt/items/885f1c3526af03939c54)で筆者が書いたものです。
– コ