- 1. Spring Java
- 2. HttpUrlConnectionの謎いスタックトレース
- 3. 業務改善をしよう!目次編
- 4. “色違いポケモンシミュレータ”
- 5. 『Domain-Driven Design Tackling Complexity in the Heart of Software – Eric Evans』を読んで要点を翻訳してみた
- 6. 【Java】BeanValidationでURL形式をチェックする場合HibernateValidatorの@URLは使わない方がよいかもしれない
- 7. Google OAuth 2.0 認証を使ったGoogle Sign-Inの実装(サーバー編)
- 8. コンストラクタインジェクションだと単体テストが楽なんじゃない?って話
- 9. 【Java】Eclipseで”1.Xより下のソース・レベルで許可されていません”とエラーが出た際の対処方法
- 10. なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか
- 11. Javaの名前を変更するExcelシートとセットTabの色
- 12. JavaからGoogleスプレッドシートを操作する
- 13. 【Swing】JFrameクラスについて
- 14. 【Java】正規表現でズンドコキヨシ
- 15. オブジェクト指向を「英文」とみなそうとするともやもやが残る理由
- 16. Studyplusで時短管理学習してみました。
- 17. Javaで同一階層のファイルをimportする
- 18. java error handlingの基礎 - catch は一番手前でしか拾われないという話
- 19. Java 入れ子のBeanをaaa.bbb[0].cccの形式に変換する
- 20. VsCode & AntでJavaをコンパイルするやり方
Spring Java
* Spring Tools 4 for Eclipseを入手し以下で解凍
“`bash
java -jar spring-tool-suite-4-4.5.1.RELEASE-e4.14.0-win32.win32.x86_64.self-extracting.jar
“`
* 必要によってSpringToolSuite4.iniに-vm追加“`bash
-vm
C:\Program Files\Java\jdk1.8.0_211\bin\javaw.exe
“`* springプロジェクト作成
File → New → Spring Starter Project → Next →
web機能とホットデプロイを使うため以下をチェック
1. Developer Tools→Spring Boot DevTools
2. Web→Spring Web
→ Finish![new.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/500676/7436d9d2-77f6-21cb-a4
HttpUrlConnectionの謎いスタックトレース
# 概要
[HttpUrlConnection](https://docs.oracle.com/javase/jp/8/docs/api/java/net/HttpURLConnection.html)の`getInputStream`メソッド呼び出し時に`IOException`が発生した場合、意味がわからない例外スタックトレースが返却されることがあります。
## TL;DR
`HttpUrlConnection#getInputStream`で`IOException`が発生する場合、過去にそのインスタンスで発生した`IOException`がネストされます。
## 検証環境
– macOS 10.15.2
– AdoptOpenJDK (HotSpot) 1.8.0_242-b08# 事象
以下のようなコードがあるとします。
– 400 Bad Requestを決め打ちで返却する簡易HTTPサーバを用意する
– HttpUrLConnectionを使って、簡易HTTPサーバにリクエストを送信する
– HttpUrLConnection#getInputSt
業務改善をしよう!目次編
# はじめに
2020年を迎え早一ヶ月が経ちました。
私も一年と少し居た現場を離れ、2020年から新たな現場に向かうこととなりました。
そのためこの一月、新たな現場に慣れるために様々な業務を見て聞いてきました。**なんだこの面倒くさい業務は!?**
そう感じる業務が多くありました。
前の現場が業務効率化に積極的だったのと、そこで働く人達の意欲も凄かったため、どうしても比較して見てしまっているのかもしれませんが…**ただ…これはチャンスなのでは?**
前の現場にいたこともあって、おかげで ShellScript の開発を独自で行う機会があったり、API の開発をしていたため通信周りの知識も増えました。
何より、そうした人たちに囲まれていたおかげで業務の効率化に対し積極的な意識がついていました。
まだまだ経験の多くない私ですが、これは貢献あるいはアピールするチャンスなのではと。というわけで、今の現場で感じた無駄な業務の改善案や、実際になんとかした Script 等を書き記していこうと思います。
この記事は主に改善案等を書き記す目次的な役割を持たせる予定です!
それぞれの記事を
“色違いポケモンシミュレータ”
乱数を使う練習①
アイテムなしで色違い孵化厳選を行った場合のシミュレーションimport java.util.Random;
public class Irochigai
{
public static void main(String[] args)
{
System.out.println(“色違いシミュレータ”);Random r = new Random();
int randomValue = r.nextInt(4096);if (randomValue == 4096) {
System.out.println(“Irochi”);
}
else {
System.out.println(“normal”);
}
System.out.println(randomValue);
}
}
『Domain-Driven Design Tackling Complexity in the Heart of Software – Eric Evans』を読んで要点を翻訳してみた
# domain-driven-design
Domain-Driven Design Tackling Complexity in the Heart of Software – Eric Evans
(NOTE: Description with brackets like this means my own thoughts, not translation)# Index
– [FOREWORD](#foreword)
– [PREFACE](#preface)
– [I. Putting the Domain Model to Work](#i-putting-the-domain-model-to-work)
– [Chap.1 Crunching Knowledge](#chap1-crunching-knowledge)
– [Ingredients of Effective Modeling](#ingredients-of-effective-modeling)
– [Chap.2 Communication and the Use of
【Java】BeanValidationでURL形式をチェックする場合HibernateValidatorの@URLは使わない方がよいかもしれない
内容は大体タイトルの通りです。
# 理由
`org.hibernate.validator.internal.constraintvalidators.hv.URLValidator`の実装では「`http:`」と入力しただけの状態でもバリデーションが通ってしまいます。
「入力される内容は`http`/`https`といったプロトコルだけ、最低限ドメインまで入っていてほしい」など、URLはURLでも限られた内容しか入力されない場合は`@Pattern`アノテーションを使って正規表現でチェックした方が良いでしょう。# 補足
[Maven Repository: org\.hibernate\.validator » hibernate\-validator » 6\.1\.2\.Final](https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator/6.1.2.Final)で検証しました。
Google OAuth 2.0 認証を使ったGoogle Sign-Inの実装(サーバー編)
#概要
今回はこちらの記事の続きです。
[Google OAuth 2.0 認証を使ったGoogle Sign-Inの実装(JS編)](https://qiita.com/biy0ganba/items/6c3a886759254e0e942c)
クライアントサイドでログインしてバックエンドサーバーで認証といった感じでやります。前回の記事でユーザー情報などをレスポンスで取得することができました。
ただこれをこのままサーバーサイドに送ったりするのは危険です。
例えば、ユーザーIDをサーバーに送信する際にユーザーを偽装できちゃったりします。。なので、その代わりに検証可能なIDトークンを使用して、サーバー側でサインインしているユーザー情報を安全に取得します。
さっそく実装していきましょう。
#フロントサイドの実装まずJSの部分を書きかえます。
“`javascript:JavaScript
function onSignIn(googleUser) {
var id_token = googleUser.getAuthResponse().id_token; //
コンストラクタインジェクションだと単体テストが楽なんじゃない?って話
# はじめに
Springでコード書いてるときに絶対使うアレ、`@Autowired`です。
最近はフィールドインジェクションじゃなくて、コンストラクタインジェクションのほうが推奨されているらしいのです。そもそもなんでコンストラクタインジェクションが推奨されているのかは、ググってみてください。
いろいろ理由がありますが、その中で一番納得したのは「あれ?これって単体テスト楽なんじゃね??」って思ったので、それについて書いてみました。# モック作るのめんどくさい
### テスト対象のクラス
サンプルが適当すぎですが、こんなメールを送るクラスがあったとして。
“` java:MailService.java
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;@RestController
@RequestMapping(path=”/mail”)
public class MailService {@Autowired
【Java】Eclipseで”1.Xより下のソース・レベルで許可されていません”とエラーが出た際の対処方法
##ブランチを切ると稀に起きる現象
職場でブランチを切って作業しようとした際に、ビルドすると何故かエラーが下の画像のように大量に発生するときがあります。備忘録も兼ねて解決方法を書きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424307/a7eff3fe-3ba1-87f2-6f59-6a86f992dafd.png)
よく見てみると
> ‘<>‘オペレーターは1.7より下のソース・レベルでは許可されていませんとのこと。
エラー表示されている箇所にマウスオーバーしてみると、どうやらJREのバージョンの問題のようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424307/209ce98a-f016-8e1b-a345-cddfe951c91b.png)##解決方法
解決方法はとっても簡単です。まずはEclipseのナビゲーターに表示されているプロジェクトを右クリックし
なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか
この記事は個人ブログのうち技術に関する箇所のみを抜粋した転載です。
[なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか -Junks, GC cannot sweep-](https://munchkins-diary.hatenablog.com/entry/2020/02/05/002748)またブログには書いたのですが、諸事情により先に英語版が存在します。
こちらも書いたのは僕なので、剽窃などではないことはご了承ください。\[元記事\]: [Why we replaced Java with Typescript for Serverless](https://dev.to/csohei/why-we-used-typescript-instead-of-java-on-serverless-39e2) in [dev.to](https://dev.to)
## はじめに
**サーバレス(serverless)**は昨今もっとも注目を集める設計手法の一つで、おそらく多くの開発者が大なり小なり自分のプロダクトに応用し始めているのではないでしょうか
Javaの名前を変更するExcelシートとセットTabの色
この記事では、Spire.XLS for javaを使用して、ワークシートの名前を変更し、Javaアプリケーションのシートのタブカラーを設定する方法を紹介します。
使用ツール:[Free Spire.XLS for Java (無料版)](https://www.e-iceblue.com/Introduce/free-xls-for-java.html)
Jarファイルの取得と導入:Method 1:ホームページを通じてjarファイルのカバンをダウンロードします。ダウンロード後、ファイルを解凍して、libフォルダの下の[Spire.xls.jar](https://www.e-iceblue.com/Download/xls-for-java-free.html)ファイルをJavaプログラムに導入します。
Method 2:[maven倉庫](https://www.e-iceblue.com/Tutorials/Licensing/How-to-install-Spire.PDF-for-Java-from-Maven-Repository.html)設置による導入。
`
JavaからGoogleスプレッドシートを操作する
## 新しいシートの追加
“`java
final String spreadsheetId = “my spreadsheetId”;
List
requests = new ArrayList<>();
SheetProperties sheetProperties = new SheetProperties().setTitle(“New Sheet”);
requests.add(new Request().setAddSheet(new AddSheetRequest().setProperties(sheetProperties)));BatchUpdateSpreadsheetRequest requestBody = new BatchUpdateSpreadsheetRequest();
requestBody.setRequests(requests);Sheets.Spreadsheets.BatchUpdate request = service.spreadsheets().batchUpdate(spreadsheetId,
【Swing】JFrameクラスについて
###(JFrameのクラス階層)
java.lang.Object
→java.awt.Component
→→java.awt.Container
→→→java.awt.Window
→→→→java.awt.Frame
→→→→→javax.swing.JFrame###(JFrameクラスのコンストラクタ)
“`java
JFrame()
//初期状態が不可視な新しいフレームを構築する
“`“`java
JFrame(GraphicsConfiguration gc)
//画面デバイスで指定されたGraphicsConfigurationと空のタイトルでFrameを作成
“`“`java
JFrame(String title)
//指定されたタイトルを使用して、初期状態で不可視な新しいFrameを作成
“`“`java
JFrame(String title, GraphicsConfiguration gc)
//指定されたタイトルと画面デバイスの指定されたGraphicsConfigurationで、JFrameを作成します。
“`→
【Java】正規表現でズンドコキヨシ
# 流行ったよね、ズンドコ
完全に時期を逃しているのですが、流行ったときに書いて放置してたソースが出てきたので、投稿します。
Javaでは余りこのパターンは見かけなかった感ある。元ネタはこれ。
Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた— てくも (@kumiromilk) March 9, 2016
オブジェクト指向を「英文」とみなそうとするともやもやが残る理由
#0. 結論
他動詞と自動詞を区別しよう。ただそれだけ。#1. 導入
オブジェクト指向による適度に可読化されたコードが、英文とみなせるということを聞いたことのある方は多いだろう。具体的にコードを英文として読むためには、次のように読む。
```:oop↔eng
主語.述語();//第1文型
主語.述語(補語);//第2文型
主語.述語(目的語);//第3文型
主語.述語(目的語, 目的語);//第4文型
主語.述語(目的語, 補語);//第5文型
```#2. 問題
##2-1. 分かりやすい問題
しかし、述語(動詞)の種類によっては、「主語」が本当に「主語」なのか疑わしくなってしまう時がある。
例えば、javaの`List`(知らない方向けに説明すると、配列のようなもの)では
`list.add(obj);`
のような書き方ができる。
このコードでは`List`のインスタンス`list`に`obj`を追加するということである。
**決して`list`「が」(どこかへ)`obj`を追加するわけではない**のだ。
そのため英文では「JVM adds list obj.
Studyplusで時短管理学習してみました。
# 目的、背景
> 仕事や家庭などでなかなか学習できない、そのような人向けとして、このStudyplusを社会人こそ使うと便利だと気づきました。また、今年は応用情報などの資格を取りたいという人向けにも良いです。# 実践
## 0.社会人カテゴリーがあるので社会人でも気軽に参加できる。## 1.教材登録できます!
![Screenshot_20200204_080843_jp.studyplus.android.app.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/9db04dfb-e0bf-2d0f-644c-47e1e0dd6e48.jpeg)## 2.学習成果をグラフで視覚化
![Screenshot_20200204_080546_jp.studyplus.android.app.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/57249/96e3c7a3-d1a0-bcfd-3519-2
Javaで同一階層のファイルをimportする
packageって考え方が必要らしい。
package = directory と思うと楽そうだ。
mainの .java ファイルをとあるフォルダに入れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24737/18347cc6-4b90-a7fa-7843-c1bea6dc6fec.png)
main()がある `Test1.java` の先頭にこれを入れる
```java
package test1;
```そうすると、何もimportせずに同一階層の **MyTest1Exception.java** が読み込める。
```java
void runSample() throws MyTest1Exception {
...
throw new MyTest1Exception("独自の例外です");
```ふむ
reference
https://itsakura.com/java-dokuji-re
java error handlingの基礎 - catch は一番手前でしか拾われないという話
エラーをどこで拾うかはほんとに迷う。
subroutineの中でうかつにtry-catchしてしまうと、拾いたいところまで届かなかったりする。
javaも同じだった
# 届かない例
同じExceptionを多段なsubroutineでかけると、内側のsubroutineでしか拾えない。
```java
public class MyException {
final private static int[] M = {1,2,3};
public static void main(String[] args) {
try {
subroutine(M);
}
catch ( ArrayIndexOutOfBoundsException e ) {
System.out.println("[SECOND] catch : " + e.getMessage());
}
}public static void subroutine(int[] M) throws ArrayIndexOutOfBoundsException {
tr
Java 入れ子のBeanをaaa.bbb[0].cccの形式に変換する
# はじめに
- 入れ子のBeanをaaa.bbb[0].cccの形式に変換する必要があるためとりあえず試作したもののためバグがあるかもしれません
- 想定している型は下記になります
- 親Beanのメンバ変数にString or Listor 子Bean or List<子Bean> ```java:Bean0.java
@Data
public class Bean0 {
private ListlistBean1;
}
``````java:Bean1.java
@Data
public class Bean1 {
private String id;
private String name;
private Listlist;
private Bean2 bean2;
private ListlistBean2;
}
``````java:Bean1.java
@Data
public class Bean2 {
private String count;
private List<
VsCode & AntでJavaをコンパイルするやり方
#目的
Javaのビルドの仕組みについて深く学習し、ビルドツールを習得し、Eclipseなしでの軽量・簡素な学習環境を構築する。
対象者:Javaはわかるけど環境構築やデプロイが苦手な人、勤務先がAntを使っているので触れておきたい人。ちなみに私がこれ。
筆者の環境:macOS
前提:JavaVMへのパスは通っていてjavacコマンドが動く。#Antをインストールする
[Ant公式](http://ant.apache.org)でダウンロードできる。
![スクリーンショット 2020-02-03 22.43.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201982/b1d7a576-3c96-2e75-3b1a-11dc21218dc2.png)
ここから、zip形式の最新のものをダウンロードする。そのままでもいいけど後で環境変数に記述するので短い名前に変えてもいい。
どこに配置してもいいけど、私はホームディレクトリに配置しました。
ここではapache-antにしました。```