- 1. [java入門]クラスの基礎
- 2. Couchbase Lite機能解説:クエリ④ 結果セット
- 3. 「Eclipseでjava8を指定したのにjavaFXが使えないよ〜〜」な人へ
- 4. Processingを利用して魚群再現をする(1)
- 5. Azure Container Registry + Jib + Java でアプリを開発する
- 6. 【AtCoder】JavaでABC224のA,B,C問題を解く!
- 7. Apache POIを利用している際にA1形式でセルを取得したい
- 8. Apache POIを使って、シートをソートしたい
- 9. kotlinのnullについて
- 10. JDBC・Spring JDBC / JPA・Spring Data・Spring Data JPA・Hibernateの関係性
- 11. HS256のJWS署名検証テスト
- 12. EJB・EJB3・JPAの関係性
- 13. クラス名、行番号、メソッド名をタグにセットしてログを出力する (Android Studio + Java)
- 14. Java: Mockitoでハマった5つの落とし穴とその解決策
- 15. JavaSilverをオンライン試験(監督付き)で受験する前に読んでほしいメモ(Bronze, Goldも可)
- 16. 未経験からJavaを学び始め、System.out.printlnについて調べてみた。
- 17. Autonomous Database(ATP) に Java(JDBC Thin Driver) で ウォレット無しで接続してみる。
- 18. 【マルチスレッド】syncronizedしなくても良いパターン(Immutableパターン)
- 19. Javaのコーディングでお手本探しに役立ちそうなリンクたち
- 20. @EqualsAndHashCode
[java入門]クラスの基礎
## クラスの基礎
#### クラス:
・プログラム実行のための処理をまとめたオブジェクト
・クラスの処理の中にメンバ変数や処理を実行するためのメソッドがある
class クラス名 { 実行処理 }####メンバ変数:
・クラス内で使用する変数
####メソッド:
・メンバ変数などを使用して行う処理を一まとめにしたもの####オブジェクト:
・オブジェクト指向のプログラミング言語では処理をまとめたクラスの実行には
そのクラスのオブジェクトを生成する必要がある。
・生成したオブジェクトからメンバ変数を参照したりメソッドを呼び出す。
class ClassSample {
メソッド宣言・定義
void methodSample(){ 実行処理 }}
オブジェクトの生成
classSample cl = new ClassSample();
メソッドの呼び出し
cl.methodSample();
・クラス名の後にオブジェクト名を記述。オブジェクトにはnew演算子を使用して
Couchbase Lite機能解説:クエリ④ 結果セット
Couchbase LiteのSELECTステートメントに対して返された結果セットを処理する方法を解説します。
結果セットの形式とその処理は、使用する`SelectResult`ステートメントのタイプによって異なります。結果セット形式には、以下が含まれます。
– `SelectResult.all`:すべてのプロパティ
– `SelectResult.expression(property( “name”))`:特定のプロパティ
– `SelectResult.expression(meta.id)`:ドキュメントIDのみ
– `SelectResult.expression(Function.count(Expression.all())).as( “mycount”)`:データ(ドキュメント)件数のみ
クエリの結果を処理するには、最初に`Query.execute`を使用してクエリを実行します。
クエリを実行すると、通常、結果の配列、つまり結果セットが返されます。
ドキュメントのプロパティを返すクエリの結果セットは配列です。
配列の各行は、検索条件(WHERE
「Eclipseでjava8を指定したのにjavaFXが使えないよ〜〜」な人へ
「Preferences」(設定)→「Java」→「コンパイラー」の「コンパイラー準拠レベル」
を
1.8に下げると嬉しいかも。
Processingを利用して魚群再現をする(1)
#魚群再現事始め
近年盛んになりつつあるProcessingを用いたジェネラティブアートの世界ですが、
[某アニメ](https://aquatope-anime.com/)を視聴して魚群の動きを再現することが可能かを検証するべく、実際に実装してみることにしました。実行環境についてはProcessing3.0を利用していきます。#群体シミュレーションについて
群体シミュレーションをする場合であれば、Boidsアルゴリズムを利用することが一般的で、Boidsアルゴリズムの実装についてはhttps://qiita.com/odanny/items/e0c0a00e13c2b4839cec の記事を参考にしてもらうのが良いと思います。
簡単に説明すると、各オブジェクト間で– 分離 (Separation)
– 整列 (Alignment)
– 結合 (Cohesion)の三種類の力を働かせることになります。
本実装では、3種類の力に加えて、壁に対して拒絶間(斥力)が働くように実装していきます。#Fishクラスの実装
まずは、魚のクラスを実装していきます。
各変数はpri
Azure Container Registry + Jib + Java でアプリを開発する
Microsoft Azure では「プライベートで使えるDocker Container Registry (Docker Hubみたいなもの)」として Azure Container Registry というサービスが提供されています。
本記事ではマイクロソフトが提供する「Azure Container Registry」と、Googleが提供する「Jib」を組み合わせて「Javaアプリ」の環境を構築し、利用する設定をご紹介したいと思います。
設定ファイルを丸ごと用意してありますので穴埋め形式でご利用いただけます。
# フォルダ構成
コンテナにて利用したいスクリプトが src/main/jib/ においてあるものとします。
“`
src/main/jib/app.sh
“`# 設定ファイル
“`xml
【AtCoder】JavaでABC224のA,B,C問題を解く!
ABC224のA,B,C問題をJavaで解きました。
備忘録としてまとめておきます。#A問題『Tires』
問題ページ:[A – Tires](https://atcoder.jp/contests/abc224/tasks/abc224_a)##入力
S : 文字列(末尾は「er」または「ist」、必ず 2文字以上)##コード
“`java
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String str = sc.next();//文字列の後方一致チェック
if(str.endsWith(“r”))
{
System.out.println(“er”);
}else
{
System.out.p
Apache POIを利用している際にA1形式でセルを取得したい
Excelではセルの位置を示すにあたって、A1形式を利用することが一般的だと思います。Apache POIを利用している際にA1形式でセルを取得したい場合、`CellReference`を利用するとよいです。
たとえば、以下はAB15のセルを取得するサンプルコードです。
“`java
CellReference cellReference = new CellReference(“AB15”);
Row row = sheet.getRow(cellReference.getRow());
if (row != null) {
Cell cell = row.getCell(cellReference.getCol());
if (cell != null) {
doSomething(cell);
}
}
“`あるいは`CellUtil`を利用することもできます。
“`java
Cell cell = CellUtil.getCell(CellUtil.getRow(cellReference.getRow(), sheet),
Apache POIを使って、シートをソートしたい
Excelにはシートをソートする機能は標準で用意されていません。通常はVBAを利用するのですが、VBAにはソート関数がなく、これを自前を用意するのは面倒。そもそもVBAが苦手ということもあり、JavaとApache POIで処理したことがこの記事を書いたきっかけになります。
前置きはさておき、以下は「**src.xlsxのシートをシート名でソートしたものをdst.xlsxに書き出す**」というものです。
“`java
try (Workbook srcWorkBook = WorkbookFactory.create(Files.newInputStream(Paths.get(“src.xlsx”)));
OutputStream dstWorkBook = Files.newOutputStream(Paths.get(“dst.xlsx”))) {List
sheetNames = new ArrayList<>();
for (Sheet sheet : srcWorkBook) {
sheetName
kotlinのnullについて
## 経緯
kotlinはjavaに比べて、随分とエンジニアに親切になったように思います。
個人的に嬉しいのは所謂null安全です。
これがあることで取り扱いがかなり楽になり、NullPointerExceptionなんて久しく見ておりません。
しかし最近になって知った仕様があったので、自戒を込めて基礎的な部分をまとめてみることにしました。## なにがあったか
“` Sample.kt
val hoge : Int? = nullif (hoge != null) {
Log.d(“test”, “hoge is not null”)
} else {
Log.d(“test”, “hoge is null”)
}Log.d(“test”, “hogeStr is ” + hoge.toString())
val fuga = hoge.toString()
if (fuga != null) {
Log.d(“test”, “fuga is not null”)
} else {
Log.d(“test”, “fuga is null
JDBC・Spring JDBC / JPA・Spring Data・Spring Data JPA・Hibernateの関係性
### 導入
・今までの業務でなんとなく使っていたSpring JDBC、Spring Data JPAらへんの理解があいまいだったので記事にまとめる。
—
### まず結論・JDBC…JavaでDBに接続するためのAPI。ResultSetからデータ抜き出すのだるいやつ。
・Spring JDBC…JDBCの使いづらいところを取っ払ってくれたもの。JDBCより断然こっちの方がいい。application.propertiesにDB接続情報定義するだけで接続できるのはありがたい。・JPA…Java標準のORMの仕様。JDBC系と異なりSQLを自動生成してくれたり、ORMでデータ取得結果をEntityクラスにぶちこんでくれる。
・Spring Data…色んなDBを使いやすくする複数のフレームワークの親玉。
・Spring Data JPA…JPAを使いやすくする抽象クラス/インタフェースを提供してくれる。これはJPAの実装ではない。✅ JavaでORMの恩恵(Entity間の紐付け等)を存分に授かりたいなら「JPA」を使う。さらにJPAを簡単に使
HS256のJWS署名検証テスト
# 環境
| | Version |
|:—-|:—-|
|Java| 11|
|Spring Boot | 2.5.6|
|JUnit | 5.7.2 |# HS256の署名検証
## 仕様
[OIDC 1.0 IDTokenValidation](https://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html#IDTokenValidation)HS256のID Tokenは、`client_secret`を鍵として用いて署名されている。
# やり方
ここ([JSON Web Signature (JWS)
Example JWS using HMAC SHA-256](https://openid-foundation-japan.github.io/draft-ietf-jose-json-web-signature-14.ja.html#HS256Example))をお手本にするのが良さそう。# コード
“`java
@Slf4j
@SpringBootTest
EJB・EJB3・JPAの関係性
### 導入
hibernate-toolsでリバースエンジニアリングする際に「EJB3」「JPA」「POJO」らへんの単語がでてきたが、関係性がちゃんと理解できなかったので記事にまとめる。
—
### まず結論(EJB・EJB3・JPAの関係性)・EJB3は「EJBの上位互換」
・EJBでは「POJOを使えない」 EJB3から「POJOを使える」
・JPAは「EJB3でPOJOを使うために利用されているもの」。JPA単体では1つの技術として独立しており、**EJB3がJPAという技術に依存している**関係性—
### JPA「JavaでORMを使うための仕様」
・Java Persistence API
・Java標準のORMの**仕様(specification)**
・**実装(implementation)**が別で提供されている。Springはデフォルト実装として「Hibernate」を利用する。
https://stackoverflow.com/questions/41902856/spring-boot-jpa-hibernate-as-de
クラス名、行番号、メソッド名をタグにセットしてログを出力する (Android Studio + Java)
“`java:Debug.java
package firstlast20180521.utilities;import android.util.Log;
public class Debug {
static final String SELF_CLASS_NAME = “firstlast20180521.utilities.Debug”;
//引数省略時
public static void print() {
print(“-“); //Log.dのログメッセージが空白であってもログが出力されるように、空白以外の値をセットしている。
}public static void print(String text) {
StackTraceElement[] trace = Thread.currentThread().getStackTrace();int length = trace.length;
String className = “”;
Java: Mockitoでハマった5つの落とし穴とその解決策
[Mockito](https://site.mockito.org/)は、Javaプロジェクトのテストコードを書くときに利用できる優れたライブラリです。
しかし、コードの書き方を間違えると期待通りには動作せず、原因究明に時間を浪費してしまうこともあります。
このため、この記事では、私が過去にハマった落とし穴をまとめました。以下、執筆時点の最新リリースである、Mockito 4.0.0をベースにしています。
# [InvalidUseOfMatchersException](https://javadoc.io/static/org.mockito/mockito-core/4.0.0/org/mockito/exceptions/misusing/InvalidUseOfMatchersException.html)の発生
テストを実行した際に、下記のようなエラーが出力されることがあります。
“`
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument
JavaSilverをオンライン試験(監督付き)で受験する前に読んでほしいメモ(Bronze, Goldも可)
#この記事で伝えたいこと(要約)
– 試験中、机にはキーボード・マウス・飲み物しか置くことができない(メモ紙やペンがダメ)
– メモ代わりに[オンラインホワイトボード](https://www.pearsonvue.co.jp/onvue/whiteboard)が使えるが小さくて使いづらい
– チャットベースで対応されるため声出し不要だったがやりづらい**結論:おそらくテストセンター受験のほうが準備も気持ちも楽**
#事務的なやること
1. Oracleアカウントを作成する
1. CertView(Oracle認定システム)にログインする
1. CertView経由で試験チケットの購入と受験予約をするここまではテストセンター受験と共通だと思うので説明はこのくらいにするが、一点だけ。**CertViewのメールアドレスは後から変更ができない。**そのため、会社のメールアドレスで登録する場合は注意が必要だ。
CertView(Oracle認定システム)の詳細については[こちら](https://www.oracle.com/jp/education/certification/m
未経験からJavaを学び始め、System.out.printlnについて調べてみた。
未経験からエンジニアを目指している30歳。
PHP初級認定試験、LPICレベル1は所持しています。
Autonomous Database(ATP) に Java(JDBC Thin Driver) で ウォレット無しで接続してみる。
Autonomous Database(ATP/ADW/AJSON) は、従来は Autonomous Database自体が持つウォレットのファイル群を
クライアント側に配置する必要がありましたが、ウォレット無しのTLS接続を許可するオプションが追加されました。> Update Network Options to Allow TLS or Require Only Mutual TLS (mTLS) Authentication on Autonomous Database
> https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/support-tls-mtls-authentication.html#GUID-3F3F1FA4-DD7D-4211-A1D3-A74ED35C0AF5
>
> About TLS Authentication
> https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/connect-introdu
【マルチスレッド】syncronizedしなくても良いパターン(Immutableパターン)
↓前回記事
https://qiita.com/kannna5296/items/576385c08e5b770149c1
非同期デザインパターンシリーズの第2弾です。前回は「Single Threaded Executionパターン」を紹介しました。
##参考図書
この本の第2章「Immutableパターン」を基にしています。
##
Javaのコーディングでお手本探しに役立ちそうなリンクたち
# はじめに
いわゆる「良いコード」や「読みやすいコード」を書くためにお手本が欲しくなる時があると思います.本記事では,こういったお手本を探すときに参考になりそうな検索キーワードやリンクを備忘録も兼ねて残そうと思います.`Java`を題材にしてまとめてみました.# 「良いコード」や「読みやすいコード」を書く基礎になる指針
「変数名が1文字になるのは避けた方が良いよ」や「`import`文はアスタリスク付きで書かない方が良いよ」といったコードを書く上での指針は基本的にこちらをご参考になさると良いのかなと思います.https://future-architect.github.io/coding-standards/documents/forJava/Java%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E8%A6%8F%E7%B4%84.html
「良いコード」や「読みやすいコード」のお手本はこういったコンセンサスの取れたルールみたいなのが基礎になると思いますので,こちらでどんな書き方が良いのか,まずいのかを確認す
@EqualsAndHashCode
### @EqualsAndHashCode(callSuper = false)
@EqualsAndHashCode
equals, hashCode 自動生成
equals : 二つのObjectの値が一致するか、同等性(equality)を比較する演算子hashCode : 二つのObjectが同じであるか, 同一性(identity) を比較する演算子
Java beanで同等性の比較のためequalsと hashcode methodをoveridingして使うんだが、
@EqualsAndHashCode Annotationを使ったら自動的にこのメソッドを生成できる。
callSuper 属性を通じて、eqaulsと hashCode メソッド自動生成し親クラスのフィールドまでカバーするかを設定できる。
@EqualsAndHashCode(callSuper = true)の設定し、親クラスのFieldの値も同一であるか確認しfalse(Default)の場合
自身(this)クラスのFieldだけを考慮する。https://blog.y-yuki