- 1. ProtocとWireで生成されるJavaファイルとバイトコードのサイズを比較してみた
- 2. 【Java】独自クラスのListで重複した要素を除外する
- 3. [Android] Jetpack ViewBinding
- 4. [Android] ボタンイベントのベスト実装パターンを模索
- 5. Android Studio ToDoListアプリ制作(動画有り)
- 6. Java Silver 未経験者による取得体験記
- 7. [Java16]新機能Recordの詳細
- 8. [Android] (覚書)Jetpack NavigationとViewModelを採用した新規アプリ作成時のチートシート
- 9. SpringBoot + MySQL でTodoリストを作る!CRUDの実装(Delete編)
- 10. [Java16]instanceofパターンマッチングとスコープ範囲
- 11. [Java16]値ベースのクラスに対する警告
- 12. MacでJavaを利用するときのメモ(2021年3月)
- 13. Java言語について調べてみた
- 14. servletRequest+forward+リクエストスコープ+calcEX
- 15. Java Silver 覚えられんやつメモ
- 16. レスポンスデータを加工する(Stream)
- 17. EasyBuggyでクロスサイト・スクリプティング(XSS)脆弱性を確認し、それを修正する
- 18. SpringBoot + MySQL でTodoリストを作る!CRUDの実装(Update編)
- 19. 初心者のためのオブジェクト指向
- 20. プログラミング初心者が基礎基本を地道に身に着ける日記(Java_ABC188編)
ProtocとWireで生成されるJavaファイルとバイトコードのサイズを比較してみた
GradleでProtocol Bufferを使う時には[GoogleのProtobuf Plugin for Gradle](https://github.com/google/protobuf-gradle-plugin)か[WireのGradle Plugin](https://github.com/square/wire/blob/master/wire-library/docs/wire_compiler.md)が主流だと思いますが、それぞれのコンパイラ(protoc/wire)で生成されるJavaファイル(およびKotlinファイル)のサイズと、さらにそれをJVMバイトコードにコンパイルした時のファイルサイズを比較してみました。
きっかけはSquare社の[Introducing Wire Protocol Buffersという記事](https://developer.squareup.com/blog/introducing-wire-protocol-buffers/)で、Protocol Bufferの実装を**protocからwireに変えたらメソッドが10,0
【Java】独自クラスのListで重複した要素を除外する
# はじめに
Javaにて自分で作成したクラスのListから重複した要素を除外する方法について、いつもやり方を探してしまうので個人的なメモとしてまとめてみます。
# 前提
こんな感じの`Person`クラスがあったとします。
“`java:Person.java
public class Person {
private String id;
private String name;
private int age;public Person(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}public String getId() {
return this.id;
}public String getName() {
return this.name;
}public int ge
[Android] Jetpack ViewBinding
Android Studio 4.1.2(windows版) で動作検証してます
ViewBindingを採用することで各コントロールをfindViewById()で呼び出さなくてもよくなりました
Android Developerの説明にある通りnullや型の安全性があるので積極採用する流れになると思います
※ActivityやFragmentでコントロールのIDに重複が無いように定義する必要がありますViewBindingはAndroid Developerの説明で十分理解ができるかとは思いますが軽く説明してみます
Android DeveloperのViewBindingの説明は以下です
https://developer.android.com/topic/libraries/view-binding?hl=ja#java
## ViewBindingを使用するための設定
build.gradleに以下を追加します
ViewBindingを有効にするとBindingクラスが自動生成されます“`build.gradle
android {
viewBin
[Android] ボタンイベントのベスト実装パターンを模索
Android Studio 4.1.2(windows版) で動作検証してます
Javaでの実装中心の話となってますAndroidでボタンイベントを実装する方法はいくつかあります
みなさまはどの実装パターンを採用しているでしょうか?
すでにいろいろな方が同じような内容をまとめてくれていますが
実装に迷っている方もいるかもしれませんのであえてこちらでまとめていますAndroid DeveloperのButtonの説明は以下です
https://developer.android.com/guide/topics/ui/controls/button?hl=ja
## findViewById()でボタンを取得し直接setOnClickListener()で実装(匿名クラスで実装)
Activity/Fragmentで実装方法がほぼ同じなため
onCreate()あたりで以下のような実装をするパターンが多いのではないでしょうか?
私も脳死状態でよくこのパターンをコピペで実装してしまってます“`Java:Java
findViewById(R.id.button).set
Android Studio ToDoListアプリ制作(動画有り)
今回はToDoListアプリを制作しました。
YouTubeに作っている動画をアップしています。“`xml:strings.xml
ToDoListApp
タイトル:
内容:
登録
登録しました
登録出来ませんでした
タイトルを入力してください
Java Silver 未経験者による取得体験記
新卒でweb系自社開発企業より内定をいただいており、どうやらJava言語による開発をしているぞということで、先ほど取得してきました。
大学では計量経済学による実証分析を専攻していたので、開発に対しては門外漢です。
研究でR使ってました〜程度です。使用教材や勉強方法を以下に共有します。
# 購入した教材
黒本# 試験に向けた勉強
大学4年の春休みということで可処分時間が多く、いろいろなことに手を出していたので、少しずつ学習していました。
悪く言えばダラダラと。## 最初の1-2週間
ほぼ「タブララサ」状態から、黒本を一周しました。
1日1-2章くらいを目安に学習。
不明点はgoogleで調べて解決。
ぜんぜんわからん状態。## その後1ヶ月弱
その後1ヶ月弱はひたすら復習。
とはいえ、ちょうどこの時期は長編小説を読むことに拘っており、ダラダラとした学習へシフトしました。
当初は2週間での取得を目標にしていましたが、黒本に飽きてしまいガス欠。
しかし、2-3回の復習によりだんだんとJavaがわかってきた感じがしてなんとかモチベーションは維持。この期間に巻末の実力問題
[Java16]新機能Recordの詳細
# この記事について
2020/3/16にリリースされたJava16の言語仕様に関わる変更について,自分の理解を深めるのを兼ねてまとめてみます.プレビュー中の機能は含みません.
+ record (この記事)
+ [instanceof パターンマッチング](https://qiita.com/ReiTsukikazu/items/be973af7070c92bf87d5)
+ [型指定の制約について](https://qiita.com/ReiTsukikazu/items/bfac1d3bbac60915b73e)
+ [値ベースのクラスに対する警告](https://qiita.com/ReiTsukikazu/items/ddcfc8f279017e9ba186)## 出典
+ [JEP 395: Records](https://openjdk.java.net/jeps/395)
+ [Java SE 16 言語仕様](https://docs.oracle.com/javase/specs/jls/se16/html/index.html)# 新機能:
[Android] (覚書)Jetpack NavigationとViewModelを採用した新規アプリ作成時のチートシート
Android Studio 4.1.2(windows版) での流れとなります
業務上他のプラットフォームの対応があったりでandroidの開発を継続的にできないので
ついど忘れしちゃいそうな予感のため覚書としてまとめましたAndroid DeveloperのJetpack Navigationの説明は以下です
https://developer.android.com/guide/navigation/navigation-getting-started?hl=ja
## 新規プロジェクト作成
新規プロジェクト作成でEmpty Activity を選択します## navigationの作成
navigationフォルダを作成しますAndroid Resource Directory を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524204/b7268791-db3c-267d-3aa5-3884e4d99981.png)
Resource type でna
SpringBoot + MySQL でTodoリストを作る!CRUDの実装(Delete編)
#はじめに
前回はidに応じたTodoのbooleanの値を更新する機能を実装しました。
今回は、**「Todoの削除機能の実装」**をゴールとしています。
SpringBootを学び始めた方、復習をしたい方に向けて学んだ事を共有します。
##開発環境
“`
OS: macOS Mojave(バージョン 10.14.6)
“`“`
$ java -version
openjdk version “11.0.2” 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
“`“`
$ mvn -version
Maven home: /usr/local/Cellar/maven/3.6.3_1/libexec
Java version: 15.0.2, vendor: N/A, runtime: /usr/local/Cellar/openjdk/15.0.2/libexec/o
[Java16]instanceofパターンマッチングとスコープ範囲
# この記事について
2020/3/16にリリースされたJava16の言語仕様に関わる変更について,自分の理解を深めるのを兼ねてまとめてみます.プレビュー中の機能は含みません.
+ [record](https://qiita.com/ReiTsukikazu/items/6dc3ec9ea9646c472db0)
+ instanceof パターンマッチング (この記事)
+ [型指定の制約について](https://qiita.com/ReiTsukikazu/items/bfac1d3bbac60915b73e)
+ [値ベースのクラスに対する警告](https://qiita.com/ReiTsukikazu/items/ddcfc8f279017e9ba186)`instanceof`パターンマッチングは一見微妙に新しい形の構文を1つ追加しただけに思えますが,実は変数のスコープに関して複雑な仕様を含んでいて,かなり奥深いものになっています.
## 出典
+ [JEP 394: Pattern Matching for instanceof](https://o
[Java16]値ベースのクラスに対する警告
# この記事について
2020/3/16にリリースされたJava16の言語仕様に関わる変更について,自分の理解を深めるのを兼ねてまとめてみます.プレビュー中の機能は含みません.
+ [record](https://qiita.com/ReiTsukikazu/items/6dc3ec9ea9646c472db0)
+ [instanceof パターンマッチング](https://qiita.com/ReiTsukikazu/items/be973af7070c92bf87d5)
+ [型指定の制約について](https://qiita.com/ReiTsukikazu/items/bfac1d3bbac60915b73e)
+ 値ベースのクラスに対する警告(この記事)値ベースのクラスに関しては,Java16で直ちにコンパイル結果が変わったりするわけではありませんが,今後のバージョンで互換性を破壊する変更が入りそうなので,早めに警告をだすことにしたようです.
## 出典
+ [JEP 390: Warnings for Value-Based Classes](http
MacでJavaを利用するときのメモ(2021年3月)
いつも何も考えずbrew install openjdkとかでインストールしていたが、いろいろ奥が(闇が)深いらしいのでメモ。
>javaをAndroid以外の開発で利用することはほとんどないので謎ワールド。
## brew install openjdk
### インストール
brewコマンドで簡単インストール。
“`bash
brew install openjdk
“`が、どうやらkeg-onlyとうものであるため/usr/local/bin等にリンクが自動で張られない。
通常brew installすると/usr/localCellarに実体がインストールされ/usr/local/binにシンボリックリンクが設定され、PATHが通りますが、key-onlyでは実体だけのようです。>2021年3月現在、15.0.2がインストールされるみたい。
### PATHの設定
そのため、.zshrcに
“`bash
export PATH=”/usr/local/opt/openjdk/bin:$PATH”
“`必要に応じて
“`bash
expo
Java言語について調べてみた
今回は、一番人気と言っても過言ではない言語(1991年〜現在にわたり非常に人気な言語)**「Java」**について調べてみた。
#Javaについて
・Java仮想マシン(JVM)で動くため、どのような環境でも動かすことができる。
・オブジェクト指向言語である。
・Androidアプリやゲーム開発、WebアプリやWebサイトまで万能にこなす。
・有名なゲームの「マインクラフト」もJavaで作られている。
・セキュリティ面も優れている。
・みずほ銀行や三菱UFJ銀行などのシステムを開発できるくらい優れている。##メリット
**実行速度の速さ**。理由はJavaがコンパイラ型言語であること。
**ライブラリがとても充実している**。よって開発もしやすい。
**プラットフォームに依存しない**。これは非常に大きなメリット。
**言語として高性能**。その反面、学習難易度が高め。
##デメリット
**JVM**が入っていないパソコンだと機能しない。
**マイコン**にはJavaは組み込めない。(マイクロコンピュータの略で主に家電に使われている。)
**習得にはかなりの時間
servletRequest+forward+リクエストスコープ+calcEX
中途半端初心者の忘備録
/CalcControllerからWEB-INF/jsp/firstView.jspへフォーワード
“`CalcController.java
@WebServlet(“/CalcController”)
public class CalcController extends HttpServlet {
private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher dsp = request.getRequestDispatcher(“WEB-INF/jsp/firstView.jsp”);
dsp.forward(request, response);
}
“`WEB-INF/jsp/firstView.jsより/firstNu
Java Silver 覚えられんやつメモ
試験6日前に、2か月前にキックオフしたプロジェクトの基本設計フェーズに突然ぶち込まれ、試験前日の土曜日の出勤が確定して勉強時間の確保ができないこと間違いなしな状態になってしまったので、今まで勉強してきて見たことあるけどイマイチ頭に入ってきてなかった部分をざっと見返せるものを作って直前に詰め込もうと思いました。
Java SE11 Silverの受験を控えている方の参考にもなれば幸いです。
(黒本のまとめ問題を参考にしている&自分用なので、順番とか整理してません。)## String型の同値判定
– ==はインスタンスの参照が同じかどうかを判定している。
– リテラルとして記述した文字列は、基本的に使いまわされる。
– `intern`メソッドはすでにメモリ上にあるString型オブジェクトへの参照を戻す。“`java
public class Main {
public static void main(String[] args) {
String s1 = new String(“java”); //新規オブジェクト
String s2 = “java”; /
レスポンスデータを加工する(Stream)
※前回記事[レスポンスデータを加工する(拡張for文)](https://qiita.com/kilalabu/items/a1879315d292647cfcb5)のStream版です。
違いだけを知りたい人は「データを加工」までジャンプしてください。## はじめに
レスポンスデータって全要素使うわけではなかったり、ネスト構造になってたり、結構見にくいことが多いと思います。
ということで取得したレスポンスを加工(フィルター, マッピング, ソート)して、自分好みのデータクラスを作成してみました。## ゴール
フィルター(抽出):likeCountが5より大きいもの
マッピング(結合):title,body,likeCount,name
ソート(並び替え):likeCountで降順|加工前|加工後|
|—-|—-|
|![スクリーンショット 2021-03-16 22.02.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/f5eee0bb-25e2-cbf1-add
EasyBuggyでクロスサイト・スクリプティング(XSS)脆弱性を確認し、それを修正する
# 概要
[EasyBuggy](https://github.com/k-tamura/easybuggy/blob/master/README.jp.md)と[EasyBuggy Boot](https://github.com/k-tamura/easybuggy4sb/blob/master/README.jp.md)を利用して、クロスサイト・スクリプティング(XSS)脆弱性をシミュレーションし、その修正を試みます。
環境構築はこちらの記事から。
https://qiita.com/flyaway/items/4922af5dbaafa1942e88
## 注意事項
本記事では脆弱性をついた攻撃手法について解説しています。
しかし、実際に第三者が運用しているWebサービスなどに対して、勝手に脆弱性の検査をおこなうのは違法行為となる可能性が非常に高いです。無害な検査用文字列を送信しているだけのつもりであっても、意図しない破壊を招いたり、監視システムによって攻撃と勘違いされる可能性があります。
絶対にやめましょう。
参考事例: [脆弱性検査について](https:/
SpringBoot + MySQL でTodoリストを作る!CRUDの実装(Update編)
#はじめに
前回はフォームを用意してTodoの新規登録機能を実装しました。
今回は、**「blooeanの値を変更してMySQLのデータを更新する」**をゴールとしています。
SpringBootを学び始めた方、復習をしたい方に向けて学んだ事を共有します。
##開発環境
“`
OS: macOS Mojave(バージョン 10.14.6)
“`“`
$ java -version
openjdk version “11.0.2” 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
“`“`
$ mvn -version
Maven home: /usr/local/Cellar/maven/3.6.3_1/libexec
Java version: 15.0.2, vendor: N/A, runtime: /usr/local/Cellar/openjdk/15.0.2/
初心者のためのオブジェクト指向
#オブジェクト思考とは?
###いかに効率よく開発を行うかを突き詰めた考え方
例え)新入社員研修の時に御社はこういう考えのもとで働いてもらいますとういう研修を受けるようにオブジェクト指向も何かに基づいた考え方で動いています。そしてオブジェクト指向には主に4つの考え方があります。1つ目は設計、2つ目はカプセル化、3つ目は継承、4つ目はポリーモーフィズムと言います。
#1 設計
基本的にオブジェクト指向は物と物の関係性を考えて作っていきます。このプロセスを設計と言います。この設計を効率よく無駄なくできるかがオブジェクト指向の最も重要な考え方と言えます。#2 カプセル化
現在開発しているプログラムが他のプログラムから干渉されないようにするために基本的に決まった設計図で書いていくという考え方です。例え)自動車の設計をしているときに横から自転車の設計図をもらっても困りますよね?このように自動車の設計をしている時は自動車関連の設計図のみでやるという考え方です。
#3 継承
一口に自動車と言ってもバスやスポーツカーやトラックなど種類は様々です。その時に自動車という基本的な設計の
プログラミング初心者が基礎基本を地道に身に着ける日記(Java_ABC188編)
※本稿はAtCoderProblemsのBeginnerContest,A~C問題をJavaを用いて地道に解いていく人間の観察日記です
###目次
– まえがき
– AtCoder Beginner Contest 188に挑戦
– A問題
– B問題
– C問題
– 感想
– お世話になったサイト(参考に使用)##まえがき
[前回の記事(ABC194)](https://qiita.com/e2vee/items/11adc8b387290ebf0bdd)
ふぁっきんコロナのせいでなかなか研究室仲間(主に同期)に会うことができなかったんですけども、久々に会えました。そこで、研究室仲間と一緒に問題を解いたのですが、同期のうちの一人は水色コーダーだそう。..圧迫面接、開始ッ!!!
##AtCoder Begginer Contest 188に挑戦
###[A問題](https://atcoder.jp/contests/abc188/tasks/abc188_a)
“`188A.java:
import java.util.*;pub