Windows / Windows Server / SQL Server / Office などMS製品のEOL

都度Microsoftの公式サイトで確認した方が良い(延長していてくれる場合もあるから)
https://support.microsoft.com/ja-jp/lifecycle/search/1163

[自身が気になるプロダクト]
Windows Server 2016
https://support.microsoft.com/ja-jp/lifecycle/search?alpha=Windows%20Server%202016
Windows Server 2019
https://support.microsoft.com/ja-jp/lifecycle/search?alpha=Windows%20Server%202019
SQL Server 2016
https://support.microsoft.com/ja-jp/lifecycle/search?alpha=SQL%20Server%202016
SQL Server 2017
https://support.microsoft.com/ja-jp/lifecycle/search?alpha=SQL%20Server%202017
SQL Server 2019
https://support.microsoft.com/ja-jp/lifecycle/search?alpha=SQL%20Server%202019
Office 2013
https://support.microsoft.com/ja-jp/lifecycle/search?alpha=Office%202013
Office 2016
https://support.microsoft.com/ja-jp/lifecycle/search?alpha=Office%202016
Office 2019
https://support.microsoft.com/ja-jp/lifecycle/search?alpha=Office%202019

Windows10は、パッチ単位で保証単位が異なるので、ライフサイクルのファクト シートというのを確認する必要がある。
https://support.microsoft.com/ja-jp/help/13853/windows-lifecycle-fact-sheet

IE11はこの検索結果見ても、以下のサイトを見てくれと書かれているが、正直良く分からない。。
https://support.microsoft.com/ja-jp/help/17454/lifecycle-faq-internet-explorer-and-edge
あまり二次ソースを頼るべきではないが、以下で一旦の解釈を行い、本当に厳密さを必要とする場合は、別途考える事にした。
www.atmarkit.co.jp

ひと目でわかるWindows Server 2019

ひと目でわかるWindows Server 2019

  • 作者:天野 司
  • 発売日: 2019/02/15
  • メディア: 単行本

MySQLのEOL

MySQL(商用版)とEOL対応表

バージョン 2023/4/30時点の最新版 Premium Support End Extended Support End
8.0.x 8.0.33 2025/4 2026/4
5.7.x 5.7.42 2020/10 2023/10
5.6.x 5.6.51 2018/2 2021/2
5.5.x 5.5.62 2015/12 2018/12
参考資料

"Oracle Lifetime Support Policy for Technology Products Guide".Oracle
See. Oracle MySQL Releases
http://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf

主なクラウドプラットフォーム別EOL対応表

基本的には上記と同じであるが、一応確認しておいた方が良い。
docs.aws.amazon.com
learn.microsoft.com
cloud.google.com

その他

  • 以下のサイトによると、MySQL Community Editionのサポートは、5.6が2021/2/5、5.7が2023/10/21との記載がある。一応5.6では今のところパッチメンテナンスはしてくれてはいるが、CEに関しては保証されている訳ではないので供給されない可能性があるリスクがある事は心に留めておいた方が良い。

dba.stackexchange.com

  • 利用するOSによっては、上記スケジュールより先にEOLを迎える場合がある。そのため、プラットフォームとしても問題ないか別途確認を行っておく必要がある。

www.mysql.com

  • Amazon RDS for MySQLの制約事項にlower_case_table_names(テーブル名の大文字・小文字区別するかどうか)というパラメータに関して、

 MySQL 8.0 DB インスタンスの場合、lower_case_table_names から 1 への設定はサポートされていません。」
とさらっとぶっこんでくれているのどうにかならんもんかと。。。
2020.11.26 追記
Amazon RDS for MySQL 8.0.19以上は指定可能になりました。

Amazon RDS における MySQL の既知の問題と制限”.AmazonRDSユーザーガイド
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html

過去版(2020/4/15時点)
バージョン 2020/4/15時点 Premium Support End Extended Support End
8.0.x 8.0.19 2023/4 2026/4
5.7.x 5.7.28 2020/10 2023/10
5.6.x 5.6.46 2018/2 2021/2
5.5.x 5.5.62 2015/12 2018/12

Tomcat / TomEE のEOL

Tomcat

バージョンとEOL対応表
系列 最新版(※1) EOL EOL説明文
11.0.x 11.0.0.-M13 未定 無し
10.1.x 10.1.15 未定 無し
10.0.x 10.0.27 2022.10.31 Apache Tomcat® - End of life for Apache Tomcat 10.0.x
9.0.x 9.0.82 未定 無し
8.5.x 8.5.95 2024/3/31 Apache Tomcat® - End of life for Apache Tomcat 8.5.x
8.0.x 8.0.53 2018/6/30 Apache Tomcat® - End of life for Apache Tomcat 8.0.x
7.0.x 7.0.103 2021/3/31 Apache Tomcat® - End of life for Apache Tomcat 7.0.x
6.0.x 6.0.53 2016/12/31 Apache Tomcat® - End of life for Apache Tomcat 6.0.x

