tanakahdaのプログラマ手帳

プログラミングとかソフトウェア開発とかの備忘録

Java

入出力でフォルダを再帰的に操作する@Java

Files#walkFileTreeは、ディレクトリ構造を再帰的に走査する。walkFileTreeメソッドの2つ目の引数にFileVisitorインターフェースの実装をセットする。 /** * 指定したディレクトリ配下をすべて削除します。 * * @param dir * @throws IOException */ public…

javax.tools.JavaCompilerでコンパイルするときにクラスパスを指定する@Java

javax.tools.JavaCompilerでコンパイルするときに外部jarにクラスパスを通して実行する方法を調査。 javax.tools.JavaCompilerのオプションで"-cp"または"-classpath"を指定する。例えば、以下のように書くことができる。 JavaCompiler compiler = ToolProvi…

Hello JavaFX@JavaFX

Hello.java package com.tanakahda; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class Hello extends Application { @Overri…

jarファイルの中身を別フォルダへ出力@Java

jarファイルの中身を取り出して別フォルダに出力できるかやってみたところ後述のソースコードでできた。 ChatGPT先生に教えてもらった。 下記のプロジェクトを実行可能なjarしたあとに、実行すると自分自身の中身をhogeフォルダへ出力したい。 できた。 impo…

ProgressMonitorで進捗率を表示する@Java Swing

package tanakahda.apps.progressmonitor; import java.util.concurrent.TimeUnit; import javax.swing.JFrame; import javax.swing.ProgressMonitor; public class Main { public static void main(String[] args) { var frame = new JFrame(); frame.setSi…

Velocity2.3でのループカウンター変数@Java

$velocityCountじゃなくて、$foreach.countや$foreach.indexを使う。 #foreach($object in $ $list) $foreach.count #end 1 2 3 $foreach.indexの場合は、0からカウント

Javaプログラムでjarファイルを生成する@Java

public static void main(String[] args) { ProcessBuilder pb = new ProcessBuilder("jar", "-cvf", "./sample.jar", SOURCES); try { Process proc = pb.start(); int resultCode = proc.waitFor(); System.out.println(resultCode); } catch (IOException…

alternativesコマンドでJavaのバージョンを切り替える@Java

CentOSにOpenJDK1.8と18の両方をインストールしている場合。 [tanakahda@server ~]$ java -version openjdk version "1.8.0_332" OpenJDK Runtime Environment (build 1.8.0_332-b09) OpenJDK 64-Bit Server VM (build 25.332-b09, mixed mode) [tanakahda@s…

機能単位でControllerクラスを複数作成してリクエストマッピングする@Spring Boot

IndexController.java package com.example.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/") public class IndexController { publ…

Spring Data RESTとSwaggerの設定@Spring Framework

pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.5.9</version> </dependency> <dependency> <groupId>org.springdoc…</groupid></dependency>

JListのセルをカスタマイズする(GridBagLayout)@Java Swing

package com.tanakahda.apps.swing.jlist.customcell.a005; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import ja…

JListの元データに、追加で文字を付与したJLabelをカスタムセルにしてみる@Java Swing

/** リストの元データ */ private String[] data = {"Tanaka", "Tomita", "Ito"}; package com.tanakahda.apps.swing.jlist.customcell.simple_customcell; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import javax.…

JListのデータセットに独自クラスを設定する@Java Swing

package com.tanakahda.apps.swing.jlist; import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JPanel; public class JListExample extends JPanel { private JList list; JListExample() { setLayout…

テキストのドラッグアンドドロップ@Java Swing

package com.tanakahda.apps.swing.draganddrop; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class DnDBetweenJTextAreaAndJTextFieldD…

GETの値を取得する@SpringBoot2

package com.example.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestPa…

「宣言を開く」のあとに戻る@Eclipse

ヒストリーを戻る (Backward History) ... Macの場合「option + command + Left」、Windowsの場合「Alt + Left」

エディターで開いているクラス内の変数やメソッドへリンクするショートカット@Eclipse

Commad + o

Generics@Java

package com.tanakahda.apps.generics; public class GenericsExample<T> { private T value; public T getValue() { return value; } public void setValue(T value) { this.value = value; } public GenericsExample(T value) { this.value = value; } } pack</t>…

Hello SpringBoot2@Java

HelloController.java package com.example.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping("/") publ…

Recordクラス@Java

package com.tanakahda.apps.record; public record Vehicle(int gas) { } package com.tanakahda.apps; import com.tanakahda.apps.record.Vehicle; public class Main { public static void main(String[] args) { var car = new Vehicle(60); System.out.…

デリミタで複数の文字列を区切りながら結合(String#join)@Java

// String.join(CharSequence delimiter, CharSequence elements...) String csvHeader = String.join(",", "column1", "column2", "column3"); System.out.println(csvHeader); column1,column2,column3 よく行われる処理として、", " や "/" といったデリ…

ラムダ式を使って繰り返し処理を実装する@Java

public static void main(String[] args) { repeat(5, () -> System.out.println("Hello World!")); } public static void repeat(int n, Runnable runnable) { for (int i = 0; i < n; i++) { runnable.run(); } } Hello World! Hello World! Hello World! …

最大公約数@Java

public static void main(String[] args) { System.out.println(calcGCD(54, 81)); } private static int calcGCD(int x, int y) { if (y == 0) { return x; } else { return calcGCD(y, x % y); } } 27

素因数分解@Java

Scanner scanner = new Scanner(System.in); System.out.println("0以上の整数を入力してください > "); int num = 0; try { num = Integer.parseInt(scanner.nextLine()); } catch (NumberFormatException e) { System.err.println("数字を入力してください…

フィボナッチ数列@Java

// 計算する月数(3年) final int MONTHS = 36; // お父さんウサギの数1匹 final int DAD = 1; // nヶ月後のウサギの総数を格納する配列。ただしお父さんウサギはカウントしない。 int f[] = new int[37]; // 1〜3ヶ月目はお父さんウサギの他もう1匹いるので…

メソッド参照@Java

var list = new ArrayList<String>(){{ add("tanaka"); add("Tomita"); add("ito"); add("kenmoto"); }}; list.forEach(System.out::println); tanaka Tomita ito kenmoto String[] names = {"tanaka", "Tomita", "ito", "Kenmoto"}; Arrays.sort(names, String::com</string>…

ラムダ式でComparatorを実装する@Java

String[] names = {"tanaka", "tomita", "ito", "kenmoto"}; // ラムダ式を使わない場合 class LengthComparator implements Comparator<String> { @Override public int compare(String o1, String o2) { return Integer.compare(o1.length(), o2.length()); } } Ar</string>…

バブルソートの実装@Java

package examples; import java.util.Arrays; public class BubbleSort { public static void main(String[] args) { int[] score = {98, 23, 32, 63, 55}; // 一番最後の要素は左右の比較が不要なので「-1」する final int COMPARE_COUNT = score.length - …

Eclipse3.7でJavaプロジェクトのプロパティを取得

String property = null; IProject project = ((IJavaProject) getElement()).getProject(); try { property = project.getPersistentProperty( new QualifiedName(Activator.PLUGIN_ID, PROPERTY_KEY)); } catch (CoreException e) { e.printStackTrace(); }

Twitter4jでGEOタグ付きツイート

// 経度緯度はhttp://www.geocoding.jp/から取得可能 // 渋谷駅からツイートしたことにしてみる /** 緯度 */ private static final Double LATITUDE = 35.658517; /** 経度 */ private static final Double LONGITUDE = 139.701334; /** * @param args */ pu…