- 1. Eclipse che
- 2. 使えるようになって(いて)欲しいプログラミング言語
- 3. Minecraft Mod 開発環境構築 (IntelliJ IDEA + Minecraft Forge 1.15.2) + Hello World Mod 作成
- 4. 【CQEngine】Java7でもStreamとか.NetのLINQみたいにコレクションを扱いたい
- 5. VSCode+GradleでJavaFXのHelloWorldを動かすまで
- 6. Minecraft Forge の API リファレンスを javadoc コマンドで生成する
- 7. 「javadoc エラー – input length = 1を読み込めません」の解決法
- 8. SpringBoot2.2.4の内蔵TomcatでSSIServletを使う
- 9. JavaでABNF書いてメールアドレスのぱーす
- 10. 五目並べゲーム(作成中)
- 11. JAXB Reference implementation と DatatypeConverterImpl の行方
- 12. Java のバイト配列を16進数表記の文字列に変換する
- 13. JavaアプリケーションのMBeanの情報一覧を取得する
- 14. java 選択ソート
- 15. 【Java】MySQLを絶対に接続させたい!!!~JDBCドライバの取得とJARファイル位置について~
- 16. COTOHA API の構文解析 を Java で利用してみる
- 17. GCSにアップロードされているCSVファイルを扱う
- 18. OpenCV+AndroidStudioで顔認識アプリ
- 19. java バブルソート
- 20. mutable(可変な)オブジェクトとimmutable(不変な)オブジェクト
Eclipse che
Eclipseを使ったJAVAのセミナなどを開催したことがある。
Eclipseを土台とした道具類のセミナを主催し、開発元の方に講演・演習をしていただいたことが数種類ある。
あまりうまくいかなかったのは、UML-Bとか。
今だに Eclipse cheを使いこなせていない。
上記道具類の一つが、PizzaFactoryというクロスコンパイラを含む道具。
https://github.com/PizzaFactoryそのche版がこちら
https://github.com/PizzaFactory/che# Getting Started
SaaS Cloud: Self-service Eclipse Che developer workspaces hosted at che.openshift.io
https://www.eclipse.org/che/getting-started/cloud/Che quick-starts
https://www.eclipse.org/che/docs/che-7/che-quick-starts/
>Runni
使えるようになって(いて)欲しいプログラミング言語
# はじめに
私はすでに全く若手ではないのだが、個人的な意見として、また新たに入ってくる技術者に言っていることを書いてみる。勿論賛否あって良い。
何気に私はいわゆる組込み系の仕事をしているのだが、ソフトウェア・オリエンテッドであまり組込みっぽくない人種です。
# 使えるようになって(いて)欲しいプログラミング言語
概ね以下の3種類でそれぞれ1つずつ。
## システム記述系
こういう括りが正しいかは別として、C/C++、Java、C#など。
プログラムの動きとか、コンピューターの動きとか、きちんと知るにはCが最適。アセンブラとは言わない。アセンブラでもいいけど、プロセッサごとに違うしね。概念は知ってると良い。
ただ、Cを実務で使うのはどうしても必要でなければ避けたいのが本音。スキルの差がモロに品質に直結するので。
後、オブジェクト指向しづらいし。それができるというのとはまた別。C++は好きだが、仕様がカオスになりすぎて完全にマニアの世界。Javaはできると実務でも使えて、オブジェクト指向にも慣れるので良いかもしれない。
C#も簡単で分かりやすかった。Windowsでし
Minecraft Mod 開発環境構築 (IntelliJ IDEA + Minecraft Forge 1.15.2) + Hello World Mod 作成
## 概要
– IntelliJ IDEA に Minecraft Mod の開発環境を構築して、シンプルな Hello World Mod を作成する
## 環境
– Minecraft 1.15.2
– Minecraft Forge 1.15.2-31.1.0
– macOS Catalina
– Java 8 (AdoptOpenJDK)
– IntelliJ IDEA 2019.3.1 (Community Edition)## IntelliJ IDEA に開発環境を構築
### Java 8 のインストール
今回の開発環境では Java 11 以降がサポートされていないため、事前に Java 8 をインストールしておく必要がある。
参考: [Java 8 \(OpenJDK: AdoptOpenJDK\) を Homebrew で macOS にインストールする \- Qiita](https://qiita.com/niwasawa/items/8f52cb0083d888648b02)
### Mdk (Mod Development Kit) のダ
【CQEngine】Java7でもStreamとか.NetのLINQみたいにコレクションを扱いたい
# 背景
* レガシー環境では、ミドルウェアの関係でJava8が使えずStreamが利用できない
* コレクションを整形するときはfor文でぶん回している。そこでJava7でも、StreamやLinQのようにスマートにコレクション操作できるものを探しました。
(ほかにfor文のぶん回し回避方法をご存じでしたら教えてください)# CQEngineについて
[Awesome Java : 素晴しい Java フレームワーク・ライブラリ・ソフトウェアの数々](https://qiita.com/hatai/items/7868996e3eb5fa55f11a)
上記記事で紹介されていました。## CQEngine
公式リポジトリ [Github : CQengin](https://github.com/npgall/cqengine)* CQEngineはモデルに対し、Indexを設定することで超高速なCollection操作を提供するライブラリのようです
* 今回はStreamの代わりとしてJava7で使えるかを検証していきます
* 主題とずれるためIndexについては検
VSCode+GradleでJavaFXのHelloWorldを動かすまで
# はじめに
VSCode+GradleでJavaFXを「とりあえず」動かすにはどうしたらいいのかメモ的に書きます。
随所に先人の知恵をコピペしてできましたものです。先人の皆さま、いつもありがとうございます。利用したツールと実行環境は以下のとおりです。
– Linux Mint 19.3
– OpenJDK 11
– OpenJFX 11 (11.0.6)
– VSCode(code) 1.42.1
– Gradle 6.1.1また、タイトルの部分にフォーカスするため、個々のツールのインストールについては割愛します。
# 1. Gradleでプロジェクトを作成する
プロジェクトディレクトリを作成し、gradle initを実行します(gradleコマンドにパスを通している前提です)。以下のように選択肢に答えていくと出来あがります。
ximia@thinkpad:~/dev/sandbox02$ gradle init
Select type of project to generate:
1: basic
2: applicat
Minecraft Forge の API リファレンスを javadoc コマンドで生成する
## 今回の実行環境
macOS Catalina + Java 8
“`
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.3
BuildVersion: 19D76$ java -version
openjdk version “1.8.0_242”
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.242-b08, mixed mode)
“`## javadoc コマンドで API リファレンスを生成
Minecraft Forge のソースコードをダウロードして展開する。
今回はバージョン 1.15 系をダウンロードする。“`
$ wget https://github.com/MinecraftForge/MinecraftForge/archive/1.15.x.zip
$ unzip 1.15.x.zip
“`
「javadoc エラー – input length = 1を読み込めません」の解決法
eclipseからjavadocを出力しようとしたとき、「javadoc エラー – input length = 1を読み込めません」のエラーが発生する場合があるが、検索しても解決方法が出てこなかったため、私が解決した方法をここに記載しておく。
# 解決方法
私の場合、javadocを出力する際にjavadocコマンドを指定するが、そのjavadocコマンドのJavaバージョンと、プロジェクトのJavaバージョンが違っていた。
これを、プロジェクトのJavaバージョンのjavadocコマンドを指定するように修正するとエラーが発生しなくなった。# あとがき
こんなことは当たり前過ぎるかもしれないが、古いJavaバージョンのJavaプロジェクトの修正等を最新のeclipseでやろうとした場合はjavadocコマンドがデフォルトで最新のJDKで設定されているため、盲点だった。
SpringBoot2.2.4の内蔵TomcatでSSIServletを使う
## 対象読者
SpringBootを使ったWebサービスを開発しており、内蔵Tomcatを利用している。
また、SSI (Server Side Include) を利用しているため、`SSIServlet`を使用している。## TL;DR
Tomcat 9.0.30ではSSI関連のモジュールが外部ライブラリ化していますので、
以下のTomcat SSIライブラリも依存関係に追加しなければならなくなりました。https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-ssi
## 経緯
JVNVU#98104709 Apache Tomcat の複数の脆弱性に対するアップデート
http://jvn.jp/vu/JVNVU98104709/index.html
により、SpringBootの内蔵Tomcatをバージョンアップする必要が出てきました。そこで、SpringBootのバージョンを最新のリリースバージョン`2.2.4.RELEASE`へと更新することにしました。
## SpringBoot 2.
JavaでABNF書いてメールアドレスのぱーす
プログラム中でメールアドレスのパースは難しいとか言われているのでABNFのフル機能のほんものを実装してみた。
いろいろ詰め込んだ結果、JSONやJSON Pointer、JSON Patchまで簡単に実装できる。IETFのRFCではABNFがよく使われている。メールだったりJSONなんかが有名で、IPアドレスやURLの書き方までABNFだったりする。
その割にあまり一般的なツールやライブラリとして出回っているのは数えるほどしかみたことないのでさっくりと作ってみた。構造はParserを拡張してびるだー的なものを作って、びるだーでテキストからオブジェクトに変換するだけ。
ABNF自体もABNFで書かれているが、これは最初なのでビルダーだけで作る。
JSONなども書式を指定すればパーサができるので出力されるパーツを組み上げるビルダー的なところを組み込めばできあがり。SoftLibRFC にRFCの一部ABNFをまとめているのでそれを使ってみるところの紹介。
必要なのは、SoftLibRFC,SoftLibABNF,SoftLib の3つ。SoftLibJSONは使わない。
現状ソ
五目並べゲーム(作成中)
####(ルール)
・5×5(変更可)のマス目に黒と白が交互に石を置いていく
・縦、横、斜めのマスが同色石によってすべて埋まった時点で勝利####(各ファイル)
・Stoneクラス
→石の情報を管理
・Boardクラス
→碁盤情報を管理
・Judgeクラス (うまくいかないため現在作成中)
→勝利判定を管理
・Constantインターフェイス
→定数を管理
・Gameクラス
→ゲームとしてまとめる“`Stone.java
package Gomokunarabe;public class Stone implements Constant{
Board board = new Board();//石が正常に置けたらtrue,置けなかったらfalse
private boolean active;
public boolean getActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}//石の位置に関するフィー
JAXB Reference implementation と DatatypeConverterImpl の行方
## 概要
– JAXB (Java Architecture for XML Binding) の公式に近い Reference implementation (参照実装) の jar とソースコードをバージョン毎に追いかける
– 動作確認環境: Java 11 (AdoptOpenJDK 11.0.6+10) + Gradle 6.1## 一覧表
|バージョン|パッケージ名|Gradle implementation 記述|
|—–|—————-|———————————————–|
|2.3.1|javax.xml.bind |javax.xml.bind:jaxb-api:2.3.1 |
|2.3.2|javax.xml.bind |jakarta.xml.bind:jakarta.xml.bind-api:2.3.2 |
|2.3.3|javax.xml.bind |?
Java のバイト配列を16進数表記の文字列に変換する
## 方法
JAXB の javax.xml.bind.DatatypeConverter クラスを利用する。
[DatatypeConverter \(Java Platform SE 8 \)](https://docs.oracle.com/javase/jp/8/docs/api/javax/xml/bind/DatatypeConverter.html#printHexBinary-byte:A-)
> public static String printHexBinary(byte[] val)
> バイト配列を文字列に変換します。## JAXB は Java 11 から Java SE 標準ライブラリに入っていない
JAXB は Java SE 6 以降の標準ライブラリに入っていた。
[JAXB Release Documentation – Frequently Asked Questions](https://javaee.github.io/jaxb-v2/doc/user-guide/ch06.html)
> Q: Which version of
JavaアプリケーションのMBeanの情報一覧を取得する
Scala 2.12
“`scala
import java.lang.management.{ManagementFactory, PlatformManagedObject}import javax.management.{MBeanInfo, ObjectName}
import scala.collection.JavaConverters._
val mbeanInterfaces: Seq[Class[_ <: PlatformManagedObject]] = ManagementFactory.getPlatformManagementInterfaces.asScala.toSeq val mbeanObjects: Seq[_ <: PlatformManagedObject] = mbeanInterfaces.flatMap(ManagementFactory.getPlatformMXBeans(_).asScala.toSeq) val mbeanObjectNames: Seq[ObjectName] = mbeanObjects.map(_.
java 選択ソート
#選択ソート
今回は選択ソートについてコードを書いていく。
※自分のアウトプット用の記事です。間違いなどがあったら指摘してください。“`SelectionSort.java
public class SelectionSort {
public static void main(String args[]) {
int[] array = {2,3,5,4,1};
sort(array);
for(int i=0;i
【Java】MySQLを絶対に接続させたい!!!~JDBCドライバの取得とJARファイル位置について~
#MySQLをプロジェクトで使いたい….
今回のWebアプリケーション制作では、**MySQL**というデータベースを使ってのアプリ制作です。
Eclipseを使用してJavaでプログラムを書いていたのですが、MySQLってどうやって接続して使うの?という疑問….そこで今回は**JavaのプログラムからMySQL(データベース)を利用する手順**をまとめました。手順は以下の通りです:point_down_tone2:
**1. JDBCドライバの取得(Connector/J)**
**2. JARファイルをプロジェクトに入れる**
**3. データ接続を試してみる**##JDBCドライバとは?
手順1に入る前に…JBDCドライバについて簡単に説明しておきます:wink:
JDBCドライバとは、**データベースを操作するために必要となるクラスやインターフェース群です。**それぞれのデータベース開発元が**JARファイル(クラスやインターフェースをまとめて格納したファイル)**として提供しています。
今回使用するデータベースはMySQLなのでMySQL専用ののJBD
COTOHA API の構文解析 を Java で利用してみる
# COTOHA API とは
NTTグループが提供している、構文解析、照応解析、キーワード抽出、音声認識、要約など、様々な自然言語処理・音声処理APIを提供しているサービスです。
> COTOHA API | NTTコミュニケーションズが開発した日本最大級の日本語辞書を活用した自然言語処理、音声認識APIプラットフォーム
https://api.ce-cotoha.com/contents/index.html「NTTって電話の会社では?」と思われてる方もあるかもしれませんが、NTTの研究所ではコンピュータでの日本語処理も何十年も前から研究されているのです。(私も学生時代にNTTコミュニケーション科学基礎研究所に見学に行ったり論文を読んだりしてお世話になりました)
最近になってクラウドの技術が進み、従来はローカルのコンピュータで動かしていたような処理をAPIサービスとしてインターネット経由で提供できるようになってきたのです。ロジックそのものの開発はNTTのどの会社・部門が提供しているのかは公開されていないようですが、APIの提供はNTTコミュニケーションズさんでされているよ
GCSにアップロードされているCSVファイルを扱う
# csvファイルを読み込む
blob.getContentでファイルの中身が取得できるが、ファイルサイズが大きい場合は困ってしまう“`
Bucket bucket = getBucket(bucketName);
Storage.BlobListOption option = Storage.BlobListOption.prefix(directory);Page
blobs = bucket.list(option);
Iteratoriterator = blobs.iterateAll().iterator(); List
csvList = new ArrayList<>();
while (iterator.hasNext()) {
Blob blob = iterator.next();
byte[] content = blob.getContent(Blob.BlobSourceOption.generationMatch());
csvList.add(new String(conten
OpenCV+AndroidStudioで顔認識アプリ
##やりたいこと
OpenCVを使った顔認識アプリの作成
・目標
・とりあえずAndroidStudioの導入、使い方を学ぶ(初心者)
・OpenCVをAndroid上で動かす
・カメラで撮影した画像、ギャラリーに保存されている画像のどちらも使用可能に## 参考
OpenCVを使って、簡単顔認識Androidアプリを作ってみた
https://qiita.com/Kuroakira/items/094ecb236da89949d702
インテントでカメラを呼び出す方法の補足(主に、Xperia 2.1問題対応)
## 使ったもの
Android Studio 3.5.3
OpenCV 4.2.0## 大まかな流れ
実装についてはほぼ上記の先人たちを参考にしているのでざっと書きます。カメラ、ギャラリーボタンを押下
↓
カメラ、ギャラリーから画像を取得
↓
取得した画像をbitmap→Mat形式に変換
↓
OpenCVへMat形式の画像を渡す
↓
顔認識情報を取
java バブルソート
#ソート
今回からソートについて投稿していこうと思います。
※自分のアウトプット用の記事です。間違いなどがあったら指摘してください。
#バブルソート
“`BubbleSort.java
public class BubbleSort {
public static void sort(int[] array) {
for(int i=0;iarray[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
public static void main(String args[]) {
int[] array = {5,4,3,2,1};
sort(array);
for(int i=0;i
mutable(可変な)オブジェクトとimmutable(不変な)オブジェクト
Java Silver SE11の学習をしていて、「Stringオブジェクトは不変なオブジェクトである」の意味がよくわからなかったので、覚書ついでに。
# mutableとimmutableの違い
そもそもmutable(可変)とimmutable(不変)の違いとはなんぞやから。
簡単に言うと、一度セットした値を**後から変更できるオブジェクト**がmutableオブジェクト。
一度セットした値を**後から変更できないオブジェクト**がimmutableオブジェクト。そのままですね。immutableオブジェクトの定義方法は下記らしいです。
– すべてのフィールドをprivateで修飾する
– オブジェクト内部の状態を変更可能なメソッド(setterなど)を提供しない
– クラスをfinalで宣言し、メソッドがオーバーライドされないことを保証する(サブクラスから変更させない)
– 内部に可変オブジェクトを保持している場合、そのオブジェクトを外部に提供(getterなど)しない次項より、immutableなクラス:Hogeを作成することでそれぞれの詳細を確認します。
(その他