VS Code で Java を書くときに Lombok が無くてエラーが出たとき

VS CodeJava のプログラムを見たとき、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\"

marketplace.visualstudio.com

参考

Lombok support · redhat-developer/vscode-java Wiki · GitHub

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

EBS

  • Amazon EC2 インスタンスストア
    • ハイパーバイザー内にある
    • インスタンスを止めるとデータは消える
  • Amazon EBS
    • EC2 からはネットワーク経由でアクセス
    • このネットワークは高速
    • スナップショットを S3 に保存
    • 支払いはプロビジョニングした分 100GB 中 5GB しか使って無くても 100GB の課金

S3

  • ファイルシステムとしての使用は推奨していない
  • バケットに無制限のオブジェクトを保存可能
  • 最大 5TB のオブジェクトを保存可能
  • 99.999999999% のオブジェクトの耐久性(イレブン・ナイン)
    • 3箇所以上のデータセンターにデータを格納している
  • 99.99% のオブジェクト可用性
  • オブジェクトはインターネットに公開可能
  • 動画配信や静的なサイトの構築が可能
  • バケット
    • デフォルト 100個(上限緩和申請可能)
  • オブジェクト
  • キー
  • アクセスコントロールリスト/バケットポリシー

  • ディレクトリの概念は無く全てフラットに存在している

  • バージョニング
    • 有効化することでバージョン管理される
    • バージョン管理されているファイルが全て課金対象になる
  • 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 の伸縮性とベストプラクティス

セキュリティ、アイデンティティ、およびアクセス管理

  • 責任共有モデル
    • お客様責任範囲
    • AWS 責任範囲
  • SSL エンドポイント
    • 安全な送信
  • セキュリティグループ
  • VPC

    • ネットワーク制御
  • IAM

    • ユーザーとアクセスの管理
    • ロールと権限の管理
    • フェデレーティッドユーザーと権限の管理

    • IAM ユーザー

      • アクセスキーの使用は推奨されていない
      • アクセスキーは IAM ロールで同じことができる
    • IAM グループ
    • IAM ロール
      • ヘルメットの役割
      • 通常はアクセスできないがヘルメットをかぶる(ロールを引き受ける)ことでアクセス権限を委任する
    • IAM ポリシー

      • デフォルトは拒否
      • 最小権限の原則に従う(ベストプラクティス)
      • 明示的に許可された場合にアクセス可能になる
    • AWS STS(一時セキュリティ認証情報)

AWS のデータベース

  • Amazon RDS

    • マネージド型サービス
    • 運用負荷を削減
    • マルチ AZ 機能

      • DB インスタンスがスタンバイ状態で別の AZ に配置されて、同期的にレプリケートされる
      • マスタに障害発生時に自動的にスタンバイに対してフェイルオーバーを行う
      • メンテナンス時にスタンバイをメンテしてフェイルオーバーして、マスタをメンテすることが可能
    • 自動バックアップ

    • 手動スナップショット

      • S3 に保存
    • Amazon RDS for Aurora

  • Amazon DynamoDB

    • NoSQL

      • = Not Only (SQL SQLだけではない)
      • 水平方向のスケーラビリティが可能
    • スケーラビリティ

  • 共有ストレージ

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 ということで下記を購入

完全なワイヤレスは無くしてしまいそうだったのでこのモデルにした。

f:id:k6i:20180316004139j:plain

f:id:k6i:20180316004632j:plain

使ってみる。

Mac の コマンドラインで使用する Java をアップデートしようとしてちょっと引っかかった

現在のバージョンを確認

macOS High Sierra 10.13.1

☁  ~  java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

Java をアップデート(失敗)

  1. Mac のシステム環境設定
  2. Java
  3. Java コントロール・パネルの更新
  4. 更新

としたけど、コマンドラインJava のバージョンに変化が無い。 このアップデートでは、 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/javaJava が更新されている。

OS XのJRE 8のインストール

を参照すると、

Oracle製のJREをインストールしても、java -versionのシンボリック・リンクが更新されたりjavaがパスに追加されたりすることはありません。これを可能にするには、JDKをインストールする必要があります。

とあるので、OS で使用する Java の実行環境をインストールしているだけってことか。パスにも Internet Plug-Ins ってあるし、ブラウザで使用する Java を設定しているのか。

Java をアップデート(成功)

から Java SE Development Kit 8u151 をダウンロード、実行

  • コマンドから確認
☁  ~  /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    1.8.0_151, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
    1.7.0_71, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
  • JAVA_HOME を設定
export JAVA_HOME=$(/usr/libexec/java_home)
  • バージョン確認
☁  ~  java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

アップデートが出来ました。 ちょっと引っかかたので備忘録がてら調べた内容をメモー。

参考

www.pupha.net

インターネット Web サーバー構築ガイドライン を読んだメモ 3

