JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

Javaのリフレクションで

以下の記事を参考にすると解決できる。

https://qiita.com/h_sakata/items/ecf82d60329a0c1668f1

そのうち、きちんとまとめる。

元記事を表示

[Google Sheets API] 指定した範囲を並び替える

Google Sheets API v4(Java)を使用して、
スプレットシートの指定したセルの範囲を並べ替える方法
についてご紹介します。

メニュー:「データ」 ⇨ 「範囲を並び替え」
で実行できる内容と同じです。

コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
“`

## 指定した範囲を並び替える
指定したセルの範囲を並び替えることができます。

並び順はSortSpecクラスのsetSortOrderメソッドで指定します。
・降順:DESCENDING
・昇順:ASCENDING

範囲(GridRange)の指定で
・範囲を指定しない場合、範囲はシート全体が対象
・終了行・列を指定しない場合、開始行・列からデータがある行・列までが対象

元記事を表示

Leaning Technologies、CheerpJ 3.0を発表

![cheerpj-3.0-1024×538.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3486144/941e4d0b-86b0-4870-d566-7e19b7838509.jpeg)

# 未修正の Java アプリケーションをブラウザで実行するための WebAssembly ベースの革命的ソリューション

[ 2024年 2月1日 リーズ・イギリス ]
革新的なウェブのソリューションのパイオニアであるLeaning Technologiesは、CheerpJ 3.0を自信を持って紹介します。CheerpJは、大規模で変更されていないJavaアプリケーションをブラウザでシームレスに実行するためにデザインされた、画期的なテクノロジーの最新版です。
前作の成功に基づき、CheerpJ 3.0は完全に新しいアーキテクチャを導入し、パフォーマンス、Java互換性、使いやすさを向上させる多数の機能をもたらします。

CheerpJは大成功を収め、2017年の最初のリリース以来、世界中で13万人以上のユー

元記事を表示

[Google Sheets API] 行をランダムに並び替える

Google Sheets API v4(Java)を使用して、
スプレットシートの指定したセルの範囲の行をランダムに並べ替える方法
についてご紹介します。

メニュー:「データ」 ⇨ 「範囲をランダム化」
で実行できる内容と同じです。

コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
“`

## 指定した行をランダムに並び替える
指定したセルの範囲を行単位でランダムに並び替えることができます。

範囲(GridRange)の指定で
・範囲を指定しない場合、範囲はシート全体が対象
・終了行・列を指定しない場合、開始行・列からデータがある行・列までが対象
となります。

**サンプル コード**
ランダムに並べ替えたい範囲をしていするだけ、非常にシン

元記事を表示

汎化と特化

継承では
・親クラスになるほど一般的で抽象的な内容(汎化)
・子クラスになるほど特殊で具体的な内容(特化)
になると好ましいとされています。

ただし、安易な継承はプログラムの可読性を下げてしまう為、クラスの内容を一部変える場合は委譲の利用が推奨されます。

https://qiita.com/joshua_kanae/items/a62608bb19eeae0db8bb

# 参考文献
https://usd.sie.dendai.ac.jp/programming/2019/object_aj/C1_3.htm

元記事を表示

[Google Sheets API] セルを挿入・削除して、既存のセルを移動させる

Google Sheets API v4(Java)を使用して、
スプレットシートにセルを挿入または削除して、既存のセルを移動させる方法
についてご紹介します。

挿入は、
メニュー:「挿入」 ⇨ 「セル」 ⇨ 「セルを挿入して既存のセルを右・下に移動」
で実行できる内容と同じです。

削除は、
メニュー:「編集」 ⇨ 「削除」 ⇨ 「セルを削除して既存のセルを上・左に移動」
で実行できる内容と同じです。

コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
“`
|No|目次|
|—|—|
|1|[セルを挿入する](#1-セルを挿入する)|
|2|[セルを削除する](#2-セルを削除する)|

## 1. セルを挿入する
セルを挿入して既存のセ

元記事を表示

tabulaでPDFから表を抽出する

今回はPDFから表を抽出することができるtabulaライブラリを紹介します。

トヨタ自動車の23年3月期決算資料のPDF資料から営業収益、営業利益、税引前利益、当期利益、親会社の所有者に帰属する当期利益、当期包括利益をpandasの表として抜き出し、CSVファイルに出力してみました。

## tabulaとは

Pythonのtabulaライブラリは、PDFファイルや画像ファイルから表データを抽出するオープンソースライブラリです。Javaで開発されたTabulaライブラリのPythonラッパーであり、使いやすさと高い精度で知られています。

主な機能としては以下のようなものがあります。
– PDFファイルや画像ファイルから表データを抽出
– 抽出した表データをpandasのDataFrameに変換
– 複数ページにわたる表データの抽出
– 表データのヘッダー行の自動認識
– 抽出対象となる表の範囲指定

## tabulaの使い方

まずはtabulaのインストールを行います

“`python:tabula.py
pip install tabula-py
“`

続いてライブ

元記事を表示

Java ~論理演算子~

## :pushpin:前回の記事はこちら
https://qiita.com/nukoxo/items/a733d0eac169bd737640
## :ledger:論理演算子
前回の記事で紹介した関係演算子は「AはBより大きい」など
2つの値の比較を行うことが出来ました。

本日の論理演算子は複数の条件を組み合わせてより
複雑な条件式を組み立てることができます。

演算子 意味
&& A&&B AかつB(AとBが共にtrueならtrue)
|| A||B AまたはB(AとBどちらかがtrueならtrue)
!

Hello Worldからの復習 ~型変換編~

こうやって復習を軸にアウトプットしていると少しづつだけど脳みそに知識がしみ込んでいく感覚がある。私は理解が人の数倍時間がかかるので、人一倍というより人三倍行動しないと追っつかないのでやるかやらないか。
いや、やらないという選択肢はないかな。

やらないことはやらないけど。

**お品書き**
+ 基本データ型の型変換
+ ◆型変換Sample
+ ◆コマンドラインから任意の金額を入力する場合

**基本データ型の型変換**

数値同士の演算や代入をするときに、データ型の変換が
**自動**: 表現できる値の幅が**小から大**
**キャスト**で明示する: 表現できる値の幅が**大から小**

データ型のサイズ一覧は ↓

https://qiita.com/tianshandafu894/items/73c7ac456e1b389a74ed

一部抜粋 ↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336940/49f5393e-1a2e-b884-d998-1d

InnoRules7.1のJDKを11にアップグレードする際の注意点

# 背景
InnoRulesサーバとTomcatを共有しているWebアプリにおいてJDK11の機能が必要となった。
JDKを11にアップグレードしたところTomcatが起動しなくなったので解決策を記録する。

# 環境
– Windows Server 2019
– JDK 1.8.0_144
– InnoRules 7.1
– Tomcat 7.0.53

# 発生した問題

## Tomcatが起動しない
`java.endorsed.dirs`オプションが原因。
JDK8まで存在していたJava推奨標準優先メカニズム機能がJDK9で削除されている。
そのためこのオプションが指定されていると起動しない。

### 解決策1
`catalina.bat`内の`-Djava.endorsed.dirs=”%JAVA_ENDORSED_DIRS%”`を削除する。

### 解決策2
`bin` `lib`フォルダを最新Tomcat7のものに置き換える。
https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.109/bin/

## ja

Hello Worldからの復習 〜演算子〜

趣味でギターを弾くけど、〇〇スケール等、専門的な音階がいっぱいあって、良く〇〇スケールて何度と何度の音だっけ?てのがあったなぁ。
エンジニアの実務でも「どっちだっけ?」て聞いたり聞かれたりは別に良くあること。
スムーズに答えれたりしたらスマートだなと思う。

**お品書き**
+ 演算子って?

—-

**演算子って?**

計算するとき足したり引いたりするやつです。

もっと言うと、足す、引く、掛ける、割る、余りを出す、比較するとかいうやつです。

| | | | | | |
|:-:|:-:|:-:|:-:|:-:|:-:|
|①|++|–| | | +l -l |
|②| * | / | % | | × ÷ 余り|
|②| + | – | | | + – | |
|③| < | > | <= | >= | 大小比較|
|③| == | != | | | 等しいか|
|④| && | ll | | | かつ、または|
|⑤| = | += | -= | |代入 |
|⑤| *= | /= | %= | | 複合代

委譲(delegate)

# 委譲とは
メソッドの処理を他クラスにやってもらう事です。
他クラスのメソッドを再利用する形となるので、同じメソッドを何度も実装する必要が無くなります。
場合によっては不要な継承を防ぐ事も可能です。

# 継承との違い
継承は親クラスの全ての機能を子クラスで利用する事が出来ます。

委譲は他クラスの機能の内から必要な部分だけ再利用できます。
その為、親クラスと子クラスの間にis aの関係があるかなどクラス間関係の制約に縛られにくいです。

# 参考文献

【オブジェクト指向】「集約」、「継承」、「委譲」の使い分け

https://chmod774.com/oop-inheritance-delegation/#toc1

https://itsakura.com/java-delegation

https://qiita.com/tonluqclml/items/c0110098722763caa556

MyBatis/iBatisのsqlmapファイルを解析してタグ情報&パラメータを取得する(ソースコード)

## 1. はじめに
前回の記事「[MyBatis/iBatisのsqlmapファイルを解析してタグ情報&パラメータを取得する](https://qiita.com/5zm/items/0c08b8aa7303789a6ed4)」で説明したツールのソースコードの説明になります。このツールを作成することになった経緯やツールの概要、実行例については前回の記事を参照ください。

## 2. ツールの仕様・前提
* Javaのコンソールアプリ
* 必須の引数はMyBatisのmapperファイル、iBatisのsqlmapファイルが格納されたディレクトリパス
* ファイルが1つの場合はファイルパスでもOK
* `-mybatis(デフォルト)`オプションでMyBatisのmapperファイルとして解析する
* `-ibatis`オプションでiBatisのsqlmapファイルとして解析する
* `-f:ファイルサフィックス`で対象のファイルをフィルタする
* 解析結果はJSON形式で標準出力に出力する
* 外部ライブラリは利用せず、Java17の標準機能で実装する

![クラス図](https:

[Google Sheets API] スプレットシートのタイトル(名前)、テーマ、その他の情報を設定する

Google Sheets API v4(Java)を使用して、
スプレットシートのタイトル(名前)、テーマ、その他の情報を設定する方法
についてご紹介します。

下記のスプレットシートの情報が設定できます。
・***タイトル(名前)***
  メニュー:「ファイル」 ⇨ 「名前を変更」
  で変更できる内容と同じです。

・***テーマ***
  メニュー:「表示形式」 ⇨ 「テーマ」
  で変更できる内容と同じです。
  

・***その他***
  メニュー:「ファイル」 ⇨ 「設定」
  で変更できる内容と同じです。
 ・***全般タブ***
  ・言語と地域
  ・タイムゾーン
   JavaGold 自分用黒本メモ

### 1章
[java.util.Comparator](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Comparator.html)

– `compare`メソッドを持つ関数型インターフェース

– o1がo2より小さい場合は負の整数を返す。
– o1がo2と等しい場合はゼロを返す。
– o1がo2より大きい場合は正の整数を返す。
“`
Comparator comparator = new Comparator() {
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
};
“`

–  [List.sort()](https://docs.oracle.com/javase/jp/8/docs/api/java/util/List.html#sort-java.util.Compa

Java ~関係演算子~

## :ledger:関係演算子
演算子の左側と右側を比較するものです。
条件分岐や繰り返しを行うために必要です。

一覧を見てください。
| 演算子 | 例 | 説明 |
|:-:|:-:|:-:|
| > | A>B | AはBより大きい |
| < | A= | A>=B | AはBより大きい(以上)または等しい |
| <= | A<=B | AはBより小さい(以下)または等しい| | == | A==B | AとBは等しい | | != | A!=B | AとBは等しくない | | === | A===B | AとBが型まで等しい | |!== | A!==B | AとBが型まで含めて等しくない | 関係演算子の演算結果は`ture``false`の真偽値です。

***
<<補足>>

・等しくないときの記号で`!`には`NOT`の意味があります。

次回は論理演算子について解説していきます!

Qiitaさん曰くエンジニアではあるらしいので

# はじめに
DegeneracyCraft開発者のEpitapです!
Qiitaさん曰くエンジニアの定義として

・プログラミングの知識と経験を活用している人

とのこと。
私もエンジニアという判定らしいです。
それ故に、この場をお借りして一旦振り返ってみることにします。
(以前の記憶は朧げ)

# 大まかな流れ
始めたのは2022年9月中旬辺りでしたね。自分のやりたいことを自ら供給するためにDegeneracyCraftを作ったことが始まりです。
XがTwitterであった時からMODのことについてまとめているのでもし暇かつ興味があれば、ぜひご参照ください。

### 2022年9月
ここらへんでIntelliJの開発環境を立て、始動しました。
MOD製作の解説動画を見まくり、なんとか自分で扱えるようにと励んでいました。
この時のVersionは意外なことに1.17.1でした。

### 2022年12月~2023年1月
少しずつ軌道に乗ってきた(追加アイテム、ブロック類追加可能レベル)になったくらいの時、開発環境が爆散。

Hello Worldからの復習 ~息抜き編~

自分の復習、アウトプットでやっているが、話の枕を考える時間のほうが長いのはなぜだろう。

自分は落語が好きなのだが、本題に入る前の話が好きだったりもする。
存命ではないが、六代目桂文治は好きな落語家の一人。
立川談志の枕なんかは脱線しすぎて何の話か分からないこともあったそうで。

だから本題より面白かったりもする。
去年、KISSのライブに行ったけど、本編より会場について始まるまでの高揚感が一番楽しかったりする。

今回も例外なく前置きが長いが、どうも書きたくなってしまう性分のようで。
これも何かのアウトプットになっているのだろうと書きながら思う。

今回は少し息抜きでちょっとしたお遊びをする。(理解を深める復習には変わりない。)

##### お品書き
+ コマンドラインからのデータ入力
+ CmdLineのSample
+ 試してみよう

—-

##### ◆コマンドラインからのデータ入力
javaコマンド実行時にプログラムにデータを渡せる。

どゆこと?

今まではjava クラス名
これだけをコマンドラインに入力していた。
“`cmd:cmd
C:\Java\1>ja

