- 1. SpringBootアプリ開発中に「NotReadablePropertyException」が発生して悔しい思いをした話。
- 2. JUnit5 使い方メモ
- 3. java クラスの使い方
- 4. Java8 ラムダ式を変数に代入して再利用する
- 5. Javaエンジニアが今さらRubyの基礎文法を覚えるために対比した その2(クラス、メソッド編)
- 6. 五言語 基礎文法比較(C#,Java,Python,Ruby,Kotlin)
- 7. Java入門_第5章_練習問題5_4
- 8. API呼ぶ【準備編】
- 9. 初心者がVSCodeでSpringToolsSuite環境を作成する
- 10. Javaのスレッドの数や状態を確認するコマンド
- 11. java クラス、インスタンス、オブジェクト
- 12. JMockit StringのコンストラクタでUnsupportedEncodingExceptionをmockする
- 13. 【Kotlin】日時(Date)を安全に送信する/解釈する【JavaScript】
- 14. やれるかも?Java EE
- 15. Kotlinの開発環境構築とJavaからKotlinに移行する時のメモ
- 16. RecyclerView上のボタンを押した時の処理をリストごとに変化させる
- 17. Webシステム構築(超基礎)②:APサーバ構築と基本動作
- 18. SpringBoot + RedisでAPIへアクセス回数の制限機能を実装してみよう
- 19. ImageJの基本的な機能まとめ
- 20. Minecraft Moddingのすゝめ「Moddingをしてよかったことと役立つサイト集」
SpringBootアプリ開発中に「NotReadablePropertyException」が発生して悔しい思いをした話。
表題の通りエラーにはまってしまって、コードを何度見返してもあってるようにしか思えかった。んで試行錯誤して何とか解決したけど非常に腑に落ちなく、でも他の人でもありえそうだなぁと思ったので備忘録として残します。
## エラー内容
“`java:コンソール
2019-12-27 09:13:27.304 ERROR 21044 — [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: “class path resource [templat
JUnit5 使い方メモ
# JUnit5 とは
言わずと知れた Java のテスティングフレームワークの、2019年現在最新のメジャーバージョン。# 環境
“`console
> gradle –version
————————————————————
Gradle 5.6.2
————————————————————Build time: 2019-09-05 16:13:54 UTC
Revision: 55a5e53d855db8fc7b0e494412fc624051a8e781Kotlin: 1.3.41
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM: 11.0.4 (AdoptOpenJDK 11.0.4+11)
OS: W
java クラスの使い方
昨日は三つの用語について
書きましたが、今日は実際の使い方について
書いて行きます。# 基本
クラスの基本的な使い方を確認するために、以下の内容のプログラムを作成します。* 参照クラスのオブジェクト変数を生成
* そのクラスのメンバ変数の参照
* メソッドの呼出し
* 取得した値を出力## メンバ変数
クラス定義をしている”{“と”}”の中
つまり波括弧の中に記述され
そしてメソッドの外に記述されている変数のことです。
インスタンス変数とも言います。“`java:メンバ変数
void nowTime(){
System.out.println(“現在 ” + time + ” です”);
}
“`# コードの例
“`java:TestClass.java
class TestClass {
// メンバ変数
public String name = “Samurai”;// メソッド
public String testMethod(){
return “Engineer”;
}
Java8 ラムダ式を変数に代入して再利用する
ラムダ式はオブジェクトと同じように、変数に代入して再利用ができます。
filter() メソッドを例にして、ラムダ式を変数に代入して再利用してみます。
以下のリストから、8文字以上の文字列のみをフィルタで取り出してみたいと思います。“`java
final Listmonths =
Arrays.asList(“January”, “February”, “March”, “April”, “May”, “June”, “July”, “Augast”, “September”, “October”, “November”, “December”);final List
jewelries =
Arrays.asList(“garnet”, “amethyst”, “aquamarine”, “diamond”, “emerald”, “pearl”, “ruby”, “sardonyx”, “sapphire”, “opal”, “topaz”, “turquoise”);
“`8文字以上の文字列のみをフィルタするラムダ式を lo
Javaエンジニアが今さらRubyの基礎文法を覚えるために対比した その2(クラス、メソッド編)
# はじめに
2回目はクラスとかメソッドです。# 環境
[paiza.io](https://paiza.io/)でこういう時は実行すると楽ですこれを作った時のバージョンは以下です。バージョンは[ヘルプ](https://paiza.io/help?locale=ja-jp)から確認できます。
Ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
Java openjdk version “12” 2019-03-19# スコープの話
JavaもRubyもpublic,protected,privateが存在していますが、概念が違うので、項を分けました。publicは同じで制限無しなのですが、protectedとprivateは違います。
詳しくは[こちら](https://qiita.com/tbpgr/items/6f1c0c7b77218f74c63e)を参考にさせていただきつつJavaエンジニア的な解釈で書いています。
なお、package privateの概念はRubyにはないようです。
##
五言語 基礎文法比較(C#,Java,Python,Ruby,Kotlin)
# 五言語 基礎文法比較
(C#,Java,Python,Ruby,Kotlin)#### 目次
– [コンソール出力](#コンソール出力)– [変数宣言](#変数宣言)
– [条件分岐](#条件分岐)
– [繰り返し処理](#繰り返し処理)
– [コレクション](#コレクション)
### コンソール出力
##### C#
“`C#
//Systemは省略可能
System.Console.Write(“Hello “);
Console.Write(“World”);
>>> Hello WorldConsole.WriteLine(“Hello “);
Console.WriteLine(“Workd”);
>>> Hello
World
“`
##### Java
“`java
System.out.print(“Hello “);
System.out.print(“World”);
>>> Hello WorldSystem.out.println(“Hello “);
System.out.pr
Java入門_第5章_練習問題5_4
#仕様書に沿った「calcTriangleArea」と「calcCircleArea」の作成
仕様書:
| | |
|:—————–|:——————|
|メソッド名|calcTriangleArea|
|戻り値の型|三角形の面積(double)|
|第1引数|三角形の底辺の長さ、単位はcm(double bottom)|
|第2引数|三角形の高さ、単位はcm(double height)|
|処理内容 |引数を使用して面積を求め、それを戻す。|| | |
|:—————–|:——————|
|メソッド名|calcCircleArea|
|戻り値の型|円の面積(double)|
|第1引数|円の半径、単位はcm(double bottom)|
|処理内容 |引数を使用して面積を求め、それを戻す。|#解答
“`Main.java
1 public class Main {
2 public sta
API呼ぶ【準備編】
##API呼ぶ
以下4つのパートに分かれています。(〇〇編は適当につけましたゆるして)
API呼ぶ【準備編】
[API呼ぶ【コア編】](https://qiita.com/RO018/private/19a9f1740e0dffbb7844)
[API呼ぶ【ハンドリング編】](https://qiita.com/RO018/private/609ce3dcb3079d44b69a)
[API呼ぶ【コール編】](https://qiita.com/RO018/private/1c9f4e603cd15b95acea)##準備編
まずは必要なモデル、Json変換、自作Exceptionを用意します。– モデル:リクエスト/レスポンスを入れる箱
– Json変換:API通信用にリクエスト/レスポンスをJsonに変換する
– Exception:結果に応じたExceptionを作り、処理の分岐の準備をする###モデル
Getter/Setterは省略してます“`リクエスト.java
package model;public class RequestDto {
初心者がVSCodeでSpringToolsSuite環境を作成する
## 目的
業務でSpringBootを使ったWEBAPIとお友達になりそうなので勉強のため
windows10環境にSpring tool suite 4の開発環境を作成。
とりあえずサンプルサイトを作ってみる。| 種類 | 名前 | バージョン |
| :-: | :-: | :-: |
| IDE | [Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/) | 1.14.1 |
| プラグイン | [Spring Boot Extension Pack](https:\\/marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack) | 0.0.8 |
| プラグイン | [Java Extension Pack](https:\\/marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack) |
Javaのスレッドの数や状態を確認するコマンド
Javaアプリケーションサーバの保守運用をしていると、現在起動しているスレッドの数や状況を知りたいということがあります。一般的なJavaアプリケーションサーバであれば、何らかのヘルスチェック機能が付属していると思いますが、状況によってはそのような機能が利用できないこともあると思います。そのような状況で、どのようにすればスレッドの数や状況を知ることができるでしょうか?
# 例
以下の`Server.java`はJavaアプリケーションサーバを模したプログラムで、3つの子スレッドをforkします。
“`java:Server.java
import java.util.ArrayList;
import java.util.List;public class Server{
public static void main(String[] args) throws InterruptedException {
// 3個の子スレッドをforkする。
Listthreads = new ArrayList<>();
java クラス、インスタンス、オブジェクト
今日はざっくりと書いて行きます。
クラス、インスタンス、オブジェクトについて簡単に書きます。# プログラムの状態
プログラミングに置いて
データは一塊の状態で考えるものとします。
そこでよく使われ、よく混乱しやすい三つの用語について説明します。* オブジェクト→紙
* クラス →記入フォーマットが書かれた紙 (身体測定用紙など)
* インスタンス→記入フォーマットにデータが書き込まれた紙 (個人情報が書かれた身体測定用紙)ざっくり書くとこんな感じです。
## オブジェクト
世の中にある状態と振る舞いを持つひとまとまりもの。
クラスとインスタンスは両方とも
オブジェクトになります。例:紙を想像して下さい。
## クラス
オブジェクトの共通の状態と振る舞いを集めた一つの型。設計書。
例:記入フォーマットが書かれた紙を想像してください。
身長、体重、視力などの身体測定用紙がわかりやすいかと## インスタンス
クラスから生成される実態。設計書から生成される実態。例:身体測定用紙に個人情報が書かれた状態
JMockit StringのコンストラクタでUnsupportedEncodingExceptionをmockする
# はじめに
カバレッジ100%達成しろというお達しを受けた底辺IT作業員が様々な制約から一つの答えを導き出した記録です。
# まとめ
そもそも引数にStringを渡しているせいなので、可能な限りCharsetを使うようにしよう。
# テスト対象コード
“`Java
try {
String foo = new String(“あいう”.getBytes(“Shift_JIS”), “Shift_JIS”);
} catch (UnsupportedEncodingException e) {
// ここを通したい
throw HogeException(e);
}
“`# テストコード
“`Java
new MockUp() {
@Mock
void $init(Invocation invocation, byte[] bytes, String charsetName) {
if (Arrays.equals(“あいう”.getBytes(“Shift_JIS”), bytes && c
【Kotlin】日時(Date)を安全に送信する/解釈する【JavaScript】
この記事は、[Java Advent Calendar 2019](https://qiita.com/advent-calendar/2019/java) 22日目の記事になりました。
`Java`とか言いつつ`JavaScript`や`Kotlin`の話が出てきますが、分量的には`DateTime API`の話が主なので大体`Java`です。
# 解決したい問題
以下の記事の通り、`JavaScript`の`Date`型には多くの罠があります。
日本人であれば「日時を送信したら1日巻き戻って届いた」的な状況は経験された方も多いのではないでしょうか?– [JavaScript の Date は罠が多すぎる \- Qiita](https://qiita.com/labocho/items/5fbaa0491b67221419b4)
そんな罠だらけの`Date`型を安全に送信/解釈します。
# 解決方法
ものすごくざっくり言うと、規格に則って文字列として送信し、規格に則って文字列から解釈すれば安全に取り扱えます。
今回は例として、`ISO 8601`規格に則って処理を行いま
やれるかも?Java EE
学校の課題で**Java Servletを使ってなんか作ろう!**みたいなお話が舞い込んできたので、それのお話。
僕はLaravelをよく使っていて、それのように使えるなぁと感じたので対応させながら紹介します。
# Servletがコントローラのような立ち位置
“`java
package servlets;import models.Room;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;@WebServlet(“/”)
publi
Kotlinの開発環境構築とJavaからKotlinに移行する時のメモ
JavaからKotlinにシステム開発をシフトしていこうと思い、色々と調べた時のメモを残していこうと思います。
自分はサーバサイド寄りの人間でして、Kotlinのサーバ寄りの内容をまとめています。# Kotlin(読み方「コトリン」)とは
Kotlinは、Javaの統合開発環境であるIntelliJ IDEAで有名なJetBrainsが開発したオブジェクト指向プログラミング言語です。言語構文自体はJavaとは互換性がない独自方式ですが、コンパイルされたコードはJava VM(仮想マシン)上で動作するため、**これまでのJava資産の多くを流用できる**という特徴を持っています。「これまでのJava資産の多くを流用できるこれまでのJava資産の多くを流用できる」という点について、いままで、Javaを使ってきた人からすると過去の資産も流用できたり、環境も共存できるので、これからKotlinに移行していこうって思いになりました。
# 開発環境構築について
KotlinはIntelliJを使うのが主流的な流れになっていますが、自分はEclipse派なので、Eclipseを中心に開発環
RecyclerView上のボタンを押した時の処理をリストごとに変化させる
#はじめに
Androidアプリ開発でリスト表示を作るためにRecyclerViewを利用しますよね。
RecyclerView上にボタンを設置して、リストから他の画面に遷移する時、**何番目のリストのボタンが押されたか**を知りたい時ありますよね。
RecyclerView.Adapter上で「何番目のボタンが押されたか」は割とすぐ取得できるのですが、それをMainActivityで使う時に少しハマったのでメモ。#RecyclerViewについて
概要についてはこちらの記事が分かりやすかったのでこちらを参照ください。
[RecyclerViewの基本](https://qiita.com/naoi/items/f8a19d6278147e98bbc2)#やりたいこと
– RecyclerView上にボタンを配置し、ボタンを押した時に画面遷移させたい。
– ボタンを押したリストの行数によって遷移先での挙動を変化させたい。画面遷移する時のボタンを押した時の処理のイメージはこんな感じ。
遷移先の画面に対して、何番目のリストのボタンが押されたかを教えてあげたいちなみにRecy
Webシステム構築(超基礎)②:APサーバ構築と基本動作
#目的
Webシステム構築を目的として、超基礎的なAPサーバの構築と動作を確認する。
(APサーバとしてはTomcatを利用する。)#環境条件
– APサーバ
– EC2:t2.micro
– OS:Red Hat Enterprise Linux 8 (HVM), SSD Volume Type
– Disk:汎用SSD(GP2) 10GB
– Tomcat:Apache Tomcat 9
– Java:JDK 1.8セキュリティグループの設定等はいい感じに。
#構築手順
“`
ec2-userでログインrootユーザにスイッチ
$ sudo su –openjdkパッケージの存在確認
# yum info java-*-openjdkopenjdkパッケージのインストール
# yum install -y java-1.8.0-openjdk
Complete!の出力を確認する。javaのインストール確認
# java -version
openjdk version “1.8.0_232”
OpenJDK Ru
SpringBoot + RedisでAPIへアクセス回数の制限機能を実装してみよう
### はじめに
いまのところはAPIインターフェースを使う場合はめっちゃ多いと思います。ところが、APIを呼び出すの回数は多すぎたら、サーバー側の処理は遅延になるかもしれません。何か悪い影響が起こるということです。
今回はAPIへアクセス回数を制限するために、よく調べたり、深く考えたりしたうえでこの記事を書いていました。### 環境
SpringBootの知識もRedisの知識も持っている必要です。– Java
– SpringBoot
– Redis### 方法
実装方針としては、主にSpringBootとRedisを用いてアノテイションの形で実装する。
細かいところはコメントアウトを見れば、分かると思います。#### 1. アノテイションクラスを作成
“`java:AccessLimit.java
import java.lang.annotation.Retention;
import java.lang.annotation.Target;import static java.lang.annotation.ElementType.MET
ImageJの基本的な機能まとめ
ImageJはNIHで開発されたJavaベースの画像処理ソフトウェアです。
生物学研究では標準的に使われています。ImageJはオープンソースのため、多数のディストリビューションが存在し、特にFijiがよくつかわれます(Fiji is just ImageJといわれる)。
画像解析で「こういう処理がしたい」と思ったとき、Fijiにはその機能が大体は入っています。(ただし高度なものは除く。高度なことはMATLABかPythonで実装しましょう。)以下ImageJを使っていくうえで基本的な機能をまとめます。
###Stack(スタック)
例えば動画を撮った場合には、imageJには複数の画像の集まりとして読み込まれます。保存の場合もtif形式であれば、複数の画像を一つの集まり(スタック)として1つのファイルに保存することができます。
スタックとしては動画のような時間軸方向のつながりもありますが、他にも深さ(z方向)を変化させた場合のスタック(つまり3次元データをスライスしてできたスタック)や、RGBのような波長の違いによるつながり(チャンネル)があります。
ImageJではこれ
Minecraft Moddingのすゝめ「Moddingをしてよかったことと役立つサイト集」
#はじめに
私が初めてMinecraftを買ってもらったのが小学6年生、Modding― プログラムを書こうとしたのが
中学2年生の時だったと思います。当時は「Modってなんやねん!?」みたいな感じでしたので、
ひたすら適当なModで遊んで、次第に自分で作ってみたいと思うようになりました。
正直、めっちゃ高度なことはまだ全然できませんが、**挑戦してみてめちゃくちゃ良かったと思います**。今回は私がModdingをやってみたことでマイクラのModdingだから良かったと思うこと、初めてModdingする上で参考になりそうなサイトをいくつか紹介したいと思います。
#ここがええ!
– **MinecraftやModdingをしている人とのつながりができた**
同じ趣味でできた人のつながりって案外強いもので、ひっさびさにお話したら、いろいろアドバイスを頂きました!
その人は高専出身なんですが、ちゃんとした専門知識を持っている人がいると本当に心強いです。– **思うようにコードがかけた時の達成感が半端ない**
Minecraftってバージョン変わるごとにForgeの仕様だったりバニ