第六章:アプリケーションの実行環境を設定しよう

  • ハンドラーがアプリケーションへのリクエストを処理する
  • PHP ゕプリケーションを実行できるようにするには、ハンドラーの設定で、「拡張子.php がリクエストされたら FastCGI を使用して php-cgi.exe を実行する」 というようにマッピングを行う。これをハンドラー マッピングと言う。

  • 仮想ディレクト

    • コンテンツのレスポンスに関する設定しか持っていない
  • アプリケーション

    • サーバー再度でプログラムを実行するためのアプリケーションプールの設定や、ハンドラーマッピングの設定がされている
    • つまり、サーバーサイドのアプリケーションを実行するための設定がなされた仮想ディレクト
  • ASP.NET ランタイムは、発生したエラー・警告などを Windows のイベントログとして出力する。

第九章:ログやトレースを活用しよう

  • アクセスログ

    • C:¥inetpub¥logs¥LogFiles
    • Web, FTP サイト毎にフォルダーが分割され、その中に日付別に名前が付けられたファイルがある
      • Web サイト : "W3SVC" + サイト ID (数字)
      • FTP サイト : "FTPSVC" + サイト ID (数字)
      • "u_ex" + (2 桁表記の UTC 年月日) + ".log"
    • Http.sys によって出力される
    • 自動的に削除はされない。ディスク容量の兼ね合いを見て手動で削除する必要がある
  • 失敗した要求のトレース

    • リクエストに対して行われる Web サーバー上の処理について、ファイルの種類や、処理時間、Web サーバーが返す HTTP ステータスを条件に、トレースログを取得することができる
  • ワーカープロセスの監視

    • IIS への各リクエストは、ワーカープロセスと呼ばれるサーバープロセス上のスレッドとして処理される
    • IIS では任意の数のワーカープロセスをホストすることが可能
    • Web サイト、アプリケーションは、各々独自のワーカープロセスを使用することも、また、ひとつのワーカープロセスを共有して使用することも可能
    • ワーカープロセスとは、アプリケーションプールが実行された際のプロセスのこと

    • 現在稼働しているワーカープロセスの一覧表示ができる

    • ワーカープロセスで現在実行中の要求を表示することができる
      • Windows の機能の有効化から インターネットインフォメーションサービス > World Wide Web サービス > 状態と診断 > 要求の監視 を有効にする必要あり
  • イベントログ

    • イベントログが記録されるとき

      • プログラム(アプリケーション、サービス)が明示的にイベントログへ情報を出力している
      • プログラムが内部で発生したエラーを処理できなかった場合
    • イベントビューアーで サブスクリプション を構成すると、リモート コンピューターからイベントを収集し、ローカル コンピューターのログに格納することができる

    • 複数台のサーバーを集中して管理する場合に便利
    • https://technet.microsoft.com/ja-jp/library/cc749183.aspx?f=255&MSPPError=-2147217396

第十章:動作状態の確認と性能向上

  • RSCA(Runtime Status and Control API: ルスカ) という実行状態を公開するためのインターフェースが IIS7 から開発された

    • RequestMonitorModule (Iisreqs.dll) という IIS モジュールがインストールされていれば利用できる
  • コマンドからの管理系の操作は Windows PowerShell の利用が推奨

  • アプリケーションプールの状態を知りたい
Get-WebAppPoolState プール名

開始済みの場合
Value
-----
Started

停止の場合
Value
-----
Stopped
  • IIS ドライブを使う
IIS:

PS IIS:\> dir

Name
----
AppPools
Sites
SslBindings
  • タスクマネージャー

    • 注目すべきプロセス
      • inetinfo.exe IIS Admin Service のプロセス
      • svchost.exe World Wide Web Publishing Service のプロセス
      • w3wp.exe アプリケーションが動作するワーカープロセス
      • w3wp.exe に一番注目
    • ワーカープロセスは全て w3wp.exe の名前になっているので pid(プロセスID) から識別する
    • タスクマネージャーで情報が足りない場合は Process Explorer を使う
  • パフォーマンスモニター

    • 注目するオブジェクト
      • WAS_W3WP
      • W3SVC_W3WP
      • Processor
      • Memory
      • Process
      • PhysicalDisk
      • Network Interface
      • .NET CLR xxxx (複数ありますが省略してまとめています。)
      • ASP.NET xxxx (複数ありますが省略してまとめています。)
      • Web Service
      • Web Service Cache
  • 失敗した要求トレース

    • 失敗した(HTTPステータスコード 400 以上)だけでなく、200 OK の正常終了のリクエストについても使用可能
    • ASP.NET の場合は Trace.Write, Trace.Warnを記述することで記録が残せる
  • HTTP 圧縮機能

    • サーバーで圧縮を行い、対応しているブラウザで解凍する
    • 静的コンテンツ、動的コンテンツの2種類に対してそれぞれ圧縮機能がある
    • サーバーで圧縮処理を行うため、処理増加・ディスク I/O の状況によってはボトルネックになることもある