- 1. MyNetアップデート履歴
- 2. JSONテキストをpretty printしたい — Gsonを使って
- 3. JavaCV で2つのMP4 ファイルを結合 & 開始時間終了時間を指定した切り出しを行う
- 4. インスタンス化とは [簡単にまとめてみた]
- 5. Java with MavenのGithub Actionを動かしてみる
- 6. AndroidでOkhttpとWebview間でCookie情報を共有するための実装例
- 7. Java インタフェースにおける変数
- 8. 【初心者】JavaのNullPointerExceptionの犯人探し
- 9. ひと言学習メモ2:クラス、フィールド、メソッド
- 10. Javaの::ってなんだ?
- 11. Javaのラムダ式とは?
- 12. Javaのマップとは?
- 13. コレクションフレームワークとは?
- 14. 【 『dokojava卒業』vs codeでJavaを使う (Mac OS) 】
- 15. Javaのループ制御について学んでみる
- 16. M1 Mac Java (Updated 2022/03)
- 17. JavaでAtCoder黄色になりました
- 18. コンピュータとオセロ対戦46 ~モデルの保存とロード~
- 19. JavaでPowerPointドキュメントの背景色と背景画像を設定する方法
- 20. Javaでブラックジャックを作成してみた(betあり, splitあり, double downあり, 8デック)_ソース編
MyNetアップデート履歴
# MyNetとは
私が作成した深層学習モジュールです。
この記事にアップデート履歴を記録していくので、バージョン情報が違った際に参考にしてください。https://github.com/TTaisei/MyNet
# 1
## 1.0
### 1.0.0
ミスにより動きません。
### 1.0.1
ミスを修正し、動くようにしました。
## 1.1
GitHubの操作が不慣れなため、新しいブランチを作成してしまいました。
### 1.1.0
Matrixクラスにappendメソッドを追加。
JSONテキストをpretty printしたい — Gsonを使って
## 解決したい問題
Java8でプログラムを自作していた。 自作のJavaクラスにtoString()メソッドを実装しようとした。 どういう形式のテキストを出力 するのがいいかと考えて、JSONテキストを出力することにした。 たとえば自作のJavaクラスがこんなテキストを出力するとしよう。
“`
{ “key”: “profile”, “value”: “DevEnv_1.2.3-beta”, “ignoredByKey”: true, “identifiedByValue”: true, “semanticVersion”: “1.2.3-beta”}
“`正しい形式のJSONになっている。しかし見づらい。このテキストをコンソールに表示しても役に立たない。 適切な改行と字下げを付け加えたい。 任意のJSONテキストを入力として、適切な改行と字下げを加えたJSONテキストに変換する、というメソッドを作りたい。 たとえば上記の横長なJSONテキストを下記のような形式に直したい。
“`
{
“key”: “profile”,
“value”: “DevEnv_1.
JavaCV で2つのMP4 ファイルを結合 & 開始時間終了時間を指定した切り出しを行う
JavaCV を使った動画ファイル制御を備忘として記録。
### 環境
* java version 1.8.0_51
* javacv 1.4.4
* opencv 4.0.1
* ffmpeg 4.1### 実装(MP4 ファイルを結合&切り出し)
* 1本目の動画(20秒)を 10 ~ 20秒切り出し
* 2本目の動画(20秒)を 0 ~ 15秒切り出し
* 1本目 + 2本目を結合して25秒の動画を出力する※配列でURLリストを取得しているが結合しているのはとりあえず2つだけ
“` java
/**
* 録画ファイルデータ結合
* 複数の.mp4形式のファイルを結合します。
*
* @param inputFileUrlList 入力URLList
* @param outputPath 出力先パス
* @throws org.bytedeco.javacv.FrameRecorder.Exception
* @throws org.bytedeco.javacv.FrameGrabber.Exception
* @thr
インスタンス化とは [簡単にまとめてみた]
# インスタンス化とは
クラスというのはただの「型」です。
型だけではクラスの中身というのは読み込まれません。
だけど、そのクラスをインスタンス化したら、そのクラスは読み込まれます。それだけです。インスタンス化しないと読み込むことはできません。
# まとめクラスはただの「型」であり、
クラスの中身を使うには。「インスタンス化」する必要があります。
Java with MavenのGithub Actionを動かしてみる
Mavenを利用したJavaのCIをGithub Actionで試してみました。
# Mavanインストール
記事を参考にMavenをインストールする。https://qiita.com/Junichi_M_/items/20daee936cd0c03c3115
# Javaプロジェクトを作成
mvnコマンドでJavaプロジェクトを作成する。https://qiita.com/hide/items/6593f3f02c3f28e57f2d
今回はGithubリポジトリを`java-test`で作成したので、`-DartifactId=java-test`とした。
“`
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DgroupId=com.sample -DartifactId=java-test
“`# pom.xmlの追記
デフォルトのpom.xmlだとビルドエラーが発生する。
“`
Error: Sou
AndroidでOkhttpとWebview間でCookie情報を共有するための実装例
Androidアプリで、HTTPクライアントにはOkhttpを使用することが多いですが、OkhttpとWebViewのCookie情報を共有したい時にどうするか悩むことがあるかと思います。
そこで、私が実践している実装例を書いて共有してみようと思います。
## Okhttp/WebViewで共有するCookieを保持するクラスの作成
OkhttpにてHTTPリクエスト時に行うCookie情報の設定は、OkHttpClientにCookiejarインタフェースを実装したクラスを指定する必要があります。(詳細はWebに転がっているので割愛)この時、以下のようなクラスを作っています。
まず、Okhttp/WebViewのHTTP通信で共通で使用するCookie情報を保持するインタフェースを定義し、その実装クラスを作成します。
“`kotlin:CookieStore.kt
/*
ネイティブ/WebViewのHTTP通信で共通で使用するCookie情報を保持
(実際はその他のメソッドも定義していますが長くなるので割愛)
*/
interface CookieStore {
Java インタフェースにおける変数
Oracle Certified Java Programmer, Gold SE 11の勉強をしていると、インタフェースの仕様をよく間違えるのでまとめておきます。
今回は変数編です。
## インタフェースにおける変数
どのバージョンのJavaでもインタフェースは`publi static final`な定数を宣言することができます。
`publi static final`な変数以外は許可されていない、つまり変数を定義した場合`publi static final`以外は有り得ないので、アクセス修飾子を省略しても、暗黙的に`publi static final`が付与されます。
`final`な定数なので、宣言時に初期化しなけれなりません。“`Java: 変数
public interface Calc {double PI = 3.14; // 暗黙的にpublic static finalが付与されます
// private double PI = 3.14; publicでないのでコンパイルエラーです
// double PI; 初期化されてい
【初心者】JavaのNullPointerExceptionの犯人探し
# はじめに
Javaの開発者なら誰でも見覚えのあるNullPointerException。初心者がNullPointerExceptionに遭遇すると、見当違いな部分を直してしまったり、デバッグに時間をかけてしまうことがあります。また、ある程度Javaに慣れた方でも、なんとなくでNullPointerExceptionに対応している方もいるのではないでしょうか。この記事では、NullPointerExceptionが発生した際に、どのオブジェクトがnullでNullPointerExceptionが起きているのか、スタックトレースとソースコードのみで特定する方法をまとめました。
# 問題
さて、まずは問題です。下記にNullPointerExceptionが発生したソースとスタックトレースを記載しました。Java11を使って確認しています。
“`java
public class NPESample {public static void main(String[] args) {
new SampleObj().getHoge().doM
ひと言学習メモ2:クラス、フィールド、メソッド
ひと言:
最も基本的な図式↓ (//コメントに記入)
自己流解釈:
〇クラス
classとくればクラス(;’∀’)※ちゃんとした定義としては「設計図」のようなものでしょうか[^1]。クラスの中に色々と入れる。
[^1]:『スッキリわかるJava入門』p.302〇フィールド
クラスの中に変数宣言/変数を定義するところ。〇メソッド
具体的なやり方を記入するところ。※また、図の中は厳密に言うとMainメソッドである。
その他:
〇インターフェースは抽象的なクラス(具体的な処理/実装を持たない)ということも一応読んだ[^2]が、実践したことなく、まだ充分に理解できてないと思うため、現段階ではアウトプットしないことにした。
[^2]:『2週間でJava SE Bronzeの基礎が学べる本』p.436〇フィールドはクラス
Javaの::ってなんだ?
## こんな意味らしい???
メソッド参照の構文
|対象 |構文 |
|—————|——————-|
|クラスメソッド |クラス名::メソッド名 |
|インスタンスメソッド|オブジェクト変数::メソッド名|
|コンストラクター |クラス名::new |## メソッド参照の基本
MethodRefUse.java
“`
package com.company;public class MethodRefUse {
// 配列の要素の処理方法をメソッド参照で受け取れるように
public void walkArray(String[] data, Output output) {
for (var value : data) {
output.print(value);
}
}// Output型に対応したメソッド(渡された文字列をブラケットでくくる)
Javaのラムダ式とは?
## メソッド参照/ラムダ式
Java8では、メソッドも型の一種だそうです。メソッドそのものもまた、他の数値型や文字列型と同じく、別のメソッドの引数として渡すことができます。そして、メソッドを受け渡しするための構文が、メソッド参照であり、ラムダ式です。## ラムダ式の基本
Main.java
“`
package com.company;public class Main {
public static void main(String[] args) {
var data = new String[] { “春はあけぼの”, “夏は夜”, “秋は夕暮れ” };
var ml = new MethodLambda();
ml.walkArray(data, (String value) -> {
System.out.printf(“[%s]\n”, value); // Macでは\nと書かないと改行されない!、Windowsは¥n
});
}
}
“`
MethodLambda
Javaのマップとは?
## マップ
マップは、一意のキーと値のペアで管理されるデータ構造です。言語によっては、ディクショナリ(辞書)、ハッシュ、連想配列と呼ぶ。
キーという意味ある情報できる点が、マップの特徴です。## 先ずは書いてみましょう…
Main.java
“`
package com.company;import java.util.HashMap;
import java.util.Map;public class Main {
public static void main(String[] args) {
var map = new HashMap(Map.of(“Rose”, “バラ”,
“Sunflower”, “ひまわり”, “Morning Glory”, “あさがお”));
// 指定のキーが含まれているかを検索
System.out.println(map.containsKey(“Rose”)); // 結果 : true
/
コレクションフレームワークとは?
## コレクションとは?
モノ(オブジェクト)の集合を表す仕組みです。
javaでは、数多くのコレクションの構造、操作の手段(=アルゴリズム)を、標準ライブラリ(java.utilパッケージ)として提供されているそうです。
java.utilパッケージは、コレクションを扱うための汎用的なクラス/インターフェイスの集合です。これを総称して、コレクションフレームワークと呼ぶそうです。
## よく聞くインターフェイスとは何か?
「インターフェース」は、コンピューター業界やIT業界でよく使われる言葉です。英語の「Interface」が語源となっています。英単語の「Interface」の直訳は「境界面」「接点」であり、ビジネス用語の「インターフェース」はここから「異なる2つのものを仲介する」という意味で使われます。
コンピューター関連の用語として、「異なる2つの機器を仲介する」という意味のIT用語として使用されるケースが多いので、コンピューター業界やIT業界で働いている人にとっては、なじみのあるビジネス用語かもしれませんね。
## コレクションの基本構文
コレクションは、一般的に以下の構
【 『dokojava卒業』vs codeでJavaを使う (Mac OS) 】
現在書籍でJavaを学習中です。
書籍はdokojavaというwebサービスを用いて学習していくのですが、
慣れてきたら自身のPCに開発環境を構築することが推奨されていたので、
今回実際に導入してvs code上でJavaを使用できるようにしようと思います。
(⚠︎僕のPCには既にvs codeはインストール済みです)## JDKのインストール
JDKとは`Java Development Kit`の略称で、javaで開発をするためのプログラムのセットです。
JDKにはさまざまな種類があるそうですが、今回は`Amazon Corretto`というものをインストールしていこうと思います。### ■手順
①Amazon Correttoを検索
②AWSサイト内にある、`Amazon Corretto 17`をダウンロードします
③今回は
Javaのループ制御について学んでみる
## ループの制御
while/do…while, for/拡張for命令ではあらかじめ決められた修了条件を満たしたタイミングでループを修了します。しかし、処理によっては、(修了条件に関わらず)特定の条件を満たしたところで強制的にループを中断したい、あるいは、特定の周回だけをスキップしたいということもあるでしょう。
Javaでは、このような場合に備えていくつかのループ制御命令を用意しています。
## break命令
break命令は、現在のループ処理を強制的に中断する命令です。
具体例を見てみましょう。1~100の値を加算していき、合計値が1000を超えたところでループを脱出します。Main.java
“`
package com.company;public class Main {
public static void main(String[] args) {
int i;
int sum = 0;for (i = 1; i <= 100; i++) { sum += i;
M1 Mac Java (Updated 2022/03)
M1 Macにjavaをインストールした際の備忘録
個人的にM1 Macを購入したのでJDKをインストールするためのメモを残す。参考リンク
https://qiita.com/kinoshitaken123/items/66c631099b4c8f98b3bfJDK17から商用でも使えるそうなのでOracle版を使ってみようと思う。
JDK
OpenJDKのサイト
https://jdk.java.net/17/
java –version
tar xzvf openjdk-17.0.2_macos-aarch64_bin.tar.gz
ls -ll
sudo mv jdk-17.0.2.jdk /Library/Java/JavaVirtualMachines
java –versi
JavaでAtCoder黄色になりました
青色になった時の記事は[こちら](https://qiita.com/sounansya/items/bd0c5d3e2fdb9256c953)
遭難者です。[ABC243](https://atcoder.jp/contests/abc243)でAtCoder黄色になったので記事を書くことにしました。

気が向いたら精進するスタンスを取っているのでレートのグラフがかなり歪です。# 自己紹介
現在高専2年の、情報系の学生です。
数学が好きです。文字列が苦手です。# 精進量

# 今回の目標
ネットワークモデルの保存・ロードができるようにする。
# ここから本編## 現在のディレクトリ構成
バージョン情報追加。“`
MyNet
├── META-INF
└── org
└── MyNet
├── costFunction
├── layer
├── matrix
├── network
├── nodes
│ └── activationFunction
├── optimizer
├── version
└── module-info.java
“`## バージョン情報
バージョン情報のみを保持するクラスを作成。
MANIFEST.MFでバージョン情報を保
JavaでPowerPointドキュメントの背景色と背景画像を設定する方法
PowerPointドキュメントを作成する場合、ドキュメントをより美しく見せるために、通常、人々はドキュメントの背景色また背景画像を設定します。この記事では、無料のJava PowerPointコンポーネントである[Free Spire.Presentation for Java](https://www.e-iceblue.com/Download/presentation-for-java-free.html)を使用して、JavaアプリケーションでPowerPointの単色の背景色、グラデーションの背景色、背景画像を設定する方法を紹介します。
## 単色またはグラデーションの背景色を設定する
“`
import com.spire.presentation.*;
import com.spire.presentation.drawing.BackgroundType;
import com.spire.presentation.drawing.FillFormatType;import java.awt.*;
public class Background {
Javaでブラックジャックを作成してみた(betあり, splitあり, double downあり, 8デック)_ソース編
# はじめに(概要編と同じ内容)
コンソールで遊ぶブラックジャックです。Qiitaで参考になる記事を検索しました。hit,stay(stand)のみの記事はいっぱいあったのですが、
以下内容のブラックジャック記事は見つけきれませんでした。多分まだ無いです。
-> ブラックジャックで検索すると186件ぐらいあったのに。。(2022/03/06現在の情報)ルールは下記のとおりです。
|項目 |内容 |補足 |
|—|—|—|
|デッキ数 |8デッキ(計416枚) |1デッキ=52枚(1~13のトランプ、ジョーカー抜き)|
|カードのシャッフルタイミング |総数の50%を消費した場合 |ゲーム途中の交換は不自然なため、交換タイミングはゲームの切れ目|
|ベッティング| あり|ベットベルの種類 -> 1~1000(ベル)|
|ディーラーの行動原則 |17以上になるまでhit|-|
|プレイヤーのできる行動 |hit, stand, double down, split|-|
|double down|最初の行動でのみ選択可能 |-|
|double down後 |追加は