※1 2023/11/13時点

スペック表

Tomcatが対応しているServletJSPなどの実装バージョンや、サポートしているJDKなどを記載
Apache Tomcat® - Which Version Do I Want?

TomEE

バージョンとEOL対応表
系列 最新版(※2) EOL EOL説明文
9.x.x 9.1.1 未定 無し
8.0.x 8.0.16 2023/12/31 End of life for Apache TomEE 8.0.x
7.1.x 7.1.4 EOL End of life for Apache TomEE 7.1.x
7.0.x 7.0.9 EOL End of life for Apache TomEE 7.0.x
1.7.x 1.7.5 EOL End of life for Apache TomEE 1.7.x

※1 2023/11/10時点

後、Tomitribe社のサポート状況が一定の指標として利用できそう。
Policies and Lifecycle - Tomitribe

スペック表
系列 JakarataEE/JavaEE MicroProfile 対応Java
9.x.x JakartaEE9.1 MicroProfile 5.0 Java 11 or higher
8.0.x JakartaEE8/JavaEE8 MicroProfile 2.0 Java 8 or higher
7.1.x JavaEE7 MicroProfile 2.0 Java 7 or Java 8
7.0.x JavaEE7 Java 7 or Java 8
1.7.x JavaEE6 Java 6, Java 7 or Java 8
製品の種類

なおwebapp(旧drop in war)は、TomcatにWARとしてデプロイすることでTomcatをTomEEサーバーに変身させるオプションパック。
tomee.apache.org

補記事項

  • Tomcat7のEOLに関して調査する一環で纏めたが、思ったよりも記事がヒットしなかった。EOL以前にTomcat7自体オワコンだったのか(世の中はそんなに移行進んでたのか…)
  • AWSやAzure、IBM CloudなどのSaaSTomcatを利用している場合は確認しておいた方が良い(EOLタイミングでサービスが使えなくなる、強制アップデートがかかる恐れがある)

JenkinsのShared Librariesにおけるアンダースコアの意味

【疑問】
Jenkinsのパイプラインスクリプトを読み進める際に先頭に

@Library('my-shared-library') _

と記述されているのを良く見かけるが、アンダースコアの意味が分からない。

【意味】
JenkinsのGlobal Pipeline Librariesに設定しているディレクトリのsrc直下のgroovyスクリプトに関しては、import文を省略して利用できるという意味である。

【仕組み】
・Jenkinsの設定でGlobal Pipeline Librariesに予めどれがパイプラインスクリプトに使うものかを宣言しているため
・パイプラインをコミットしているリポジトリのフォルダ体系は、公式に書かれている通りsrc, vars, resourcesというフォルダ構成にする必要有(多分)

【嵌った事】
PythonRubyなどで引数に不要な個所はアンダースコアを定義する事があるので、それと勘違いしていた。
・アンダースコア宣言をし忘れており、指定無しで指定していたフォルダに同名スクリプトが存在していて、結果想定とは異なるパイプラインコードが動いていた。

【参考URL】
Using librariesの箇所に記載されている(英語)
Extending with Shared Libraries
最近の記事では綺麗に解説されていたので思い出しやすかった(暫くほったらかしで問題なかったから少し忘れてた…)
kotapontan.hatenablog.com
図付で細かく説明してくれていた
www.kimullaa.com

プログラミングGROOVY

プログラミングGROOVY

sh: __git_ps1: command not found というエラーメッセージが発生する【Windows編】

事象

VSCode経由でgit for Windowsbashを叩いていた際に、以下の様なエラーメッセージが発生する。

$ ps auxww
      PID    PPID    PGID     WINPID   TTY    
     UID    STIME COMMAND
     1510    1481    1510      13484  cons0     197609 10:38:59 /usr/bin/sh
     1515    1510    1515      17064  cons0     197609 10:39:18 /usr/bin/ps
     1481       1    1481      26804  cons0     197609 10:38:16 /usr/bin/bash
sh: __git_ps1: command not found

対処方法

C:\Program Files\Git\etc\profile.d配下のgit-prompt.shを以下の様に入れ替えた。

変更前
(中略)
    . "$COMPLETION_PATH/git-prompt.sh"
    . "$COMPLETION_PATH/git-completion.bash"
変更後
(中略)
    . "$COMPLETION_PATH/git-completion.bash"
    . "$COMPLETION_PATH/git-prompt.sh"

結果、エラーメッセージが表示されなくなった。

