- 1. 今更ながら(Yet Another)JavaでVoIPするためのライブラリ
- 2. Spring Boot 設定値(Configuration Properties)入力をガッツリ支援する
- 3. 【AndroidStudio】RelativeLayout
- 4. Android LinearLayout
- 5. 【環境構築】Javaで「Helloworld」をしよう
- 6. Effective Java(第3版) 項目10 equalsをオーバーライドするときは一般契約に従う
- 7. Spring Boot起動時に、required a bean of typeが出た時の解消法
- 8. VScode – Javaの環境構築
- 9. 【Java】LocalDateTimeの使い方
- 10. JAVA JPAのN+1問題について
- 11. 3週間でJavaSilverを取ろう!
- 12. 【Java Spring】 mybatisのSpring bootでの設定
- 13. Javaで1行に複数個の文字列を入力する方法
- 14. GWT の domino-ui がカッコイイ
- 15. VSCode-いろいろな言語の環境構築まとめ
- 16. Javaでグラフを入力画面から描画する(SpringBoot)
- 17. JPAを知ろう、(Gradle + JPA + mysqlで簡単確認)
- 18. while文とdo-whileについて
- 19. Play Framework入門(2.8.8) 掲示板の作成まで
- 20. Play frameworkでテストコードを作成してみた。
今更ながら(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
Android 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軸
JPAを知ろう、(Gradle + JPA + mysqlで簡単確認)
#JPA(Java Persistence API)
## JPAとは
– 関係データベースのデータを扱う Java SE および Java EE のアプリケーションを開発するためのJava用フレームワークである。(wikipedia)
– JavaのORM技術標準### ORMとは?
– Object Relational Mapping(オブジェクト関係マッピング)
– OOPを守りなら設計
– RDB設計
– その中間の掛橋になるのがORMフレームワーク## JPAを学ぶべき理由
– JPAが出る前はObjectをデータベースに登録するためには**JDBC APIとSQL文を直接**書かなければならなかった。
– JPAを使うとSQL文を作成する必要がない。なんて素晴らしい、
– JDBC, JDBC Template, MyBatisは効率悪い、開発生産性が低い。
– JPAがよく使われない理由は難しいから
– Java開発者としてJPAは必須。## JPA以前の問題点とは
– OOP(オブジェクト志向プログラミング)とRDB(関係型データベース)の使用が一番多い
while文とdo-whileについて
# while文とdo-whileについて
## 繰り返し文とは
Javaには制御文として、**繰り返し文**があります。繰り返し文は**ループ**とも呼ばれます。今回、繰り返し文の一つとして、while文を紹介します。
## while文
while文は、指定された条件が成立する間は、繰り返し処理を行います。
コードは以下のようです。“`
num = 0;
while(num < 5){ System.out.print(num + " "); num++; } ``` ()内に条件式を記述し、条件式を満たしている間(true)は{}内の処理が実行されるという構文です。 ()内の条件式が満たされない場合(false)の場合は処理が実行されないという内容になります。 ## 無限ループ while文の注意点として、処理が半永久的に実行されてしまう**無限ループ**には注意が必要です。 ``` num = 0; while(num < 5){ System.out.print(num + " "); } ``` num++が記述されない
Play Framework入門(2.8.8) 掲示板の作成まで
先日、Java&ScalaのフレームワークであるPlay Framework(以下Play)を使って掲示板サイトを作ったので、それの備忘録を残したいと思います。
この記事ではPlayFrameworkの公式とgithubにある公式サンプルを多数引用します。
https://www.playframework.com/getting-started
https://github.com/playframework/play-samples
“`conf:実行環境
PC: Ubuntu20.04
java: 11.0.11
sbt: 1.4.9
Play: 2.8.8
“`# Play! Play Framework
Playとは、MVCでWebサイトを構築するフレームワークです。
MVCとは、Model、View、Controllerの頭文字を取ったものです。– Model: データの管理、取得などを担当
– View: データの表示を担当
– Controller: ModelとViewの制御を担当https://qiita.com/s_emoto/items
Play frameworkでテストコードを作成してみた。
##Play frameworkでのテストコード
Play frameworkでjunitを使ってテストコードを作成したのでメモ。Playでプロジェクトを作成するとtest/controllersディレクトリ内にデフォルトでHomeControllerTest.javaが入っている。
“`java:HomeControllerTest.java
package controllers;import org.junit.Test;
import play.Application;
import play.inject.guice.GuiceApplicationBuilder;
import play.mvc.Http;
import play.mvc.Result;
import play.test.WithApplication;import static org.junit.Assert.assertEquals;
import static play.mvc.Http.Status.OK;
import static play.test.Helpers.GET;