- 1. クラスの定義はインターフェースと実装から成り立つ
- 2. Apache Beamで実装したアプリのユニットテストを試す
- 3. 曖昧検索
- 4. 結城本「Java言語で学ぶデザインパターン入門」第1章IteratorパターンのBookShelfを配列からVector(可変長配列)に書き換えてみた
- 5. mavenの依存関係ではまった話
- 6. オブジェクト思考どうやって理解した?
- 7. 私がJPAよりMybatisを薦める理由
- 8. Apache BeamでS3のデータをElastiCacheにロードする
- 9. Javaを用いて1人麻雀ゲームもどきを作ってみた。
- 10. log warnへスタックトレース出力
- 11. MLKitで顔のパーツのポジションを取るには(Android)
- 12. [Unity] AndroidのSpeechRecognizer(音声テキスト認識)を実装する
- 13. 初投稿
- 14. Couchbase Lite開発:Android用インストール手順
- 15. 僕がJAVAの勉強で頼っている記事たち
- 16. シンプルな Java Servlet サンプル (Spring Boot 版)
- 17. [個人開発] 独学してAndroidアプリをリリースした話
- 18. SpringSecurityでメールアドレス認証でログイン機能を作りユーザー名を表示させる方法
- 19. Kotlinのエラー:java.lang.NoClassDefFoundError: Could not initialize class org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel
- 20. シンプルな CSV ファイル書き出し Javaサンプル (Apache commons-csv を利用)
クラスの定義はインターフェースと実装から成り立つ
# オブジェクト指向プログラミングとインターフェース
## インターフェースは入門書の後半に学ぶ
オブジェクト指向プログラミングをソフトウェア工学的に学ぶとすると、クラス、インスタンス、継承、カプセル化、多態性、オーバーロード、オーバーライド、コンストラクタ等を学ぶことになります。そのうちの一つにインターフェースがあります。しかし、いきなり学ぶことはあまりありません。入門書であれば後半の章に書かれることになるでしょう。## 初期のオブジェクト指向プログラミングにはインターフェースはない
オブジェクト指向プログラミングの歴史をさかのぼるとSimulaそしてSmalltalkまでさかのぼることができます。Simulaにオブジェクトという考えがあり、Smalltalkでパロアルト研究所のアラン・ケイ的な知と結びつきここまで展開されたと言えるでしょう。とはいえ、この段階においてはクラスや継承という考えは生まれていますが、インターフェースはまだ生まれていません。## インターフェースはObjective-Cから生まれた
初期のオブジェクト指向のプログラミング言語がSimulaやSmall
Apache Beamで実装したアプリのユニットテストを試す
## はじめに
下記ドキュメントを参考に、Beamで実装したアプリのユニットテストを試しました。
https://beam.apache.org/documentation/pipelines/test-your-pipeline/
## 準備
ドキュメントに従って以下のライブラリを追加しました。
“`xml:pom.xml抜粋
org.hamcrest
hamcrest-all
1.3
test
“`## Transformのテスト
### テストコードの流れ
詳細は上記ドキュメントを見ていただいた方が早いですが、テストコードの流れをざっくり書くと、以下となる認識です。
– 通常の`Pipeline.create`の代わりに、`TestPipeline.create`でテスト用パイプラインを作成
– `Create.of`
曖昧検索
//名前の曖昧検索
//Repositoryクラス
public List
searchByNameContaining(String name) {
String sql = “SELECT * FROM employees WHERE name LIKE :name ORDER BY hire_date DESC”;
SqlParameterSource param = new MapSqlParameterSource().addValue(“name”, “%” + name + “%”);
Listlist = template.query(sql, param, EMPLOYEE_ROW_MAPPER);
return list;
}//Serviceクラス
public List
searchByNameContainig(String name){
return employeeRepository.searchByNameContaining(name);
}//
結城本「Java言語で学ぶデザインパターン入門」第1章IteratorパターンのBookShelfを配列からVector(可変長配列)に書き換えてみた
#1.概要
結城本[「Java言語で学ぶデザインパターン入門(増補改訂版)」](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89%88-Java%E8%A8%80%E8%AA%9E%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%85%A5%E9%96%80-%E7%B5%90%E5%9F%8E-%E6%B5%A9-ebook/dp/B00I8ATHGW/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=Java%E8%A8%80%E8%AA%9E%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%85%A5%
mavenの依存関係ではまった話
## Missing artifact xxxのエラーが発生した
自分向け備忘録。次の案件でspringbootを使うらしいという話を聞いたので、おべんきょのためSTSと参考図書をゲットして最初の一歩を踏み出した瞬間であった。
とりあえず本のサンプル写経→動作確認で流れを確認しようとしました。
ほんでもってjquery、bootstrap、webjars-locationをpom.xmlに追加したところで![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2305337/9c6b6b30-73e4-2dfd-1130-7e74917f6194.png)このざま
~~こんなに色々自動化が進んでる時代なのに環境構築は落とし穴だらけだし毎回しっかりはまるので泣きそう。~~
### 現状を把握
ちなみにpom.xmlに追加したのは以下の部分。
jqueryやbootstrapの箇所は問題なく動いている。“`xml:pom.xml(抜粋)
オブジェクト思考どうやって理解した?
# 参考にした書籍
これを読んでFlutterを1ヶ月やると非同期処理やメンバー変数が理解できるようになっていた。
他の言語でのオブジェクト思考の概念さえ理解すればSwiftも久しぶりにコードを書いたのだがすぐに理解できた。# Swiftのクラスのような文法の構造体の例
“`
struct Article {
let id: Int
let title: String
let body: Stringinit(id: Int, title: String, body: String) {
se
私がJPAよりMybatisを薦める理由
JavaでRDBにアクセスするなら、
大きくこの二つの選択肢があるでしょう。– JPA
– ORMの仕組み
– Javaのオブジェクトを使って情報の永続化(データ保存)や情報の取得をするもの
– 複雑な情報取得のためにJPQLというSQLに似た書き方もできる
– JPA自体は仕様で実装物としてはHibernateが有名(Hibernateの機能をJavaが仕様として取り込んだ)
– Mybatis
– ORMというよりSQLマッピングの仕組み
– SQLをJavaではない外部ファイルに書くことができる
– SQLの結果やバインドパラメータ ⇔ JavaのBeanの間で自動詰替えをしてくれる私は初学者やほとんどの開発プロジェクトでMybatisの採用を薦めています。
その理由について個人的な意見を記載します。ただ、JPAは正直あまり使ってないので見当違いがあるかもしれません。
# JPAのいいところ
### 単一テーブルへのアクセスが簡単
単一テーブルや単純な親子関係のテーブルの結合ぐらいなら、とてもシンプル書けるので使いやすいです。
単純な
Apache BeamでS3のデータをElastiCacheにロードする
## はじめに
S3上のファイルからデータを読み込み、ElastiCache(Redis)にロードする処理を行います。
アプリケーションはApacheBeamを使用して実装し、EMRでSparkアプリとして実行します。Beamで実装したアプリをEMRで実行する手順については、以下の記事に記載しているため、
本記事では、主にElastiCache(Redis)を出力先とする際に行った対応について記載します。https://qiita.com/ynstkt/items/66122643e3f48c99fa64
## アプリ実装
Redisへの出力には、Beam提供のI/O Transformsの1つであるRedisIOを使用しました。
[https://beam.apache.org/documentation/io/built-in/](https://beam.apache.org/documentation/io/built-in/)
[https://beam.apache.org/releases/javadoc/2.34.0/org/apache/beam/s
Javaを用いて1人麻雀ゲームもどきを作ってみた。
# はじめに
この記事は、Java(8以上)を学習するにあたって試しに作成した麻雀ゲーム(未完成)の内容に関する説明となっています。コードの方はgithub([https://github.com/watcher041/mahjong](https://github.com/watcher041/mahjong))に配置しておりますので、ご参考にどうぞ…。# ゲームの動作
以降では、コードをご覧いただいている前提で話をしております。
ゲームは「javac Main.java」とコンパイルしていただいて「java Main」とすると遊べます。役が揃うまで牌を捨てるだけのものとなっています。(七対子だとあがれない、点数計算もないです)おおまかな流れといたしましては、
– 卓(卓の画像、壁牌)を作成する
– プレイヤー(手牌、手配の画像)を作成する。このとき、牌をクリックすると手牌が捨てられて壁牌から一枚引いて理牌されるように手牌一つ一つにMouseClickCheckクラスを仕込む。– 作成したものをもとに画像を表示する
– 手牌をクリックすると、その手牌のMouseCli
log warnへスタックトレース出力
やりたかったものはタイトル通りだった。
e.printStackTrace()から出力されているものを、Stringに変換して使いたい時に呼ばれるように。。したかった。
## 解決
方法は本当に簡単で“`java
log.warn(“### メッセージ後、スタックトレース出力されたらいいな”, e);結果)
2021-11-18 10:52:19.409 [] [] ERROR ### メッセージ後、スタックトレース出力されたらいいな
java.lang.NullPointerException: null
原因発生地だらだら
“`
# 時間かかった理由
検索をHow do I get e printStackTrace as string?にした。
結果)
https://www.baeldung.com/java-stacktrace-to-string#:~:text=The%20function%20printStackTrace()%20of,printStackTrace(pw)%3B
https://stackoverflow.com/questions/11
MLKitで顔のパーツのポジションを取るには(Android)
まず公式サイトを貼ります:
https://developers.google.com/ml-kit/vision/face-detection/android#1.-configure-the-face-detector
setLandmarkModeに入ります:
https://developers.google.com/android/reference/com/google/mlkit/vision/face/FaceDetectorOptions.Builder#setLandmarkMode(int)
二択しかないのでパーツを取りたい時には以下の設定にしてください:
“`
// 特徴を取るかどうか
.setLandmarkMode(FaceDetectorOptions.LANDMARK_MODE_ALL)
“`
これをオンにすることで、全部の顔のパーツが読み取れるようになる。その後
例えば左目のxポジションを取りたい時に以下のコードを
“`
x = face.getLandmark(FaceLandmark.LEFT_EYE).getPositio
[Unity] AndroidのSpeechRecognizer(音声テキスト認識)を実装する
# はじめに
Unityで音声テキスト認識のサンプルを作成しました。
ポップアップが出て認識するものではなく、ポップアップなしのものになります。
実装方法などの忘却録。https://developer.android.com/reference/android/speech/SpeechRecognizer?hl=ja
## 準備
macOS Catalina: 10.15.7
Unity 2018.4.19f
Android Studio 4.0.1## Android Native Pluginの作り方
以前、Android Pluginのmodule作成の基本的な作り方をまとめていますので、参考までに。https://qiita.com/atsutama/items/28744b1a29e79184c3fc
## Android Plugin側のコード
UnitySendMessageを使う際には「jar」ファイルをインポートする必要がありますので、下記で確認出来ます。
この設定をしておかないとコードを書いた時にimportエラーが出ます。https://q
初投稿
はじめまして。
今回が初めての投稿となります。
初心者エンジニアです。初心者エンジニアとしての日々の日記をてきと~~に書こうと思っているので、
暖かい目で見ていただけたらHappyです!
よろしくお願いしやす。
Couchbase Lite開発:Android用インストール手順
## はじめに
Couchbase Lite 3.0.0ベータは、Android SDKとして、Javaに加えKotlinをサポートしています。
## クイックステップ
### Kotlin(エンタープライズエディション)
1. Android StudioでKotlin Androidアプリプロジェクトを作成します
2. アプリレベルの依存関係としてCouchbase Liteを追加します (エンタープライズエディションでは:`build.gradle
implementation ‘com.couchbase.lite:couchbase-lite-android-ee-ktx:3.0.0-beta02’`)
3. 次のMavenリポジトリを(`build.gradle`または必要に応じて`settings.gradle`中の)リポジトリに追加します:`https://mobile.maven.couchbase.com/maven2/dev/`
4. プロジェクトをビルドすると、Couchbase Liteがプルダウンされます。### Kotlin(コミュニティエデ
僕がJAVAの勉強で頼っている記事たち
いくら覚えても頭から抜けていくものは抜けていきます。
僕が大切にしているのは分からない時に調べる力です。しかし間違った情報や分かりづらいものも多いので、できるだけ分かりやすいものを見るようにしています。
間違っていたらごめんなさい。
##1.演算子の一覧
たまに何だっけなってなるのでちょいちょい見ます。正規表現を勉強したい時に参考にします。http://wisdom.sakura.ne.jp/programming/perl/perldata1.html
##2.修飾子の一覧表
修飾子もたくさんあるのでよくこんがらります。組み合わせるとエラーになるものや確認をしたいときによく使います。https://www.tohoho-web.com/java/modifier.htm
##3. 継承の関係とオブジェクト
アクセス修飾子と一緒になると厄介なやつ。
https://kanda-it-school-kensyu.com/java-basic2-contents/jb2_ch01/jb2_0105/##4.インターフェース
一番苦手です。使いどころや継承との使い分け
シンプルな Java Servlet サンプル (Spring Boot 版)
ちょっと Java Servlet を Spring Boot で動作させてみたい時のサンプルをメモしておきます。
# Maven (pom.xml)
Spring Boot で Java Servlet を動作させるには `Spring Web` が必要です。
`Spring Initializr` を利用するなどの何らかの方法で `pom.xml` ファイルの `` に以下の `Maven Repository` 記述を追加します。 (ビルドでの自動ダウンロードの実現のためには、インターネットに接続されている必要があります) “`xml
org.springframework.boot
spring-boot-starter-web
“`なお、[Spring Initializr サイトはこちら](https://start.spring.io/)を参照してください。
# Java コード
[個人開発] 独学してAndroidアプリをリリースした話
#目次
[1.アプリ作成の背景](#1-アプリ作成の背景)
[2.何かを作る](#2-何かを作る)
[3.開発環境と主なライブラリ](#3-開発環境と主なライブラリ)
[4.アプリの機能](#4-アプリの機能)
[5.学習方法の概要](#5-学習方法の概要)
[6.アプリを作ってみた感想](#6-アプリを作ってみた感想)#1. アプリ作成の背景
※半分くらいポエムです—**とりあえず自分で何か作りたい**—
僕は電子機器のメーカーで働いています。何かものつくりがしたい、という動機で就職し、
主に生産技術の仕事をしてきました。各製造工程専用の製造装置の生産効率とか、歩留まり(良品率)を上げるのが主な仕事です。
これはこれで重要な仕事であり、確かにものは作っていますが、
実際は全体のほんの一部しか関われず、自分が何かを作っているという感じではありませんでした。自分で作ってる感がないまま、モヤモヤ思っていた頃、以前に録画していた学生ロボコンをなんとなく見たら
課題を設定して、自分たちで工夫していろいろ作っているのが楽しそうでした。
アホみたいな単純さですが、**「ああ
SpringSecurityでメールアドレス認証でログイン機能を作りユーザー名を表示させる方法
#はじめに
SpringBootでアプリケーションを開発し、ログイン機能を実装したが、メールアドレスとパスワードで認証し、その後、ユーザー情報を取得してユーザー名を表示させる仕様の実装に手間取ったため備忘録的に残しておこうと思う。##環境
– SpringBoot2.5.6
– SpringSecurity
– Java11
– MySQL
– JPA#SpringSecurityの設定
まずは、ログイン認証をするためにSpringSecurityの設定が必要だ。SpringSecurityではパスワードの暗号化などの設定をしないと、そもそもDBのデータを認証してくれないなど制約があるため、必須の設定となっている。
“`java
package com.example.demo.config;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframewor
Kotlinのエラー:java.lang.NoClassDefFoundError: Could not initialize class org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel
“Kotlin サーバーサイドプログラミング実践開発“ 著者:竹端 尚人にて
第2部のアプリケーション作成でSpring Initializrをダウンロードしてビルドしただけなのにエラーが出たのでその対処gradleのキャッシュを削除
“`
$ rm -rf $HOME/.gradle/caches/
“`以上。
原因はJDL15で以前いじっていたことがあったからそれが原因みたい。
一応、不要なJDKは削除しておいたほうがいいかも
インストールされているJDLの削除方法
“`
//現状インストールされているJDKを一覧で取得
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
11.0.13, x86_64: “Amazon Corretto 11” /Users/nash/Library/Java/JavaVirtualMachines/corretto-11.0.13/Contents/Home
11.0.12.1,
シンプルな CSV ファイル書き出し Javaサンプル (Apache commons-csv を利用)
ちょっと CSV ファイルを書き出す Java プログラミングを実装したい場合に役立ちそうなサンプルをメモしておきます。
CSVファイル読み書きには [RFC 4180](https://datatracker.ietf.org/doc/html/rfc4180) を実装する必要がありますが、一般的にはライブラリ利用により実現します。
この例では Apache commons-csv を利用した CSVファイル書き出しサンプル記述を残しておきます。# Maven (pom.xml)
まず最初に、CSV ファイル書き出しを実現するためのライブラリである `Apache` `commons-csv` をビルドに組み込みます。 `pom.xml` ファイルの `
` に以下の `Maven Repository` 記述を追加します。 (ビルドでの自動ダウンロードの実現のためには、インターネットに接続されている必要があります) “`xml
org.apache.commons
<