(中略)
sh: __git_ps1: command not found
$ bash    ← git-prompt.shを読み込み直すために打った
$ ps auxww
      PID    PPID    PGID     WINPID   TTY         UID    STIME COMMAND
     1545    1510    1545      19052  cons0     197609 13:08:01 /usr/bin/bash
     1532       1    1532        284  cons1     197609 13:07:42 /usr/bin/bash
     1510    1481    1510      13484  cons0     197609 10:38:59 /usr/bin/sh
     1558    1545    1558      27764  cons0     197609 13:08:07 /usr/bin/ps
     1481       1    1481      26804  cons0     197609 10:38:16 /usr/bin/bash
$ (エラーメッセージ出なくなった)

内部結合と外部結合

新人入ってきたりするので、今更ながら記載(cross joinは使う事少ないので割愛)

f:id:yoneyore:20200411224621j:plain
inner join/left outer join/right outer join

Windows版VSCodeとdockerを連動させる際に詰まった事など

WindowsVSCodeでdocker利用する場合に必要ななにがし

  • Windows10 Pro・・・これがないとDocker for Windowsを利用するためのHyper-Vが利用できないため。
  • Docker for Windows・・・これがないとdockerコンテナを起動できない。(WSL2に関しては、一旦除外)
  • VSCode・・加えて、拡張機能としてRemote-Containersをインスト―ルする。VSCodeのDockerはVSCode上でDockerコンテナを扱いやすくするための機能であるため、お好みでインストールすれば良い。

VSCodeのDockerとRemote-Containersの違い
 Dockerは、リモート接続せずに起動させる場合の拡張機能
 Remote-Containersは、起動したいコンテナにリモート接続する場合に利用する拡張機能
 docker-composerで起動したい場合や、最初イメージをダウンロードしてビルドする場合は、Remote-Containers利用した方が便利かもしれない。

●Remote-Containersで起動した時にVSCodeが再度立ち上がって、表示される内容が異なる
 仕組みを理解してないまま利用しようとしていたので、最初何が起きているのか理解できてなかった。
 

f:id:yoneyore:20200411213949j:plain
コンテナ起動前
f:id:yoneyore:20200411213949j:plain
コンテナ起動後
 コンテナ起動前とコンテナ起動後では、色々見た目が異なっている。
 ※1の様に起動後にコンテナ先に接続しているエディタにおいては、一部の拡張機能が非表示になっている。後述するが、接続を切った際のエディタでは拡張機能は接続前に戻る。※2の様に接続しているかどうかは、この箇所で判断すれば良い。Remote-Containersを使う事で何が嬉しいといえば、※3の様にコンテナに自動でログインできてコンソールが扱えたり、デバック機能と組み合わせれる為である。

●Dockerコンテナの接続の切り方・止め方

  1. Ctrl + Shift + N でエディタをもう一つ上げる。
  2. 元のエディタを閉じる。
  3. 新しいエディタのDocker拡張機能にて対象コンテナを止める。

 正直何が正しいのかいまいちよく分かってない中書いているためもっと効率の良い方法ありそう。
 そもそも、エディタを閉じたタイミングでコンテナ止めて欲しいが、まだそこまで調べ切れていない。
 また、普通にエディタを閉じようとすると、再度エディタを開く際に必ず接続する様になってしまう。ここも設定でどうにかなるのかとは思うがまだ調べれてない。

●Remote-Containersを用いて起動するために最低限必要なファイル

  • .devcontainer/devcontainer.json:これを自動で作成させようとしたらはまった(alpine-linuxが私ではうまくいかなかった)
  • docker-compose.yml:本当はdevcontainer.jsonとDockerfileだけで良さそうだが、ポート番号の指定がよく分からず、頼った。
  • Dockerfile:利用したいイメージ名を書く。docker-compose.ymlに寄せたので、ここはすっからかん。(※1)

参考として、MySQL8のイメージ作成した際のGithubを晒す。
dockerfile/MySQL8 at forBlog20200411 · riceflow/dockerfile · GitHub
※1 docker-compose.ymlでbuildと指定せずにimageを指定してしまえばDockerfileも不要であるが、今後の拡張性を考慮し冗長ではあるがDockerfileを指定

【参考リンク】
VSCodeでDockerを動かすという点においては、ここの情報を全面的に参考にさせて頂きました。
tech.actindi.net
docker-composerを用いてMySQLのイメージを作成する際に参考にさせて頂きました。
docker-composeでMySQL5.7を起動して接続してみた - Qiita

Visual Studio Code実践ガイド —— 最新コードエディタを使い倒すテクニック

Visual Studio Code実践ガイド —— 最新コードエディタを使い倒すテクニック

  • 作者:森下 篤
  • 発売日: 2020/02/21
  • メディア: 単行本(ソフトカバー)