JAVA関連のことを調べてみた2020年09月28日

JAVA関連のことを調べてみた2020年09月28日

MS932 CP943C 変換問題

Shift_JIS の文字を Unicode に変換する際、文字エンコーディング(=変換テーブル)が異なると問題になることがある。

#Shift_JIS
Shift_JIS では「あ」を「0x82A0」、「い」を「0x82A2」、「う」を「0x82A4」で表すように決められている。
Shift_JIS のテキストファイルで「あいう」と書いて、バイナリエディタで開くと確認できる。

あ 0x82A0 (Shift_JIS)
い 0x82A2 (Shift_JIS)
う 0x02A4 (Shift_JIS)

図.バイナリエディタでShift_JISのテキストファイルを開いたところ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110265/4aa3237f-a948-cbc9-615d-13836b388218.png)

#Shift_JIS -> Unicode 変換 (MS932)

Shift_JIS と Unicode では文字(上の例では「あ」)とコード(上の例では「0x

元記事を表示

super-csvを使用したcsv出力処理

##### 1.目的
scheduleの内容をCSV出力したい

>Top画面で表示しているscheduleテーブルの内容を結果DLボタンを押下してCSV出力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/497973/3249b3a8-2a86-9353-257d-04447f088b00.png)

##### 2.事前準備
build.gradleにsuper-csvを追加