安易な継承の落とし穴

継承を行った子クラスは、継承元の親クラスの一種として扱われます。
その為、一部のフィールドやメソッドのみを流用する目的で継承すると、継承されている機能の一部が、誤った用途で使用できてしまう場合があります。
このような事態を避ける為には親クラスと子クラスの関係性に注意する必要があります。

親クラスのメソッド等を子クラスで全て利用する場合は良いですが、親クラスのメソッドを一部使わない場合は注意が必要です。

Hello Worldからの復習 〜配列編〜

昔、バスケの練習で何パターンかオフェンスの練習していて、何故この動きが必要かあまり理解せずやっていたら試合で防がれ、何故防がれたかしっかり理解できず、攻め倦んで監督から怒りの〇〇を喰らった記憶がある。

実務のテストでは、配列を良く使いました。
例の如く何となくでやっていました。
問題なく動いていましたが、理解は浅く、何がどうとかいう説明は、、、

できません。。。

結構惨めな思いをしたのも前進する為の糧。

**お品書き**
+ 配列って?
+ 配列の生成
+ 配列の初期化
+ 多次元配列
—-

##### 配列って?

同じデータ型の変数を複数まとめて管理するもの
配列の生成には**new**を使う。生成時にデフォルト初期値が設定される。
`(0、’ ‘(空文字)、false)`

**データ型[] 配列名 = new データ型[要素数];**

例えば点数を3つまとめて管理するなら
`int[] score = new int[3] ;`

配列は参照型のため、変数には参照値が入る。

※作った変数scoreのイメージ図
| score |
|:-:|
| (  ) |