- 0.0.1. Mac の Homebrew で複数バージョンの Java を利用する
- 0.0.2. #5 Springで画面の入力値を受け取り表示する
- 0.0.3. 未だにNPEを出すエンジニアが反省する備忘録
- 0.0.4. #4 Spring BootでH2 DataBaseを利用する
- 0.0.5. Excelワークシートにセルの罫線を追加・削除する方法(Java)
- 0.0.6. Lucene がやっていることをまとめてみた。
- 0.0.7. static修飾子についての覚え書き
- 0.0.8. 機械学習、Java、GridDBを利用した不正取引検知
- 0.0.9. eclipseとmavenとspring ざっくり説明
- 0.0.10. Atcoder 競プロ典型90問 【004 Cross Sum】 Javaで詰まった話
- 0.0.11. IBM Cloud® Code Engine に超シンプルなWARアプリをibmcloud CLIからデプロイする
- 1.
- 1.0.1. Spring Cloud FunctionでAzure Functionsアプリ
- 1.0.2. 【mybatis】接続先DBをSQLの内容等で振り分け【Java, Spring】
- 1.0.3. Struts1.3でWebアプリケーションを開発してみた
- 1.0.4. SDK30以降で”com.android.camera.action.CROP”のintentが機能しない
- 1.0.5. mvnコマンドを走らせたときにエラーが出る
- 1.0.6. Lucene が 結果を取得する様子を探ってみる
- 1.0.7. SQL文を自動生成するプログラムをつくる⑦
- 1.0.8. JTableをマウスホイールでスクロールさせる
- 1.0.9. SQL文を自動生成するプログラムをつくる⑥
Mac の Homebrew で複数バージョンの Java を利用する
# 概要
Mac の Homebrew で複数バージョンの Java を利用するときのメモ。
なお、複数バージョンの Java を利用する方法としては jEnv を使う手もある。しかし毎回なにで Java を入れているのか忘れて「Homebrew かな?それとも別の何か…?」と混乱するので、もう Homebrew を使うことにした。# 既存の Java をアンインストールする場合
Mac から既存の Java をアンインストールしたい場合は以下のようにする。
公式では以下のコマンドが推奨されている。“`bash
$ sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
$ sudo rm -fr /Library/PreferencesPanes/JavaControlPanel.prefPane
$ sudo rm -fr ~/Library/Application\ Support/Oracle/Java
“`しかしこれだけでは JDK までは削除できない。
以下のコマンドで場所を確認
#5 Springで画面の入力値を受け取り表示する
# #5 Springで画面の入力値を受け取り表示する
今回は画面から入力された値を別画面に表示していきたいと思います。# 前回まで
今回はH2データベースを利用しますが、必要な設定は前回の記事を見てください!https://qiita.com/Jackoguro/items/25ea687b526da1b4267d
# 前提条件
この記事はSpringの最低限の知識が必要になります。
また、なるべく分かりやすく書くつもりですが、この記事の目的は自分の勉強のアウトプットであるため、所々説明は省略します。# 構築環境
1. 各バージョン
Spring Boot ver 2.7.52. 依存関係
依存関係は前回の記事と一緒です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884987/5f49ffae-5b2a-5ccf-5357-ff8a7e2a6b4e.png)# 成果物
![image.png](https://qiita-image-store.s3.ap
未だにNPEを出すエンジニアが反省する備忘録
Javaにおける[NPE(Null Pointer Exception)](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/NullPointerException.html)は「nullのオブジェクトを使おうとしてるぞ」という例外です。例えば`myNote.getLines()`という文はコンパイル時にエラーを出しません。ただ、`myNote==null`の時に`null.getLines()`を実行することになり「nullにgetLines()なんてメソッドはない」という原因でNPEが投げられます。
Javaの参照型オブジェクトは全てnullが入りうるのですが、それを利用すると例外が出ます。危ない。「[null安全](https://atmarkit.itmedia.co.jp/ait/articles/1803/15/news012.html)」という言葉があるくらいですから、丁重に扱うべきでしょう。
nullを安全に扱う方法や仕組みは色々ありますが主に[Optional](https://docs.oracle.
#4 Spring BootでH2 DataBaseを利用する
# #4 Spring BootでH2 DataBaseを利用する
Spring BootでH2 DataBaseを利用して簡単なプログラムを作成する前段階として、この記事では接続設定、テーブル、挿入するデータの作成を行いたいと思います。# 前提条件
この記事はSpringの最低限の知識が必要になります。
また、なるべく分かりやすく書くつもりですが、この記事の目的は自分の勉強のアウトプットであるため、所々説明は省略します。# 構築環境
1. バージョン
Spring Boot ver 2.7.52. 依存関係
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884987/33a68c11-81eb-9629-3002-e54230e0b285.png):::note
**Spring Boot DevTools:** Webアプリケーションを自動で再起動してくれる
**JDBC API**, **Spring Data JDBC:** JDBCを使用してSQLを実行でき
Excelワークシートにセルの罫線を追加・削除する方法(Java)
Excelでは、罫線は個々のセルまたはセル範囲の周囲に描かれる線です。この罫線は、グリッド線とは異なり、既定ではセルに適用されません。場合によっては、Excelのワークシートで目立たせるために、特定のセルに罫線を追加する必要があることがあります。この記事では、無料の[Free Spire.XLS for Java](https://jp.e-iceblue.com/introduce/free-spire-excel-for-java.html)を使用して、Javaで**Excelのセルの罫線を追加または削除する方法**について説明します。
– **[Excelワークシートのセルにボーダーを追加する](#excelワークシートのセルにボーダーを追加する)**
– **[Excelワークシートのセルの罫線を削除する](#excelワークシートのセルの罫線を削除する)**## 【依存関係の追加】
> **この方法は、無料のFree Spire.XLS for Javaが必要ですので、先にjarファイルをインポートしてください。**### 1. Maven
Maven を使用して
Lucene がやっていることをまとめてみた。
## Lucene のソースコードを読んでみました。
Java の勉強をしたいと思って、Lucene の ソースコードを読んでみました。簡単に言えば、下のコードの流れのソースコードを1つ1つ拾った感じです。
“`java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.io.IOException;
import java.io.File;import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.codecs.simpletext.SimpleTextCodec;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field.Store;
impo
static修飾子についての覚え書き
# はじめに
Javaの修飾子に関しての覚え書きです。
この情報は不正確かもしれないのでご了承ください。# static修飾子
static修飾子つけたメゾッドは、Processingでいう関数のようなものになる。
つまり、staticなメゾッドは呼びだすために、わざわざインスタンスを生成する必要がない。
## Processingのメゾッド、関数
Processingにおいては、「クラスメゾッド」と「関数」は区別されており、関数はクラスの外に独立して記述できる。以下が実際の例
“`java:Exam.pde
class Exam{public void methodA(){ //これがクラスメゾッド
println(“Example1”);
}
}
“`
“`java:methodA.pde
public void methodA(){ //これが関数
println(“Example2”);
}
“`
以上2つを呼び出すときは以下のようにする。(そもそもProcessingでは、Javaにおけるメインメゾッドが「setup関数」
機械学習、Java、GridDBを利用した不正取引検知
今日、金融の世界では、金融データが新しい通貨となっています。しかし、ますます拡大する金融データを従来の統計的手法で処理することは難しくなってきています。機械学習は、企業価値や株価、あるいは金融詐欺の検出といった形で金融データを予測するプログラムの作成を可能にする一連のテクニックとモジュールを提供します。
本稿では、クレジットカード決済を利用したお客様の不正取引を検知することができる決定木の作成について説明します。本レポートでは、Javaプログラミングを用いた決定木の実装を取り上げます。この記事ではまず、機械学習アルゴリズムの主な要件について説明します。次に、データセットとその主な構成要素について説明します。その後、決定木を使って決定木を実装を行います。最後に、GridDB の read、write、store メソッドを実装し、展開とテストのためにデータを保存しています。
[ フルソースコードはこちら ][1]
## 必要条件
Weka 3.9: weka.jar ファイルをダウンロードし、以下のパスに配置します。
/usr/share/java/.GridDB 4.6:イ
eclipseとmavenとspring ざっくり説明
java bronze合格して開発者を目指し始めた初心者向けの説明
今までプリミティブ型の最大桁数くらいしか習ってなかったのにいきなりいろんな用語でてきてわかんないよ!っていう人向け
_______
ビルド
javaアプリケーションを作成するには、「ビルド」という手順を踏まなければいけません。
「ビルド」という手順を容易に済ませてくれるのが「ビルドツール」です。
_______maven
mavenはビルドツールです。
mavenの場合、ビルドの設定を記載するファイルはpom.xmlになります。_______
spring
springはjavaのソースファイルを書くのに役立つフレームワークです。
(cssのフレームワーク「Bootstrap」のように、おまじない入れるだけで簡単に実装できたりします。)
利用するにはビルドツールの設定ファイルに記載が必要です。_______
eclipse
eclipseにstsをいれると、プロジェクトの新規作成からspringプロジェクトが選べるよ
Atcoder 競プロ典型90問 【004 Cross Sum】 Javaで詰まった話
こんにちは、[Kuni](https://qiita.com/kuniengineer)です。現在Javaを学習中で、Atcoderでコーディング力を高めているところです。
そこで[競プロ典型90問 004-CrossSum](https://atcoder.jp/contests/typical90/tasks/typical90_d)において、TLEが続いてしまい詰まったので、共有します。# TLEのプログラムとACのプログラム
TLEとなってしまったプログラム
“`java
import java.util.*;public class Main {
public static void main(String[] args){
//標準入力受け取り準備
Scanner scanner = new Scanner(System.in);//Intで読み込み
int H = scanner.nextInt();
int W = scan
IBM Cloud® Code Engine に超シンプルなWARアプリをibmcloud CLIからデプロイする
# 概要
1. WAR を作成
1. Dockerfile を作成する
1. Code Engine にデプロイする# WAR の準備
サンプルとしてこんなWebアプリを用意しておきます。
今回はJSPを配置しただけのものです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/7b1e0289-c1f7-18c2-2fdb-118b8f35a4e3.png)
“`jsp:index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
Hello
<%=new java.util.Date()%>
- OK
Spring Cloud FunctionでAzure Functionsアプリ
# はじめに
Spring Cloud Functionとは、関数(Function)によってビジネスロジックを実装し、実行環境に依存せず、同じコードでWebエンドポイント、ストリーム処理、タスクを実行できるようにするフレームワークです。
AWS LambdaやAzure Functionsなどのサーバーレス環境で動作させることができます。
要はSpringの便利機能を使いながらFunction開発できますというシロモノです。https://spring.io/projects/spring-cloud-function
この記事ではSpring Cloud Function × Azure Functionsを試してみます。
Mavenを使っているサンプルが多かったので、Gradleでプロジェクト作成したいと思います。https://learn.microsoft.com/ja-jp/azure/developer/java/spring-framework/getting-started-with-spring-cloud-function-in-azure
【mybatis】接続先DBをSQLの内容等で振り分け【Java, Spring】
# 接続先DBをSQLの内容等で振り分け
### 概要
・負荷分散、データ分割などの理由で接続先のDBを振り分けたい
・org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource を利用
・MyBatis のSQL実行をインターセプト## 環境
・SpringFramework 4
・mybatis 3.2
・mybatis-spring 1.2
・mysql (jdbc)## 構成
・Source/Replica (Master/Slave)
・デフォルトは Source の方に接続、特別な場合に Replica の方へ接続するなどコードで色々設定が可能
・インターセプターで接続先を設定する## コード
### DynamicDataSource
“`java
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;public class DynamicDataSource extends
Struts1.3でWebアプリケーションを開発してみた
## はじめに
Struts1.3を使ってWebアプリケーションを開発したので、開発を通じた経験・感想を記事にしてみました。
「今さらStruts??」というのが正直なところですが、現在入っている現場で使用されているフレームワークがStruts1.3であり、勉強も兼ねて、このフレームワークでの開発を選択しました。以下が、ソースリポジトリ(GitHub)へのリンクです。
[struts-school-search](https://github.com/shu0n/struts-school-search)
Docker上で起動する想定の構成にしていますので、各々の環境で起動していただき、ご意見をいただければ幸いです。## どんなWebアプリケーションを開発しよう、、、
開発するにあたって、どんなWebアプリケーションを開発するかをまず考える必要があります。
あまり簡単なアプリケーションだとあまり勉強にはなりませんし、大きすぎると完遂できずに終わってしまいます。
その辺りを考慮して、以下の目的をもったWebアプリケーションを開発することにしました。– 主催しているスクール情報
SDK30以降で”com.android.camera.action.CROP”のintentが機能しない
## はじめに
– SDK30以降デフォルトで入っているギャラリーアプリ以外で画像のクロップができなくなった## 元のコード
“`java:ImageEditActivity.java
Intent intent = new Intent(“com.android.camera.action.CROP”);
//intentに対して色々
grantPermissions();
startActivityForResult(intent, requestCode);
“`“`kotlin:PermissionsManager.kt
fun grantPermissions(){
context.packageManager.queryIntentActivities(
intent,
PackageManager.MATCH_DEFAULT_ONLY
).forEach { resolveInfo ->
//権限の付与
}
}
“`ちなみに`startActivit
mvnコマンドを走らせたときにエラーが出る
## 現象
SpringBootプロジェクトをビルドしようと`mvn package`コマンドを走らせたときに次のようなエラーが発生した。“`.bash
Execution default-jar of goal org.apache.maven.plugins:maven-jar-plugin:2.6:jar failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-jar-plugin:2.6:jar: java.lang.ExceptionInInitializerError: null
“`## 解決方法
[このリンク](https://github.com/Kotlin/kotlin-interactive-shell/issues/63)に解決方法が紹介されていた。どうやらmavenプラグインのバージョンが古いことが問題らしい。
やることは単純で、pom.xml中の`maven-jar-plugin`のバージョン指定を`3.0.0
Lucene が 結果を取得する様子を探ってみる
自分用の備忘録なので結構はしょります。後で記事にします。
## Lucene の IndexSearcher.search の createWeight は文書結果を取得しない。
createWeight は BM25 ? などで使う 統計情報を取得するだけで、マッチした文書の一覧取得までは行っていない。
SimpleTextCodec ですが [ここら辺のコード](https://github.com/apache/lucene/blob/44b4602776a63d93896d887e5000c9e3ca7c3119/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextFieldsReader.java#L722-L727) を見れば、`lastDocsStart` しかインデックスしていないことが分かる。
“`java
fstCompiler.add(
Util.toIntsRef(lastTerm.get(), scratchI
SQL文を自動生成するプログラムをつくる⑦
# はじめに
この記事は[「SQL文を自動生成するプログラムをつくる⑥」](https://qiita.com/NotNor/items/1a4bc01aac06067780c9)からの続きです。今日知ったことなんですけど、
マクロを使えばSQL文の生成がある程度自動化できるみたいですね。
ちょっと落ち込みました。まあ、プログラムは完成させますが…# 前回までのあらすじ
①. SQL文を自動生成するプログラムを作ることを決めた
②. DBの各値を格納するエンティティ(偽)を検討
③. エンティティ(偽)のコーディング
④. SQL文の自動生成部分(GenerateSqlクラスとする)の設計
⑤. GenerateSqlクラスのreadCsvFile メゾッドのコーディング
⑥. readCsvFile メゾッドのテストと問題点の整理
⑦. SQLの復習から予定変更。ちょっと思いついたことがあるのでそれをやる ←今回# csvToAttributes メゾットを作る
[前回](https://qiita.com/NotNor/items/1a4bc01aac06067780c
JTableをマウスホイールでスクロールさせる
CustomV4でテーブルを左右に連結したときに、スクロールバーを片方のテーブルにしか表示させない場合、スクロールバーを表示していない側のテーブルがスクロールできなかった。
以下のようにしたらスクロールできたのでメモがてらまとめておく。
“`
scrollLeft.getViewport().addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
JViewport vport = scrollLeft.getViewport();
Point vp = vport.getViewPosition();
vp.translate(0, e.getWheelRotation()*getTableFixed().getRowHeight());
getTableFixed().scrollRectToVisible(new Rectangle(vp
SQL文を自動生成するプログラムをつくる⑥
# はじめに
この記事は[「SQL文を自動生成するプログラムをつくる⑤」](https://qiita.com/NotNor/items/0fdeb470efd52a0fe011)からの続きです。# 前回までのあらすじ
①. SQL文を自動生成するプログラムを作ることを決めた
②. DBの各値を格納するエンティティ(偽)を検討
③. エンティティ(偽)のコーディング
④. SQL文の自動生成部分(GenerateSqlクラスとする)の設計
⑤. GenerateSqlクラスのreadCsvFile メゾッドのコーディング
⑥. SQLの復習(予定) しかし、readCsvFile メゾッドの問題発覚 ←今回# メゾッド readCsvFile を使ってみる
前回、メゾッド readCsvFile をコーディングしたのですが、実際に動くか試していなかったので、やってみました。標準入力からcsvファイルのパスを読み込んで、csvファイルの行と列を取得することで動作確認としました。
まず、以下のコードでやろうとすると、
“`java:Test.java
import java.io