“`build.gradle
plugins {
id ‘org.springframework.boot’ version ‘2.3.3.RELEASE’
id ‘io.spring.dependency-management’ version ‘1.0.10.RELEASE’
id ‘java’
}

group = ‘com.example’
version = ‘0.0.1-SNAPSHOT’
sourceCompatibility = ’11’

configurations {
comp

元記事を表示

Spring Batchを試してみた

## 概要
STSを使ってSpring Batchを使ったときの備忘録を残しておきます。
主に自分用。
Spring Batchとは、Spring Frameworkをベースにしたバッチアプリケーションフレームワークです。

開発環境は次の通りです。
OS : Windows 7 Home Edition 64bit
Java : JavaSE 8 update 181
Spring Boot : 2.3.4
STS : 4.6.1

## STSのセットアップ
STSのセットアップは[自分の備忘録](https://qiita.com/harayoshi/items/fca60e68087640b26292)を参考にしました。

## プロジェクトの作成
下記のCreate new Spring Starter Projectをクリックします。
![createProject.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533981/0ff83636-3af2-9431-0e17-76b953568

元記事を表示

Javaラムダ式についてまとめてみた

## ラムダ式とは
Java8で導入された新しい文法。
ローカルクラスと無名クラスを利用して記述する内容を省略して処理記述を簡潔にする。
代表的な例としてCollections.sortやStreamAPIのメソッドが恩恵を受けた。

## ラムダ式について分解
ラムダ式はローカルクラスと無名クラスという仕組みを利用しています。

1.ローカルクラス
>ローカルクラスとはメソッドの処理中でクラスを宣言して利用できる仕組みです。

“`java
public static void main(String[] args) {

class Local {
public void sayHello() {
System.out.println(“Hello!”);
}
}

Local local = new Local();
local.sayHello(); // Hello!
}
“`

インターフェースを実装したローカルクラスを定義することもできます。

“`java
public static void main(String[]

元記事を表示

LINEの通知から色々な情報をスクレイピングする

# はじめに
2011年6月23日にLINEサービスが開始され今年で9年目になりますが、国内の月間アクティブユーザー数が約8,700万人ということで、身近でもLINEを使っているという方はほとんどだと思います。
普段のやり取りは主にLINEで行うと思いますが、頻繁に使うLINEからデータが取れれば色々活用できると思い、どうにかやりとりの情報を取得できないかと考えました。

私はこの方法を使って、LINEの通知音・着信音を個別に鳴り分けるようにする「ピックアップ通知音」というアプリをGoogle Playに公開しています!
https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409628/e48b6416-da86-2db1-0c9a-0c1a5c4be66e.pngインタフェースと抽象クラスの使い分け

#インタフェースと抽象クラスをどう使い分ける?
初心者が、インタフェースと抽象クラスがどんなものかを理解して、次に疑問に思うのは
__それぞれ、どう使い分ければ良いの?__
ということではないかと思います。

#インタフェースは使用者のため、抽象クラスは実装者のため

– インタフェースは__呼び出す人のため__にメソッドのAPIを定義する
– 抽象クラスは__子クラスを実装する人のため__に一部を実装する

端的に言えば、これだけです。

#具体的には
ポリモーフィズムを使用して呼び出してもらいたいクラスは、インタフェースを実装しましょう。

使う側は、抽象クラス型の変数は宣言するべきではないです。
インタフェース型で変数を宣言しましょう。

“`java
AbstractFooBar = new FooBar(); // NG
IFooBar = new FooBar(); // OK
“`

抽象クラスを仮引数の型とするメソッドも定義するべきではありません。
インタフェース型を指定しましょう。

“`java
void fooMethod(AbstractFooBar fo

元記事を表示

【Springframework】プロキシサーバー利用時のRestTemplateによるHTTPリクエストのエラー対応

# 概要
プロキシサーバーを利用してインターネットにアクセスするネットワーク環境下でSpringのRestTemplateを利用して、外部のAPIにリクエストを送信しようとしたところエラーが発生しました。

普段開発する環境ではプロキシサーバーを利用しておらず調査に時間がかかったので、今回対応した方法をメモしておきます。

# 発生した事象
プロキシサーバーを利用してインターネットにアクセスするネットワーク環境下で`RestTemplate.exchange`を利用して外部APIを利用してGETリクエストをしたところ下記のエラーが発生。

ただし、同じAPIをブラウザ(Chrome)でアクセスした際にはレスポンスがきちんと返ってきている状況でした。

### エラーメッセージ
“`java

org.springframework.web.client.ResourceAccessException: I/O error on GET request for “{targetURL}”:
Connection refused: connect;
nested exception

元記事を表示

Eclipse を使って Tomcat プロジェクトを作成する

## はじめに
* Eclipse を使って Tomcat プロジェクト(Java Servlet)を作成する方法についてまとめました。

## 概要
* Java Servlet とは、Java で実装された WEB アプリケーションにおいて、動的 WEB ページを生成するプログラムです。WEB アプリケーションは、サーバ・クライアントシステムになっており、以下の図のように、クライアントがサーバにリクエストを送信し、サーバがクライアントにレスポンスを返して動作します。

* Java Servlet は単体で動作するのではなく、サーブレットコンテナと呼ばれるソフトウェアと一緒に動作します。Tomcat とは、このサーブレットコンテナに該当します。WEB ブラウザから WEB サーバにリクエストを送信すると、Tomcat

元記事を表示

Eclipse を使って Jetty プロジェクトを作成する

## はじめに
* Eclipse を使って Jetty プロジェクト(Java Servlet)を作成する方法についてまとめました。

## 概要
* Java Servlet とは、Java で実装された WEB アプリケーションにおいて、動的 WEB ページを生成するプログラムです。WEB アプリケーションは、サーバ・クライアントシステムになっており、以下の図のように、クライアントがサーバにリクエストを送信し、サーバがクライアントにレスポンスを返して動作します。

* Java Servlet は単体で動作するのではなく、サーブレットコンテナと呼ばれるソフトウェアと一緒に動作します。Jetty とは、このサーブレットコンテナに該当します。Jetty は軽量で組み込みやすいのが特徴です。WEB ブラウザから WEB サ

元記事を表示

JavaでTODOアプリを制作しよう9 TODOの表示を作成日時が新しい順にソートする + 期日のデフォルトを当日の日付にする

こんにちは。
今回の記事では今まで作ってきたTODOの微調整を行います。

## TODOアプリ作成リンク集
[1: [超基礎の理解] MVCの簡単な説明](https://qiita.com/nomad_kartman/items/bce2f4831b7b769f84f2)
[2: [雛形を用意する] Spring Initializrで雛形を作ってHello worldしたい](https://qiita.com/nomad_kartman/items/e173ea95b3ead96a412a)
[3: [MySQLとの接続・設定・データの表示] MySQLに仮のデータを保存 -> 全取得 -> topに表示する](https://qiita.com/nomad_kartman/items/f5f13037f048eeecf492)
[4: [POST機能] 投稿機能の実装] (https://qiita.com/nomad_kartman/items/113cdfc3c5cd1f5c0cef)
[5: [PATCH機能] TODOの表示を切り替える] (https://qiit

元記事を表示

JavaでTODOアプリを制作しよう8 編集機能の実装

こんにちは。
今回はJava Springで投稿されたTODOの編集機能部分を実装していきたいと思います。

## TODOアプリ作成リンク集
[1: [超基礎の理解] MVCの簡単な説明](https://qiita.com/nomad_kartman/items/bce2f4831b7b769f84f2)
[2: [雛形を用意する] Spring Initializrで雛形を作ってHello worldしたい](https://qiita.com/nomad_kartman/items/e173ea95b3ead96a412a)
[3: [MySQLとの接続・設定・データの表示] MySQLに仮のデータを保存 -> 全取得 -> topに表示する](https://qiita.com/nomad_kartman/items/f5f13037f048eeecf492)
[4: [POST機能] 投稿機能の実装] (https://qiita.com/nomad_kartman/items/113cdfc3c5cd1f5c0cef)
[5: [PATCH機能] TODOの表示を切り

元記事を表示

Eclipse を使って Java プロジェクトを作成する

## はじめに
* Eclipse を使って Java プロジェクトを作成する方法についてまとめました。

## 動作環境
* Windows 10(64bit)
* OpenJDK 11
* Eclipse IDE for Java Developers(Version: 2020-06)

## 開発環境構築①:OpenJDK 11 インストール
Eclipse を動かすためには JRE(Java Runtime Environment)が必要になります。ここでは、JRE 取得のために OpenJDK をダウンロードします。JRE をインストールしていないと、Eclipse 起動時にエラーになるので、Eclipse のインストール前に行う必要があります。

1. 以下の OpenJDK の公式サイトに移動し、「Download」項目内の `jdk.java.net/14` のリンクをクリックします。( `jdk.java.net/14` のリンクは、OpenJDK がバージョンアップされる度に変わります。)
https://openjdk.java.net/

元記事を表示

Oracle公開されたTribuoを気を取り直してやってみた。Tribuo – A Java prediction library (v4.0)

##前置き
[いろいろ思うところもあるが、文句だけ言っていても始まらない。](https://qiita.com/jashika/items/1ba0cad613ec919adaa7)
むしろ俺がこれ作るからOracleが俺を雇え。ください。

##資料について
[元ネタはこちらを参照してください。](https://tribuo.org/learn/4.0/docs/)
[日本語が必要ならこちらを参照してください。](https://qiita.com/jashika/items/bc03dbbca92ba38f4502)
[データのダウンロードはこちらを参照してください。](https://archive.ics.uci.edu/ml/machine-learning-databases/iris/)

##どうにかして動かす
[bezdekIris.data](https://archive.ics.uci.edu/ml/machine-learning-databases/iris/bezdekIris.data)をダウンロードします。

[マニュアルGatting Star

元記事を表示

Oracle公開されたTribuoをやってみた。Tribuo – A Java prediction library (v4.0)

実際にやってみた。
結論から言うととっても不安になった。あと、フレームワークを名乗るなら、英語でいいからjavadocはちゃんと書け。
それから、マニュアル直すのではなく、実装コードをきちんと直したほうがいいぞ。

#セットアップ
依存性の解決にはmavenを使用しました。プロジェクト作成後、下記のようにtribuoをpomファイルに設定します。

“`

org.tribuo
tribuo-all
4.0.0
pom

“`

ロジスティック回帰モデルを学習し、評価するには[下記のようにすればよい](https://qiita.com/jashika/items/bc03dbbca92ba38f4502)と書かれているため、下記のコードをjavaクラスに記述します。

“`
var trainSet = new MutableDataset<>(n

元記事を表示

【IntelliJ IDEA】Javaファイル保存時にfinalを自動的につける方法

# やりたいこと
– Javaのコードを書くときに、immutableにしたい変数には、finalを付けておきたい
– ただ毎回finalを書くのは大変なので、ファイル保存時に自動的にfinalを付けるようにしたい

# 環境
– IntelliJ IDEA 2020.2.2
– Mac OS Catalina 10.15.7

# やり方
[Save Actions](https://plugins.jetbrains.com/plugin/7642-save-actions) プラグインを利用するので、「IntelliJ IDEA」 -> 「Preferences」 -> 「Plugins」 を押下して、Save Actionsをインストール
![スクリーンショット 2020-09-27 0.19.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160829/ffa9bad6-4be2-a9f3-8915-329c77241bec.png)

「IntelliJ IDEA」 -> 「Prefer

元記事を表示

Oracleから公開されたTribuoをさわってみた。ドキュメント Tribuo – Intro classification with Irises

※原文は [Intro classification with Irises](https://tribuo.org/learn/4.0/tutorials/irises-tribuo-v4.html) を参照してください。

# 分類チュートリアル

このチュートリアルでは、Fisherの有名なアヤメ(アイリス)データセットを使って、Tribuoの分類モデルを使ってアヤメ(アイリス)種を予測する方法を紹介します(今は2020年ですが、デモではまだ1936年のデータセットを使っています。次回は90年代のMNISTを使いますのでご安心ください)。ここでは、単純なロジスティック回帰に焦点を当て、Tribuoが各モデルの内部に保存しているデータの出所とメタデータを調査します。

“セットアップ“
アヤメ(アイリス)のデータセットのコピーを取得する必要があります。

“`
wget https://archive.ics.uci.edu/ml/machine-learning-databases/iris/bezdekIris.data
“`

まず必要なTribuoのjarライブラリ

元記事を表示

Oracleから公開されたTribuoをさわってみた。ドキュメント Tribuo – A Java prediction library (v4.0)

※ 原文は [Tribuo – A Java prediction library (v4.0)](https://tribuo.org/learn/4.0/docs/) を参照してください。

#Introduction
Tribuoは、機械学習モデルを構築・展開するためのJavaライブラリです。中心となる開発チームはOracle Labsの機械学習研究グループであり、このライブラリはApache 2.0ライセンスのもと、Github上で公開されています。

・API は強く型付けされており、モデル、予測値、データセット、例題のためのクラスがパラメータ化されています。

・APIは高レベルで、モデルは例題を消費し、予測値を生成しますが、float配列ではありません。

・APIは統一されており、すべての予測タイプは同じ(よく型付けされた)APIを持ち、Tribuoのクラスは予測タイプによってパラメータ化されています(例:分類はLabelを使用し、回帰はRegressorを使用します)。

・APIは再利用可能で、モジュール化されており、必要なものだけを小分けにしてパッケージ化されてい

元記事を表示

Javaに初めて触れてみた④

# Javaに触れてみた
自己満の備忘録ですのでご容赦ください

## いろいろ作ってみる
前回の続きです。

### ④4択クイズ応用
前回考えたこの機能の改善点
①[[1]明治大学, [2]法政大学, [3]早稲田大学, [4]立教大学]みたいにターミナルに配列の中身を表示させる時に[]を表示支えないようにする。
②選び直してください。の表示が出たら数字を入力できるようにする。多分繰り返し処理でできると思う。
③問題を増やす。
④問題をランダムで出題できるようにする。
⑤答えをランダム表示にできるようにする。

とりあえずできそうな所から手をつけます。②を改善します。

“`Test4.java
import java.util.Scanner;

import java.util.ArrayList;
import java.util.List;

class Test4 {
public static void main(String args[]) {
List array = new ArrayList();
array

元記事を表示

EHRbase入門2 – REST API

# はじめに
第2回目はREST APIを使ってEHRbaseとデータのやりとりを行います。EHRbaseには開発中を含めて多くのREST APIがあります。今回はそのうちでTemplate, Compositionに関係する以下のAPIを紹介します。

* POST EHR (EHRレコードの作成)
* POST EHR(外部IDつきでEHRレコードを作成)
* GET EHR (EHR IDでEHRレコードを読み出す)
* GET EHR (外部IDでEHRレコードを読み出す)
* POST Template(Tamplateの登録)
* GET Template (個別のテンプレートの読み出し)
* GET Template (テンプレート一覧の読み出し)
* POST Composition (Compositionの登録)
* GET Composition (Compositionの読み出し)
* PUT Composition (Compositionの更新)
* GET COMPOSITION (VersionごとにCompositionを読み出す)
* DELETE

元記事を表示

Javaで制約プログラミング

# はじめに

[制約プログラミング(Constraint Programming)](https://ja.wikipedia.org/wiki/%E5%88%B6%E7%B4%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)はプログラミングパラダイムの一つです。 制約プログラミングにおいては、変数間の関係を制約という形で記述することによりプログラムを記述します。
現在ではAIと言えばディープラーニングと同義のように言われたりしますが、かつてはこの制約プログラミングや数式処理などもAIと呼ばれていました。
Javaで制約プログラミングのライブラリを実装し、エイト・クイーン、覆面算、数独などの問題を解いてみます。

# 対象とする問題

最も単純な問題を対象とします。具体的には以下のような問題です。

* 変数の定義域は整数のみとします。
* 変数の定義域は有限で、その範囲は問題の中で定義されているものとします。

# 簡単な例題

説明のために簡単な例題を考えてみます。

* 式 a + b = c

元記事を表示

OTHERカテゴリの最新記事