- 1. 【Android9.0 Pie Java】チャットアプリで横スワイプ→ダイアログ表示→削除を実装する
- 2. Rubyを学習後にJavaを勉強した人が感じた主な二つの言語の違い Part1
- 3. 日本語を表示する Servlet の簡単な例
- 4. Javafxで簡単なゲームを作ってみた① ”幸せを探そうゲーム”(未完成版②)
- 5. Java(Spring)でMapperを使う
- 6. MyBatisで動的SQL文を作る【複数のワードで検索できるようにする】
- 7. IM-Juggling とは
- 8. Javafxで簡単なゲームを作ってみた① ”幸せを探そうゲーム”(未完成)
- 9. Java 標準ライブラリの com.sun.net.httpserver で簡易的な Web サーバを作る
- 10. 書くときにも発生する MalformedInputException
- 11. 制御フローを読みやすく
- 12. Dagger2 – Android Dependency Injection
- 13. 文字列をmd5ハッシュ化して返す
- 14. IBM Cloud ShellでQuarkusを試してみよう
- 15. OpenCensusとJavaで分散トレーシングをする
- 16. 今更ながらSpring Data JPAに入門してみた
- 17. [Java]配列
- 18. [Java]出力、変数
- 19. Java初学者が4日でポーカーゲームを作る(3日目)
- 20. Javaの条件分岐
【Android9.0 Pie Java】チャットアプリで横スワイプ→ダイアログ表示→削除を実装する
## 環境
Android9.0 Pie Java## はじめに
最近Android Javaでチャットアプリを作成していまして、LINE風のチャット一覧削除を実装しました。
RecyclerViewのリスト表示と削除機能の記事は結構ありますが、`横スワイプ→ダイアログ表示→削除
MainActivity + 複数のFragment構成`の実装例は日本語の記事では見つからなかったので共有させて頂きます。
(ベストプラクティスかは怪しいので参考程度にお願いします。。ご指摘大歓迎です!)こんな実装ができます
![243e5a5ccb079ad0d385004d69a930ba.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285286/3f39bf3a-7993-5e79-1c9c-6af03bf1d8f4.gif)## 完成品URL
非常にコンテンツが長いので、完成品を取り合えず手に入れたい方はこちらからどうぞ。
https://github.com/yuta-matsumoto/
Rubyを学習後にJavaを勉強した人が感じた主な二つの言語の違い Part1
Javaの文法を勉強し始めRubyと比べてややこしいルールが多いのでメモしておく。
###出力
“`
System.out.println “Java”; //これでRubyのPutsと同じ役割 コードの終わりに;を打つ
“`###変数とデータ型
Javaで変数を定義するためには、
①変数にいれる値のデータ型を指定する、②変数の名前を決める、
という2つが必要。“`
int number = 7;String name = “佐藤”; //String(文字列)型はのsは大文字
double syosu = 3.14;
“`###キャスト(強制的に型変換)
“`
int number1 = 7;
int number2 = 2;System.out.println(number1 / number2); //結果は3
System.out.println((double)number1 / number2); //結果は3.5
“`###真偽値 boolean型
“`
System.out.print
日本語を表示する Servlet の簡単な例
次の表示を出すサーブレットです。
![servelet_jun25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/d7f4fab1-e73f-2e94-72da-015fa1dae0f3.png)フォルダー構造
“`text
$ tree hello/
hello/
└── WEB-INF
├── classes
│ ├── HelloWorld.class
│ ├── HelloWorld.java
│ └── Makefile
├── lib
└── web.xml
“`“`jave:HelloWorld.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;public class HelloWorld extends HttpServlet {
public void doGet(HttpServletReq
Javafxで簡単なゲームを作ってみた① ”幸せを探そうゲーム”(未完成版②)
#Javafxで簡単なゲームを作ってみた①
##”幸せを探そうゲーム”(未完成)②
![happy_unhappy_game2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527593/ece74ea6-1523-e130-043f-2d04d5765320.gif)“`
import javafx.ui.*;
import javafx.ui.canvas.*;
import java.util.Date;
import java.lang.Math;
import java.lang.System;
import timer.Sound;public class Timer {
private attribute elapsed: Number;
public attribute seconds: Number;
public attribute minutes: Integer;
public attribute hours: Integer;
public attribute cou
Java(Spring)でMapperを使う
#やったこと
Java(Spring)でMapperを使ってデータベースを扱ってみました。
#準備
jarファイルをダウンロードするなりしてMapperが使えるようにする。
Spring Tool Suiteを使っている場合、プロジェクト作成時にMyBatisを選択しましょう!#フォルダ階層
![スクリーンショット 2020-06-25 18.59.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577071/e21ab019-92be-bb3a-d68e-648438dc63a7.png)
なんだか恥ずかしいのでプロジェクト名は隠しております。
#コード
##mapperクラスにはこんな感じで書きます。“`java
@Mapper
public interface UserMapper {
@Insert(“INSERT INTO users (userId, username, password) VALUES (#{userId}, #{username}, #{pa
MyBatisで動的SQL文を作る【複数のワードで検索できるようにする】
#やりたいこと
キーワードを+ 全角スペース→半角スペースに変換(編集①)
+ 2個以上の半角スペース→1個の半角スペースに変換(編集②)
+ 先頭と末尾のスペースを削除(編集③)したうえで、カテゴリーと併せてキーワードをOR検索(スペースで区切った**いずれかのキーワードが含まれているものを検索**)したい。
#環境
使用OS-Windows10
使用ツール-Spring Tool Suite 4 4.6.2
テンプレートエンジン-Thymeleaf
フレームワーク-mybatis#結果(xmlファイルの記述)
“`xml
SELECT * FROM item_table
WHERE cate_id = #{category}
AND
IM-Juggling とは
# 序文
IM-Jugglingとはなんぞやって質問が後輩から飛んできた。
IM-Jugglingについて言及して居る記述は[intra-martの公式サイト](https://www.intra-mart.jp/document/library/iap/public/setup/iap_quick_setup_guide/texts/create_war/create_project.html)では以下の記載となっております。> IM-Juggling はモジュールの管理、WARファイルのリモートデプロイを実行できる環境構築ツールです。
> このツールを使用し、新しい機能の導入や不具合修正の適用をします。質問してきた後輩は物理ネットワークの出身でWebアプリケーションに明るくない。
ましてや「“イントラマート“」って言われても何のことかわからない。
後輩なりに色々調べてWebアプリケーションっぽいってことは理解した様なのですが、
具体的には理解できていない様だった。幸いな事に私の所属している組織ではintra-martを利用しており、
[イントラマート社](htt
Javafxで簡単なゲームを作ってみた① ”幸せを探そうゲーム”(未完成)
#Javafxで簡単なゲームを作ってみた①
##”幸せを探そうゲーム”(未完成)
“`sample.java
package happy_unhappy_game;import java.util.Random;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.TilePane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;public class Sample extends Application {
public static void main(String[]args) {
launch();
}public
Java 標準ライブラリの com.sun.net.httpserver で簡易的な Web サーバを作る
## 概要
– Java 標準ライブラリの com.sun.net.httpserver パッケージを使用して簡易的な Web サーバのサンプルを作る
## com.sun.net.httpserver とは
com.sun.net.httpserver は HTTP サーバを構築可能な Java パッケージ。
[com\.sun\.net\.httpserver \(Java SE 14 & JDK 14\)](https://docs.oracle.com/javase/jp/14/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html)
> 組込みのHTTPサーバーの構築に使用できる、単純で高度なHTTPサーバーAPIを提供します。 「HTTP」と「HTTPS」の両方がサポートされています。 APIは、RFC 2616 (HTTP 1.1)およびRFC 2818 (HTTP over TLS)の実装の一部を提供します。 このAPIで提供されないHTTP機能は、APIを使用してアプリケーション
書くときにも発生する MalformedInputException
自分が書いた Java プログラムが以下のエラーを出力した。
“`java
Caused by: java.nio.charset.MalformedInputException: Input length = 1
at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:274)
at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:306)
at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:281)
at java.base/sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
at java.base/java.io.OutputStreamWriter.write(OutputStreamWriter.java:211)
at java.base/java
制御フローを読みやすく
#制御フローを読みやすく
Readableコードを読んだので
制御フローを読みやすくする方法を書いてみる##条件式の引数の並び
“`java
if(length >= 10)
if(10 <= length) ``` どちらも同じ意味を持っているけど最初の方が読みやすい ###変化する値は左辺へ、変化しない値は右辺へ 先ほどの例だと10という定数を右辺へ、 lengthという変数を左辺へ持ってくると読みやすくなった。 日本語でも 「もし私が20才以上なら」 「20才が私の年齢以下なら」 を考えた時、前者の方がわかりやすい。 私の年齢は変化をしていくが20才は定数だ。 変化する値は左辺へ、変化しない値は右辺へは自然言語と同じ順にすることで 理解を容易にできることがわかる。 ##三項演算子 三項演算子はとても便利。 以下のように使うと助長なif-else文を短くできる ```java if(hour >= 12) {
time_str += “pm”;
} else {
time_str += “am”;
}//三項演算子を使う
time_str
Dagger2 – Android Dependency Injection
#DIとは
Dipendency Injection(DI)、「オブジェクトの注入」のこと。要するに、依存性を自由に差し替えれるようにすることで、テストを実行しやすくしたり(モックを差し込む)、オブジェクトをそれぞれ管理できるようになる。
#AndroidにおけるDIの必要性
例えば、SharedPreferencesにデータを保存したい場合、DIなしで実行すると、SharedPreferencesからデータをインスタンス化、保存、取得することになり、すべてアクティビティに似たような記述をしなければならない。
この方法でアプリが大きくなると、最悪の場合改修不可能になる可能性がある。
なのでSharedPreferencesを毎回アクティビ
文字列をmd5ハッシュ化して返す
##文字列をmd5Hash化
まあ自分メモです。
ライブラリとかあるみたいなので使わなそうですけど。
この方法は`MessageDigest`を使います。下記のソースの`strHash` の部分がハッシュ化したい文字列です。
任意の文字列ってことになります。
ハッシュ化した結果は`str`の値です。“`java:md5Hash.java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;/**
* md5Hash
* 入力された文字列をmd5Hash化して返す
*/public class md5Hash {
public static void main(String[] args) {
/**ハッシュ化したい文字列:strHash */
String strHash = “12345”;
System.out.println(“ハッシュ化する文字列:” + strHash);
IBM Cloud ShellでQuarkusを試してみよう
この記事は、これからQuarkusを始める方を対象に、IBM Cloudで提供しているIBM Cloud Shellを使って[Quarkus.io](https://quarkus.io/get-started/)のFirstStartの手順を実行するためのガイドです。
###Cloud Shellとは
IBM Cloud Shell はクラウドのメニュー(アイコン)からコンソールに即時アクセスが可能です。
2020年6月現在、ベータ版として主に以下の機能をリリースしています。
・30時間利用/週
・ストレージ500 MB/User
・ファイルのアップロード、ダウンロード処理
・アプリのプレビュー
詳細、最新情報は[IBM Cloud Docs](https://cloud.ibm.com/docs/cloud-shell?topic=cloud-shell-shell-ui)をご確認ください
OpenCensusとJavaで分散トレーシングをする## はじめに
OpenCensus APIとJavaで分散トレーシングを実装してみました。OpenCensusはGoogleのCloud Trace(旧 StackDriver Trace)をベースとした仕様で分散トレースとメトリック収集の仕様です。
こちらを使うことでPG側は統一したAPIを利用しながらバックエンドをJeagerやOpenZipkinあるいはCloud Traceなどに連携できます。実はOpenCensusは既に古く、似た様な仕様のOpenTracingと統合する形で現在は[OpenTelemetry](https://opentelemetry.io/)として標準化されています。こちらはDatadog, NewRelic, Dynatrace, Instanaといった商用のAPMも含めて対応しているので今後はこちらを使うべきです。
なので、最初はOpenTelemetryを弄ってたのですがJeagerには連携できたものの[Cloud TraceではJava版はまだ未対応](https://cloud.google.com/trace/docs/setup)だ
今更ながらSpring Data JPAに入門してみた
# 始めに
[Doma](https://doma.readthedocs.io/en/2.19.2/)以外のOR Mapperを触ったことがなかったので、ふと思い立ち興味半分くらいで触ってみました。
Spring Bootアプリケーションへの導入方法 ~ 簡単なAPI作成で感じたDomaとの比較について書きたいと思います。
# 環境
– IDE VSCode
– Java 11.0.6
– Spring Boot 2.3.1
– PostgreSQL 11.6# 前提
簡単なAPIを作成して、色々と触ってみたいと思います。作成するAPIは以下の様。
| エンドポイント | Http Method | 概要 | 備考 |
| —————————- | ———– | ——————————————
[Java]配列
#配列の定義
`データ型[] 配列名 = {};`“`java
String[] names = {“tanaka” , “sato” , “suzuki”};
System.out.println(names[0]);
“`#配列のfor文
配列の中身を全部出力する。**通常のfor文**
“`java
String[] names = {“tanaka” , “sato” , “suzuki”};
for(int i = 0; i < names.length; i++) { System.out.println(names[i]); } ``` **拡張for文** `for(データ型 変数:配列名){}` ```java String[] names = {"tanaka" , "sato" , "suzuki"}; for(String name:names) { System.out.println(name); } ```
[Java]出力、変数
#標準出力
`System.out.println()`“`java
System.out.println(“Hello World”);
“`#変数
**変数定義**
`データ型 変数名;`“`java
String hello;
hello = “Hello World”;
System.out.println(hello);
“`
こちらでも意味は一緒“`java
String hello = “Hello World”;
System.out.println(hello);
“`
#型変換
**強制型変換(キャスト)**
出力の時に型を強制的に変換する例:int型同士の計算結果を小数点で出したい(本来は小数点はでない)
“`java
int num1 = 10;
int num2 = 4;
System.out.println((double)num1 / num2);
“`
Java初学者が4日でポーカーゲームを作る(3日目)
##モチベーションと目的
Javaについて少し知っておこうと思い6/21から勉強を始めました。
6/21にprogateでJavaの基礎的なことは学んだのでアウトプットしようと思います。
作るのは何でもよかったのですが、私が愛してやまない頭脳スポーツ「テキサスホールデム」を作ってみようと思います。就職に向けてアウトプットソースを増やす目的と、日記的な意味合いで学習の軌跡をここにメモっておくことにしました。
##予定
1日目:progateでJavaについて知る(割愛)
2,3日目:とりあえず実装(できた!)
4日目:オブジェクト指向に倣いコードを整える(無理かも)##実装機能(簡単のため相当簡略化)
昨日は
**カードを配り、プリフロップのアクションを決定**
するところまでできていた残すところ
**フロップ、ターン、リバーの動き
ハンドの強弱、役の決定
all-in、foldなどの処理**
です##ハンドの強弱
一番頭を悩ませたハンドの役の決定から。
なお、簡単のためフラッシュ、ストレートは今回実装しなかった。また、最弱のカードは2ではなくAになってるが勘弁してほし
Javaの条件分岐
##はじめに
小難しい部分は文章で説明するのがまだ難しいのでまずなにが出来ることの基本をモリモリ書いていくことにする.##条件分岐の書き方
“`kane.java
if(条件式){
処理;
}
“`
###これが基本の形
真偽値、比較演算子(==, < など)、論理演算子(&&, ||, ! )などを使用して条件式を書いていく. ###ブロック{} 複数の処理をまとめたいときに使う. **{ }の後ろにはセミコロンは不要。** ```kane.java int x = 40 if(x >= 30){
System.out.println(“xは30以上。”);
}else if(x > 20){
System.out.println(“xは20より大きく30より小さい。”);
}else{
System.out.println(“xは20より以下。”);
}//今回は最初の処理で実行される
“`else ifは必要なだけ並べることができるが、**実行されるのは最初に合致した条件だけ。**
##switch文
条件の値がcaseの値