VS CodeでSpring Boot を起動しようとしたら「Build failed, do you want to continue?」と表示されて起動しない
バージョン
参照
下記ページを参照することで解決できた。
したこと
Command-line arguments: -data C:\Users\xxxx\AppData\Roaming\Code\User\workspaceStorage\56838f4e76654cb1f380037ac07c0b54\redhat.java\jdt_ws
ってあるので、56838f4e76654cb1f380037ac07c0b54 のフォルダを削除するかリネームする。(VS Code 一旦終了してする)
Java Language Server が workspace を持ってるみたい。
- F5 キー押して起動してみる
- 起動したー
Spring Boot でセッションタイムアウトを1秒に設定しようとしてハマった
バージョンとか
- Spring Boot 2.0.2
- Embedded Tomcat
設定してみる
application.yml にタイムアウトの設定を追加して、下記のコードで確認を行う。
タイムアウトの値は極端に短く 1 秒になるようにしてみる。
server: servlet: session: timeout: 1
int t = request.getSession().getMaxInactiveInterval();
System.out.println(t);
結果は
60
getMaxInactiveInterval()
の戻り値は秒だから 60 秒ってことか。
timeout: 2
に変更しても、結果は変わらず。
何で 1 秒ならんの?
ちなみに、yml から設定を削除して実行してみると、1800 が表示されるので、 デフォルトは 1800 秒( = 30 分) のようだ。
60 になってるから設定は何かしら効いているっぽい。
よくわからんからソース読む。
で、このあたりが怪しい。Math.max で大きい方取ってる。
private long getSessionTimeoutInMinutes() { Duration sessionTimeout = getSession().getTimeout(); if (isZeroOrLess(sessionTimeout)) { return 0; } return Math.max(sessionTimeout.toMinutes(), 1); }
リファレンスには下記のようにあるので、application.yml の設定は「秒」で設定されてる。
server.servlet.session.timeout= # Session timeout. If a duration suffix is not specified, seconds will be used.
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
Duration がよく分からなかったので実験してみる
まとめ
つまり、application.yml の 1 秒とか 2 秒の設定は、Duration#toMinutes()
で 0
になって Math.max(sessionTimeout.toMinutes(), 1)
の比較で 1 に負けて、1 分つまり 60 が設定されたってことか。
秒で設定出来そうに見えて、分刻みでしか設定出来ないってことになるんだな。
最小の設定は 1 分 (= 60 秒)なんだな。
VS Code で Java を書くときに Lombok が無くてエラーが出たとき
VS Code で Java のプログラムを見たとき、Lombok を使用している場合大量のエラーが発生した。
前までは自分でパスを設定する必要があったみたいだけど、今はエクステンションが用意されているみたいで追加するとUser Settings に下記が追加される。
ビルドしてエラーが無くなって解決。
"java.jdt.ls.vmargs": "-noverify -Xmx1G -XX:+UseG1GC -XX:+UseStringDeduplication -javaagent:\"C:\\Users\\xxxxx\\.vscode\\extensions\\gabrielbb.vscode-lombok-0.9.4/server/lombok.jar\" -Xbootclasspath/a:\"C:\\Users\\xxxxx\\.vscode\\extensions\\gabrielbb.vscode-lombok-0.9.4/server/lombok.jar\"
参考
Spring Boot Thymeleaf Starter を 1.5.10 から 2.0.1 にあげたらレイアウトがうまく動かなかったけど解決した
2.0 から Compile Dependencies の nz.net.ultraq.thymeleaf / thymeleaf-layout-dialect が無くなっている。
Maven Repository: org.springframework.boot » spring-boot-starter-thymeleaf » 1.5.13.RELEASE
Maven Repository: org.springframework.boot » spring-boot-starter-thymeleaf » 2.0.2.RELEASE
compile('nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect')
を builld.gradle に追加して解決
追記
Spring Boot 2.0 Migration Guide · spring-projects/spring-boot Wiki · GitHub
公式にもマイグレーションガイドで書いてあった。
Thymeleaf 3 からはネイティブな方法が用意されてるから無くなってるらしい。
使いたいなら自分で追加してくれ。
とのこと。
AWSOME DAY ONLINE TRAINING の メモ
オンラインセミナーを聞いたときのメモ
聞きながらだったので、取り逃しとかもある
AWS の紹介と歴史~Amazon EC2, Amazon EBS, Amazon S3, Amazon VPC ~
- アマゾン社内のビジネス課題を解決するために生まれた
- AWS 上で実現できないことは無いと言われている
- 3000 を超える、機能拡張を実施
- 最近ではセキュリティの厳しい金融機関でも採用
- 強み
- 資本の支出を変動費に切り替える
- 従量課金で、初期費用が発生しない
- 規模の経済の利点を得る
- 60 回以上の値下げ(薄利多売)
- キャパシティの予測が不要
- スピードとアジリティの向上
- データセンターの運用保守費が不要に
- 分単位で世界中にデプロイ
- 資本の支出を変動費に切り替える
- AWS グローバルインフラストラクチャ
- リージョン
- アベイラビリティーゾーン
EC2
- 仮想サーバー
- 数分で必要なリソースを準備可能
- インスタンスと表現する
- AMI = Amazon Machine Image
- インスタンスタイプ
- インスタンスファミリー
- 世代
- サイズ
- インスタンスメタデータ
- ユーザーデータの取得 http://169.254.169.254/latest/user-data/
インスタンスユーザーデータ
- インスタンス起動時に、ユーザーデータを指定可能
- 初回起動時1回のみ有効
購入オプション
EBS
- Amazon EC2 インスタンスストア
- ハイパーバイザー内にある
- インスタンスを止めるとデータは消える
- Amazon EBS
- EC2 からはネットワーク経由でアクセス
- このネットワークは高速
- スナップショットを S3 に保存
- 支払いはプロビジョニングした分 100GB 中 5GB しか使って無くても 100GB の課金
S3
- ファイルシステムとしての使用は推奨していない
- バケットに無制限のオブジェクトを保存可能
- 最大 5TB のオブジェクトを保存可能
- 99.999999999% のオブジェクトの耐久性(イレブン・ナイン)
- 3箇所以上のデータセンターにデータを格納している
- 99.99% のオブジェクト可用性
- オブジェクトはインターネットに公開可能
- 動画配信や静的なサイトの構築が可能
- バケット
- デフォルト 100個(上限緩和申請可能)
- オブジェクト
- キー
- http://doc.s3.amazonaws.com/2006-03-01/AmazonS3.html
- バケット doc
- オブジェクトキー "2006 ~ html" まで
ディレクトリの概念は無く全てフラットに存在している
- バージョニング
- 有効化することでバージョン管理される
- バージョン管理されているファイルが全て課金対象になる
- Amazon Glacier
- S3 に似たサービス
- 低コストの長期アーカイブサービス
- 低頻度アクセスのデータに最適
- オンプレミスの磁器バックアップの置き換えをイメージ
- リアルタイムアクセスには利用不可
- Amazon S3 - 低頻度アクセス(IA)
- 低頻度アクセスのデータに最適
- ライフライクルポリシー
- S3 -> S3 低頻度アクセス -> Glacier -> 削除
- 保存期間に基づいてオブジェクトを削除、移動ができる
- 使用した分のみの料金が発生
- AWS簡易見積ツール
VPC
- 仮想ネットワーク
サブネットと呼ばれるネットサーク
- それぞれのアベイラビリティーゾーンに作成する
- private サブネット
- インターネットへ出入り出来ない
- public サブネット
- インターネットへ出入りできる
public ip アドレス(Global IP アドレス)
- private ip アドレス(Local IP アドレス)
- VPN 接続可能
- 全てのリソースが VPC 内にあるわけではない
- S3 はリージョンに存在sる
AWS の伸縮性とベストプラクティス
- アーキテクチャが需要の変化に対応できるようにする
- キャパシティの上限に達してからサーバーを用意しても遅い(Bad practice)
- アラームのしきい値に達したときに Auto Scaling がアラームを受信し EC2 を用意する(Best practice)
- Elastic Load Balancing
CloudWatch
Auto Scaling
- 耐障害性の向上
- 可用性の向上
コスト管理の強化
手動スケーリング
動的スケーリング
- CloudWatch アラームを使用
Auto Healing
- 異常な EC2 があった場合に、正常な EC2 インスタンスの台数を維持できる機能
スケーリングプラン
- インスタンス数の維持
- 手動スケーリング
- スケジュールに基づくスケーリング
- オンデマンドスケーリング
AWS Trusted Advisor
- 無料で使用可能
セキュリティ、アイデンティティ、およびアクセス管理
AWS のデータベース
Amazon RDS
- 共有ストレージ
VS Code で markdown のプレビュー表示のフォントを変更したい
ユーザー設定で下記の項目を編集して解決。
今回は、
fontFamily に Ricty Diminished
fontSize を 18 に変更
"markdown.preview.fontFamily": "-apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', 'HelveticaNeue-Light', 'Ubuntu', 'Droid Sans', sans-serif, 'Ricty Diminished'", "markdown.preview.fontSize": 18
イヤホンを買った
今週 3/18 にハーフマラソンに参加するので、イヤホンを買った。
今までは iPhone に付属されていたイヤホンを使用してランニングしていけど、走ってるとコードが邪魔だったり、スマホと繋がれてるせいで耳が痛くなり走ることに支障が出ていた。
とりあえず、ワイヤレスを試してみたいということで値段も安く anker ということで下記を購入
Anker SoundBuds Slim Bluetoothイヤホン(カナル型)【マグネット機能 / 防水規格IPX4 /内蔵マイク搭載】 iPhone、Android各種対応 (ブラック)
- 出版社/メーカー: Anker
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
完全なワイヤレスは無くしてしまいそうだったのでこのモデルにした。
使ってみる。