- 1. 例外と例外処理について
- 2. 入力制限付きEditTextへのペーストとうまく付き合う
- 3. 【AndroidStudio】 TableLayout
- 4. Enum を利用した判定ロジック
- 5. 今更ながら(Yet Another)JavaでVoIPするためのライブラリ
- 6. Spring Boot 設定値(Configuration Properties)入力をガッツリ支援する
- 7. 【AndroidStudio】RelativeLayout
- 8. 【AndroidStudio】 LinearLayout
- 9. 【環境構築】Javaで「Helloworld」をしよう
- 10. Effective Java(第3版) 項目10 equalsをオーバーライドするときは一般契約に従う
- 11. Spring Boot起動時に、required a bean of typeが出た時の解消法
- 12. VScode – Javaの環境構築
- 13. 【Java】LocalDateTimeの使い方
- 14. JAVA JPAのN+1問題について
- 15. 3週間でJavaSilverを取ろう!
- 16. 【Java Spring】 mybatisのSpring bootでの設定
- 17. Javaで1行に複数個の文字列を入力する方法
- 18. GWT の domino-ui がカッコイイ
- 19. VSCode-いろいろな言語の環境構築まとめ
- 20. Javaでグラフを入力画面から描画する(SpringBoot)
例外と例外処理について
# 例外と例外処理について
## 例外
プログラムはコンパイルが成功しても、実行時にエラーが発生する場合があります。
Javaでは実行時に発生したエラーを**例外**と呼びます。
かつ、例外が発生することを**例外がスローされる**といいます。## 例外処理
例外がスローされた際は、プログラム側で例外処理を記述していない場合は、
**プログラムが強制終了**します。以下のコードを観てみましょう。
“`
public class Main{
public static void main(String[] args){
int num = {20, 40, 60};for(int = 0; i < 4; i++){ System.out.print(num[i]); } } } ``` このコードでは、3回目のループまでは出力されます。 しかし、4回目の出力で配列の要素外にアクセスしているので、例外がスローされます。 ``` Exception in thread "mai
入力制限付きEditTextへのペーストとうまく付き合う
## editTextとコピペの関係
まず前提として、数値6桁制限のあるEditTextがあります。
※以降もこの前提で話を進めます。“` hoge.xml
android:maxLength=”6″
android:inputType=”number”
“`この時ユーザ入力が1文字ずつなら問題ないのですが、コピペによる入力をおこなうと想定外の挙動になることがあります。
### 桁数オーバーの数値をペーストするパターン
「1234567」をペースト。
画像の通りですが、あぶれた桁は切り捨てられます。
### 入力されている状態で、桁数オーバーになるパターン
画像左の状態でさらに「1234]をペースト。
【AndroidStudio】 TableLayout#■TableLayoutとは
表組みのレイアウトを作る時に使用するもの“` kotlin
“`#■TableRow
横1行にあたる範囲TableRowの中にbuttonなどのViewを渡せば
横1列になる。“` kotlin
Enum を利用した判定ロジック
“`java
public enum KensyuStsKbn {
/** 0:OK_ALL */ OkAll(0),
/** 1:OK_PART */ OkPart(1),
/** 2:NG_ALL */ NgAll(2),
/** 3:NG_PART */ NgPart(3);/**
* OK
*/
public static final KensyuStsKbn[] GpOKCheck = {
OkAll,
OkPart,
};
/**
* OKチェック
* @return true:OK / false:NG
*/
public boolean isGpOKCheck() {
return Arrays.asList(GpOKCheck).contains(this);
}}
“`
今更ながら(Yet Another)JavaでVoIPするためのライブラリ
## はじめに
Minecraftのmod開発に手を出してあれやこれやしてましたが、寄り道してJavaでのVoIPについて色々格闘してました。せっかくなので記事にしてまとめてみようと思います。今更JavaでVoIPなんて。。となる人も多いかもですが、その分逆に情報量が少なかったので参考になれば。目的はもちろんmodでの活用なので色々制限のある中での探検となりました。。
※色々調べはしたもののにわか知識のところもあるので誤りがあったらごめんなさい。。(指摘してもらえると後学のためになる&訂正します)## 調べたり試したりしたライブラリ
### JMF(Java Media Framework)
Javaの開発元(当時のSUN)に正式にJavaに取り込まれたメディアフレームワークで、RTPの実装もあります。今も[こちら](https://www.oracle.com/java/technologies/javase/java-media-framework.html)から入手可能な模様。ただ、[Wikipedia](https://
Spring Boot 設定値(Configuration Properties)入力をガッツリ支援する
# 前置き
デモ用アプリはGithubで公開しています。[コチラ](https://github.com/kyosuke-yamagata/test-properties)。
# モチベーション
Spring Bootを用いて共通部品を作る際に
Configuration Properties経由で、設定値(Key Value)を入力して貰いたいケース多々あり。チーム内で「”設定する”作業の負荷、もう少し減らせないだろうか」議論が持ち上がったので
(=DX:Developer Experienceを向上したい)
役に立ちそうな情報を纏めると共に、解法を1つメモしておくもの。# ペルソナ(=開発者)戸惑い体験の列挙
1. 設定する(Developing)時点
– Key上位階層名は知っているけど、細部は忘れてしまったケース。
– 何のValueが設定OKか覚えていないケース。
– 結局、割込み(別資料を確認する等)が生じる。
1. App Running時点
– [防げる範疇であれば]アプリがコケて戸惑う。
– [コケた際、反射的に]ミスした箇所ど
【AndroidStudio】RelativeLayout
#■RelativeLayoutとは
RelativeLayoutとは、基準となるパーツを決め、それとの相対的な関係で位置を決めていくというレイアウトです。簡単な例
■レイアウトの
右
上
下
左■Aって言う部品を基準にして位置を決めている。
Aの横
Aの上
Aの下など
そのためにはtextやButton等にIDを割り当てる事が大切。#■レイアウトを基準としてtrueにする。
レイアウトを基準に配置したい場合は、下記の属性を「true」にする
android:layout_alignParentTop : レイアウトの上端
android:layout_alignParentBottom : レイアウトの下端
android:layout_alignParentLeft : レイアウトの左端
android:layout_alignParentRight : レイアウトの右端
android:layout_centerHorizontal : レイアウトの水平方向の中央
android:layout_centerVertical : レイアウトの垂直方向の中央
androi
【AndroidStudio】 LinearLayout
#■layoutの組み方コード
■LinearLayout
子要素を縦・横の一列に並べるレイアウトである。android:orientation属性にvertical, horizontalを指定することでそれぞれ縦、横に並べることができる。書き方 使い方
緑の場所にLinearLayoutを記入
始めの場所に
android:orientation=”vertical”を記入
これで要素が縦に並ぶ。“` kotlin
【環境構築】Javaで「Helloworld」をしよう
初めまして。かのうです。
今回はJavaの環境構築をしてみようと思います。
環境は下記です。
・macOS Big Sur 11.3.1Javaを動かすために必要なもの
・JDK(Java Development Kit)
コンパイラとJVM(Java仮想マシン)が一体となったもの今回はあくまで「Helloworld」をしようということなので、Eclipse等の統合開発環境は使いません。
・JDKのインストール方法
下記サイトからmacOS インストーラーにある、「jdk-16.0.1_osx-x64_bin.dmg」をインストールするようにしましょう。
https://www.oracle.com/java/technologies/javase-jdk16-downloads.htmldmgファイルをダブルクリックした後、ウィンドウが表示されますので「次へ」を連打するとJDKのインストールが完了します。
わからなければ下記のサイトを参考にすれば良いでしょう。
https://codeforfun.jp/how-to-install-java-jdk-on-wi
Effective Java(第3版) 項目10 equalsをオーバーライドするときは一般契約に従う
equalsをオーバーライドする場合に守るべき内容について、かなり詳細に記載しています。
# 記載内容
## equalsのオーバライドが不要な場合
以下の条件のいずれかに該当する場合、equalsをオーバーライドしないのが正しい。* クラスの個々のインスタンスが本質的に一意(Threadクラス等)
* 「論理的等価性」の検査を提供する必要が無い(正規表現のPattern等)
* スーパークラスでオーバーライドしており、その振る舞いで問題ない(AbstractSetとSet等)
* クラスがprivate、パッケージプライベートであり、equalsが呼ばれないことが確実## equalsのオーバライドが必要な場合
一般に、値クラス(Integer、Stringの様に、値を表現するクラス)の場合は、
equalsのオーバーライドが必要になる。
ただし、個々の値に対して1つのインスタンスしか存在しないクラスは
オーバーライド不要である。
(Objectのequalsメソッドが十分機能するため)## equalsメソッドの一般契約
equalsメソッドは、Objectクラスの使
Spring Boot起動時に、required a bean of typeが出た時の解消法
#概要
Spring Bootを使ってWebアプリケーションを作ろうとした際に、以下のようなエラーが出ました。“`tex
Paramete 0 of constructor in hogeDao required a bean of type ‘HogeConfigurationProPertiers’ that could not befound.
“`このエラーの時に考えられる原因をQiitaやらで調べると、 必要な **アノテーション**が書かれていないことや、**パッケージ構成**がおかしいなどの記事を多く見つけれたのですが、自分の場合は解決しませんでした(実際にはアノテーションが関係していましたがorz)。設定周りのDIで調べると今回の解決策が出てきたので、エラー文とともに解決策を載せておきます。
# 原因
自分の場合、設定された値をアプリケーションで使うために、HogeConfigurationPropertiesで **ConfigurationProperties** アノテーションを付与して使っていました。
**ConfigurationProperti
VScode – Javaの環境構築
## ~Java~
> 環境
>
> – windows10
> – vscode(以前はEclipse)#####1.拡張機能
・`Java Extension Pack`をインストール。
##### 2.**作成**
(ここでもし JDKのエラーが出た場合→ [ 3. JDKのインストール](#3-jdkのインストール)へ)まず、何かフォルダを開いている人は閉じて、作業の開始 画面にしてください。
![image.png](https
【Java】LocalDateTimeの使い方
# LocalDateTimeとは
Java8からjava.timeパッケージに追加されたクラスで、日付」と「時刻」の両方を扱うことが出来ます。
タイムゾーンのない日時を取得できます。
`ex.2021-05-30T15:47:13.395703`# 現在日時を取得する方法
“`java
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class Main {
public static void main(String [] args){LocalDateTime now = LocalDateTime.now();
System.out.println(now);
}
}
“`###出力結果
“`
2021-05-30T15:47:13.395703
“`# フォーマットを指定する方法
取得した日時のフォーマットを指定するには、`DateTimeFormatte
JAVA JPAのN+1問題について
# GOAL
JAVAでDBMSを操作するためにJPAを使用する際に頻繁に発生する「N+1問題」の発生原因及び解決策の基本を知る。# 目次
1. [N+1問題とは](#Chapter1)
1. [原因](#Chapter2)
1. [解決策](#Chapter3)
1. [最後に](#Chapter4)
# N+1問題とは
以下のようなEntity, Repositoryがあるとしましょう。“`java
@Entity
public class Teacher {@Id
@GeneratedValue
private long id;@OneToMany
private Liststudents = Lists.newArrayList();
}
“`
“`java
@Entity
public class Student {@Id
@GeneratedValu
3週間でJavaSilverを取ろう!
#JavaSilverとは?
オラクル公認の`Java技術レベル認定資格`です。
中級者向けであるJavaSilverの他に、入門者向けの資格であるJavaBronzeと、上級者向けのJavaGoldがあります。
Javaアプリケーションの開発に必要な`基本的な知識は一通り網羅`できます。#試験の概要
試験名 :1Z0-808-JPN Java SE 8 Programmer I (JPNを受講する様に気をつけましょう)
試験時間 :150分
問題数 :77問
合格ライン :65%
試験方式 :CBTによる選択式
試験料 :26600円(税抜き)
試験会場 :ピアソンVUE社のテストセンター・オンライン受講問われるのはJavaの基本的な技術であるためJavaプログラミングに触れたことのある人なら、早い人で`2、3週間`、遅くとも`2ヶ月`の勉強で合格ラインに到達することができます。
プログラミング入門者が独学で勉強して合格を目指す場合、`半年`ほどの勉強で合格ラインに達することができるでしょう。
受験には¥26,600が必要です。税込で$30,000前後かかり
【Java Spring】 mybatisのSpring bootでの設定
# mybatisのSpring bootでの設定
###application.ymlへの設定の記述
mybatisを使用して、Javaのオブジェクトと、DBの項目の紐付け(マッピング)を行うために、
Javaではキャメルケース(objectExampleのような書き方)で記述をし、
DBの項目はスネークケースを使用している場合に、下記の設定を行う事で、
自動的にmybatis側で変換を行い、マッピングをしてくれる。“`bash:application.yml
mybatis:
mapper-locations: classpath*:/mapper/**/*.xml
type-aliases-package:
紐付けを行うJavaオブジェクトのパス
configuration:
map-underscore-to-camel-case: true“`
Javaで1行に複数個の文字列を入力する方法
競技プログラムで1行に複数個の文字列を標準入力する方法です。
“`Java
package nogizaka;
// Scannerクラスをインポートする
import java.util.Scanner;public class paiza1 {
public static void main(String[] args) {
//Scannerクラスを呼び出す
Scanner scanner = new Scanner(System.in);
//文字列の個数が全て入力するまで繰り返す
while (scanner.hasNext()) {
//文字列を1個ずつ標準出力する
System.out.println(scanner.next());
}
//Scannerクラスを閉じる
scanner.close();
}
}
“`上記のようにコードを書くと1行に複数の文字列を入力できます。
GWT の domino-ui がカッコイイ
# domino-uiはGWT上のGUI部品です
GWT(Google Web Toolkit)は、JavaをトランスパイルしてJavaScriptを生成する技術です。
コンパイルした環境
Windows10
Adopt OpenJDK 8
maven 3 系以下のサイトからソース一式をZIPでダウンロード
[ domino-ui-demo ]( https://github.com/DominoKit/domino-ui-demo )
cd domino-ui-demo-master
README.md を参考にするが、うまくいかない。
単に、 mvn package としてみる
コンパイルには、かなり時間がかかります。
私が使っているノートPCで、10分程度。ぼけーっと、待ちます再度 README.md を参考に
“`CMD.EXE
cd ui-demo-backend
java -jar target/ui-demo-backend-1.0-SNAPSHOT-fat.jar
“`画面にポートが表示されているので、http://loca
VSCode-いろいろな言語の環境構築まとめ
## vscodeが便利だけどやっかいな話
ここ数日、vscodeの環境構築にえらい苦戦していました。
普段、同時に3~4言語使っているため、その一つ一つの環境構築が面倒すぎて、今まで使っていたエディタのほうがましなんじゃないか…とも思いました。
わからないことだらけでとにかく調べまくりましたが、ここでは、**サクッと環境構築を終えてプログラムを書きたいんだ!!**という人向けに#####Python、C#、Java、Ruby
の環境構築から実行までの方法を簡潔にまとめました。
わたしがつまずいたところや試してみてできなかったことも共有していますので、このページだけですべて完結できるよう目指しました。
ぜひ参考にしてください。
## 環境
OS:Windows10
エディタ:VSCode(Visual Studio Code)以下、今まで使用していた環境です。
Python:anaconda3 spyder
C#:visual studio 2019
Java:eclipse
Ruby:コマンドプロンプト## ~言語別環境構築から実行までの仕方~
[P
Javaでグラフを入力画面から描画する(SpringBoot)
前回の作業履歴
https://github.com/jamcookjapan/grapy/commit/567f8b2f444b1ef4a89e622babf3a4930cd897ae静的なデータを投入して画像バイナリを作っていましたが、今回は入力画面を作って、データを動的に受け取ってグラフを書き込みたいと思います。
“`tsv:input.tsv
1 10,640,000
2 10,640,000
3 10,640,000
4 10,640,000
5 10,620,000
6 10650000
7 10780000
8 10780000
9 10780000
10 10760000
11 10570000
12 10530000
13 9960000
14 10250000
15 10250000
“`**グラフ**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1535669/f21310a4-10f0-e8f3-054f-403a521f0a93.png)X軸