タグ: windows
YubiKeyとSSH ed25519-skをmacOSとUbuntuとFreeBSDとCygwinで
しばらくぶりの鍵周りの整理でOpenPGP(GnuPG)の暗号用鍵を更新したり、フォールバック用に長いこと残しっぱなしにしていたOpenSSHのRSAの公開鍵を消して回っているなどしている時に、だいぶ前の話のようですがOpenSSH 8.2でFIDO U2Fがサポートされ、ed25519-skおよびecdsa-skなる-skが付いた鍵タイプが追加されたという話にたどり着きました。
FIDO U2Fということは黒いYubiKey 5 NFCシリーズ(PDF)ではなくて、青いSecurity Keyシリーズ(PDF)でもOKということになことになります。これは試さねば! というわけでmacOSとUbuntuとFreeBSDとCygwinで試してみました。
続きを読むDHCPでWindows用メトリックを配布
ドメインごとのDNSサーバ指定 macOS, Windows, 他
CuPy, Chainer をAnaconda3で使う インフラ気にしたくない、Windowsでお気楽にCUDA, cuDNN使いたい
CuPyをインストールするのにCUDAとかcuDNNとかWindowsだとVisual Studioとか大変だった方もいらっしゃると思いますが、 CuPyがcondaコマンドでインストールできるようになりました ということでWindows用も出来上がっているので、一利用者としてはもうAnaconda使うに限るっしょという感じです。バージョンちょっと旧くても良いし(2018-11-30現在だとChainer 4.5)、pipがどうとかインストールがどうとかどうでもよいけどNVIDIA積んでるからCuPy使いたいという方にAnaconda3はお勧めです。
ただ、
RTFM: CuPy 5.1.0 – Installation Guide
自動テスト通ってんのはUbuntu GNU/Linux 64bit LTS14.04/16.04とCentOS 7(64bit)だけだかんね。WindowsとかmacOSを含む他の環境でのCuPyは、動いてるように見えてもわしゃ知らんからね。
と書かれている(CuPy 5.1.0より前も同様)ので、テストの詳細はよくわかりませんが(オープンソースなんだから見ろという…)、機能まで含まれているとすると、違う環境で動作させようとしているまじめな良い子は
- 財布の紐のadminに相談、物で溢れ返っている人は空間デザイナーにも相談
- マルチブート
- クラウド, VPS,レンタルサーバ
等を駆使して、書かれているGNU/Linux環境を整えます。
この機械はWindowsゲーム用、まじめでもガチ勢でもないからこのままAnaconda3をインストールするくらいで、できるだけめんどいことしたくないけどCuPyは使いたいし、ということで進めます。
念のため CUDA GPUs の中からお持ちのGPUを探して、Compute Capabilityの数字を確認しておきます。Installing cuDNN に、必要なcompute capabilityが書かれて(ただ今だと3.0以上)います。
Protocol 139なIPパケット – 備忘録
Protocolフィールドが139なIPパケットについての情報へのリンク(TCPやUDPではなく、またPortが139なのではない)。/etc/protocolsに載ってない機械だらけだけどIANA登録済み
- IANA Protocol Numbers
- RFC7401 Host Identity Protocol Version 2 (HIPv2)
- OpenHIP
誤検知: cmdproxy.exe Trojan.Win32.Siscos.ipv
シェルを呼び出してまでWindowsでEmacsを使うこともないのでさくっとquarantineしてくれちゃって良いのですが、一応困る人がいるかもしれないのでunbel32以来久々のfalse detectionの報告をしたところ、「ごめん、誤検知。次で直すね。ありがとー!(超訳)」とのお返事。
問題イベント名: BEX
http://technet.microsoft.com/en-us/library/cc738483(v=WS.10).aspx によれば a buffer overflow or DEP exception だそうな。ってことは例外は全部 ?EX なのか、例外は最大で26個までなのか、はたまた36個までなのか、特別例外とかいう「イベント」があったらまずくないのか、などなどBOFとでも書いておいてくれればいだくはずもない素朴な疑問はおいておいて、バイナリが正しい配布のものであることを確認して、複数のアンチウィルスでも確認、さらに可能であればそれがDEPに対応できていないことを確認した後にわざわざその実行ファイルでのDEPを無効にし、実行完了後に戻すことにします。
今回はWindows用JREインストーラ実行開始直後
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Java(TM) Platform SE binary は動作を停止しました ... 問題の署名: 問題イベント名: BEX アプリケーション名: jre-6u31-windows-i586.exe アプリケーションのバージョン: 6.0.310.5 アプリケーションのタイムスタンプ: 4f2ce2fa 障害モジュールの名前: StackHash_6718 障害モジュールのバージョン: 0.0.0.0 障害モジュールのタイムスタンプ: 00000000 例外オフセット: 046898a0 例外コード: c0000005 例外データ: 00000008 OS バージョン: 6.1.7601.2.1.0.256.48 ロケール ID: 1041 追加情報 1: 6718 追加情報 2: 6718520661a5809bd4bc4af70234b126 追加情報 3: 2b9a 追加情報 4: 2b9a6b667e74ecf8b9265e65579805bf |
JREインストーラのハッシュはどこにも見当たらないのでインストーラ本体のデジタル署名を隅々まで確認。もっともらしそう。「オンラインで解決策を確認してプログラムを終了します」をクリックすると無言のまま終了。何も無いことを確認してくれたんですね。
このインストーラに対してDEPくらい対応してよという声も複数見つかるので、では半べそですがインストーラのDEPを無効にします。 EMET があれば簡単です。’Configure System’ボタンを押し、DEP を ‘Always On’ から ‘Application Opt Out’ に格下げ。’Configure Apps’ボタンを押して jre-6uxx-windows-xxx.exe を追加、DEPのチェックをはずし、OSごとリブート。インストーラを実行してインストール完了後に’Configure Apps’で追加したものを削除して、DEPを’Always On’に戻して完了。
「初めてのWindowsガジェット」ソースコード解説
「【ランチタイムラーニング】 初めてのWindowsガジェット」という記事(冒頭の「注」もお読みください)で、お昼を食べながら踏み出す、ガジェット作成の第一歩について説明しました。
この記事では、その記事に掲載したソースコードについて、少し詳しく解説します。
JavaScriptでのタイマー機能の実装
最初はHTMLの開始と、CSSのスタイルの定義です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<html> <head> <title></title> <style type="text/css"> body { margin: 0; width:130px; height:100px; font-family:Georgia, "Times New Roman", Times, serif; font-weight:bold; } #gadgetContent { margin-top:20px; width:130px; vertical-align:middle; text-align:center; overflow:hidden; } #nowTime { text-align:left; font-size:x-large; } #setTime { text-align:right; } </style> |
7行目で、bodyの幅を130pxに設定しています。ガジェットがWindows Vistaのサイドバーに貼り付いている状態を「ドッキング」と言いますが、このドッキングの状態では、ガジェットの最大の幅は130pxです。
また、ガジェットをサイドバーに貼り付けず、単独でデスクトップに表示する状態にすることができ、この状態を「アンドック」と言います。
アンドックした状態では、ガジェットの幅は130px以上に設定することができます。多くのガジェットでこの設定を利用して、ドッキングの状態では簡易的なビュー、アンドックした状態ではリッチなインターフェイスを持ったビュー、というようなビューの切り替えを提供しています。ただし、アンドックした状態でも、ガジェットのサイズは縦横共400pxを超えないことをMicrosoftは勧めているそうです。
さて次にHTMLを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 |
<body onload="init()"> <g:background id="imgBackground"> <span id="gadgetContent"> <span id="nowTime">00:00</span><br /> <input id="setTime" type="text" size="5" id="time" value="55" /> min <br /> <input type="button" value="Start" onclick="startTimer()" /> <input type="button" value="Stop" onclick="finish()" /> </span> </g:background> </body> </html> |
4行目が経過時間を表示するエリア(nowTime)です。そして、5行目に設定時間を入力するフィールド(setTime)があり、6行目、7行目がタイマーを開始、停止するためのボタンです。開始するにはJavaScriptで記述したstartTimer()ファンクション、停止するにはfinish()ファンクションをそれぞれ呼ぶようになっています。
1行目で、このHTMLがロードされたときにJavaScriptで記述したinit()ファンクションを呼ぶようになっていますが、後で出てくるように、今回のガジェットではこのinit()ファンクションは何もしないので、このHTMLがロードされたときは特別な処理は行われません。しかし、今後タイマーの背景画像を変えたりするなどカスタマイズするときに、HTMLがロードされるタイミングでJavaScriptのファンクションを呼ぶ、ということを覚えておきましょう。
最後にJavaScriptを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
<script type="text/jscript" language="jscript"> var startTime; var secTimerId; var timerId; function init() { // var oBackground = document.getElementById("imgBackground"); // oBackground.src = "url(images/background.png)"; } function startTimer() { startTime = new Date(); doTimer(); } function doSecTimer() { var diffSec = Math.floor(((new Date()).getTime() - startTime.getTime())/1000); var nextTime; var iMin=Math.floor(diffSec/60); var iSec=diffSec%60; var strMin=("0" + iMin); strMin = strMin.substr(strMin.length - 2, 2); var strSec=("0" + iSec); strSec=strSec.substr(strSec.length - 2, 2); document.getElementById('nowTime').innerHTML=strMin + ":" + strSec; nextTime = (startTime + 1000 * (1 + diffSec)) - (new Date()).getTime(); if (0 < nextTime) { secTimerId=setTimeout("doSecTimer()", nextTime); } else { secTimerId=setTimeout("doSecTimer()", 100); } } function doTimer() { var time = Math.abs(document.getElementById('setTime').value * 60 * 1000); doSecTimer(); timerId=setTimeout("finish()", time - ((new Date()).getTime() - startTime.getTime())); } function finish() { clearTimeout(secTimerId); clearTimeout(timerId); } </script> |
ここでは経過時間の常時を更新し(26行目)、毎秒JavaScriptのsetTimeout()でつぎのちょうどの秒にdoSecTimerを呼び出します(30行目)。念のため高負荷がかかっていて表示の次のちょうどの秒が過ぎてしまった場合には単に0.1秒後に再度更新するようにします(32行目)。これをsetTimeout()で設定時間までの時間を計る(39行目,44行目)ことでタイマーを実装しています。
表示の更新は、その時点での時間と開始時間の差分をとって、何秒経過したかを計算します。もちろん1秒ごとに1を足すのが一番簡単ですが、タイマーイベントがジャストの時間に発生しなかったり、そのほかの計算での時間も足されてしまうのでどんどんどんどん遅れることになり、やめたほうが良いでしょう。
また、前述の通りこのガジェットではHTMLがロードされたときに呼ばれるinit()ファンクションでは何もしませんが、7行目、8行目でコメントアウトしてある行のコメントをはずして、背景画像を表示することができるでしょう。
ガジェットでのalertの実装
さてタイマーはこれで実装できるのですが、そもそもタイマーは、指定時間が経過したことを「ぴぴっ」とか言いながら教えてくれてこそ、その本領を発揮できると言うものでしょう。なのにこのタイマーにはアラーム機能がありません。まるで人ごとのように書いてしまいましたが、このセクションでは簡単なアラーム機能を実装しましょう。
そもそも何故このタイマーガジェットはalert()ファンクションを使って、ひょいっとポップアップさせることさえしないのか。それは、alert()ファンクションやconfirm()ファンクションで出てくるポップアップがWindows Vista User Experience Guidelines for the Sidebarに則っていないということでサイドバーガジェットでは無効化されているからです。
それでもとりあえず簡単にポップアップを出したいときもあるではないですか。デバッグするときなんか特に。MSDN Magazineの記事に、そんな開発者の心の叫びに応えた、alert()やconfirm()と同等の機能を実装するやり方(ガジェットプラットフォームが脆弱である一因)が掲載されています。以下が今回のタイマーガジェットにそのやり方を適用する方法です。
ステップ1: ファンクションを準備する
作業フォルダに新しく「Timer.vbs」というファイルを作成して、次のように記述し保存します。
1 2 3 |
sub myAlert(msg) MsgBox msg, 48 , "Message from Timer" end sub |
ステップ2: タイマーガジェットから呼び出す
Timer.htmlの中で、前述のCSSの直後、JavaScriptの直前に次の行を書きます。
1 |
<script src="Timer.vbs" type="text/vbscript"></script> |
同じくTimer.htmlの中の、finish()ファンクションの最初か最後に次の行を書きます。
1 |
myAlert("時間です"); |
これで簡単なアラーム機能ができました。
参照情報
【ランチタイムラーニング】 初めてのWindowsガジェット – お昼を食べながらガジェットを作ってみよう – Windows 7 デスクトップおよびVista サイドバー
「ガジェット」という言葉を聞くと、昔のアニメ、Inspector Gadgetの決め台詞、”Go-Go-Gadget!”と叫びたくなります。この台詞と共に、体のあちこちからわらわらとガジェットが出てくる様は、さながら洋風ドラえもんといったところです。
GUIを伴うアプリケーション作成は数年前まではちょっと敷居が高いものでしたが、現在ではエディターと初歩的なHTMLやJavaScriptの知識があれば、便利な「ガジェット」がいとも簡単に作れるようになりました。しかも作ったガジェットを世界中の人たちと共有できる環境があるので、その便利さや自分の作品を公開し使ってもらえる楽しさから、文字通り老若男女が挑戦しています。
最初の一歩はお昼を食べながら踏み出せるくらいの手軽さです。明日のお昼にでも、ちょっと作ってみませんか?
注: 脆弱なガジェットをインストールした場合に遠隔からコードを実行させることができてしまうプラットフォームである(KB2719662)との理由でWindows 8以降での機能実装の打ち切り、およびガジェットを無効にするように薦めています(理由は不明ですがガジェットを無効にするためのお手軽Fix it 50906の提供が中断か終了したようなので、無効にする場合は上記記事の中のSuggested Actionsの抜粋 Windows サイドバー ガジェットの悪用から Windows Vista および Windows 7 コンピューターを保護する方法 を参照してください)。ガジェットはお手軽ですが、動作させることはexeを動作させているのと同じ危険性を持つので、由来のわからないものや、由来がわかっていても脆弱かもしれないという意識が必要です。またローカルファイルにアクセスする権限やコードの実行権限があるので、脆弱なものを作ったりインストールしたりしたら大変なことに、しかも管理者権限でログインしていたらOSまるごと乗っ取られるかもしれませんよ、ということになります。以上、当たり前な話であるわけですが、テキストエディタだけでお気楽に作れる分余計に注意が必要、ということでしょうか。メールに添付されたzipの内のjsファイルを実行してしまってファイルを軒並み暗号化されて、復号のためにはbitcoin払えと表示されて涙、と似たようなものです(こちらはOSによる注意のダイアログが出る分少しましかも知れないですが、見慣れていて結局そのままOK押してしまうかも)。
何を作るか
Windows サイドバー ガジェット開発者ガイドには、”Hello, World!”と出てくるガジェットの作り方が掲載されています。”Hello, World!”はチュートリアルの王道ではありますが、もう少し実用性のあるガジェットを作ったほうがより楽しく作れるでしょう。
例えばタイマーなどは便利な上に簡単です。最近、仕事を効率よく進めるコツとして「ライフハック」という言葉が使われていますが、いくつかのライフハックの中で1日の時間を分割して効率良く作業を進める方法を取り上げています。ただ、時間を気にしながら作業をしても集中できないので、タイマーがあると便利です。それにタイマーはエンジニアの友であるカップ麺を作る時にも重宝します。
そこで今回は簡単なタイマーを自作します。この簡単なタイマーを改造していけば、自分好みのタイマーを作ることができます。
材料を準備しましょう
【材料】
- お気に入りのエディタ (Windowsのメモ帳(notepad.exe)で十分)
- ブラウザ
以上です。そうです、今この記事をご覧になっているのであれば標準的にコンピュータに入っているもので作れてしまうのです。それがガジェット作りの手軽さなのです。
もちろんJavaScriptやHTMLのリファレンスが手元にあると便利ではありますので、お好みでご利用ください。
さっそくガジェットを作りましょう
手順と成果物の概要
ではさっそくガジェットを作りましょう。その手順は以下の通りです。
- %LOCALAPPDATA%\Microsoft\Windows Sidebar\Gadgetsにフォルダーを作る→「○○.gadget」フォルダー
- JavaScriptを含んだHTMLを記述する→「○○.html」ファイル
- マニフェストを記述する→「gadget.xml」ファイル
以上、簡潔な3ステップです。
ステップ1: 作業フォルダの作成
%LOCALAPPDATA%\Microsoft\Windows Sidebar\Gadgets (C:\Users\<ユーザー名>\AppData\Local\Microsoft\Windows Sidebar\Gadgets)に「Timer.gadget」フォルダー(以降、作業フォルダーと呼びます)を作成します。
1 |
mkdir "%LOCALAPPDATA%\Microsoft\Windows Sidebar\Gadgets\Timer.gadget" |
ステップ2: JavaScriptを含んだHTMLを記述する
作業フォルダーに、新しく「Timer.html」というファイルを作成して、次のように記述し保存します。(このHTMLファイルの内容の詳しい解説は、『ソースコード解説』に記述しましたので、必要に応じて参照してください。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
<html> <head> <title></title> <style type="text/css"> body { margin: 0; width:130px; height:100px; font-family:Georgia, "Times New Roman", Times, serif; font-weight:bold; } #gadgetContent { margin-top:20px; width:130px; vertical-align:middle; text-align:center; overflow:hidden; } #nowTime { text-align:left; font-size:x-large; } #setTime { text-align:right; } </style> <script type="text/jscript" language="jscript"> var startTime; var secTimerId; var timerId; function init() { // var oBackground = document.getElementById("imgBackground"); // oBackground.src = "url(images/background.png)"; } function startTimer() { startTime = new Date(); doTimer(); } function doSecTimer() { var diffSec = Math.floor(((new Date()).getTime() - startTime.getTime())/1000); var nextTime; var iMin=Math.floor(diffSec/60); var iSec=diffSec%60; var strMin=("0" + iMin); strMin = strMin.substr(strMin.length - 2, 2); var strSec=("0" + iSec); strSec=strSec.substr(strSec.length - 2, 2); document.getElementById('nowTime').innerHTML=strMin + ":" + strSec; nextTime = (startTime + 1000 * (1 + diffSec)) - (new Date()).getTime(); if (0 < nextTime) { secTimerId=setTimeout("doSecTimer()", nextTime); } else { secTimerId=setTimeout("doSecTimer()", 100); } } function doTimer() { var time = Math.abs(document.getElementById('setTime').value * 60 * 1000); doSecTimer(); timerId=setTimeout("finish()", time - ((new Date()).getTime() - startTime.getTime())); } function finish() { clearTimeout(secTimerId); clearTimeout(timerId); } </script> </head> <body onload="init()"> <g:background id="imgBackground"> <span id="gadgetContent"> <span id="nowTime">00:00</span><br /> <input id="setTime" type="text" size="5" id="time" value="55" /> min <br /> <input type="button" value="Start" onclick="startTimer()" /> <input type="button" value="Stop" onclick="finish()" /> </span> </g:background> </body> </html> |
ステップ3: マニフェストを記述する
作業フォルダーに新しく「gadget.xml」というファイルを作成します。
作成したファイルに次のように記述し保存します。Shift_JISの代わりにUTF-8で保存できるエディタの場合はencoding=”…”の部分は不要です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?xml version="1.0" encoding="Shift_JIS" ?> <gadget> <name>Simple Timer</name> <version>1.0.0.0</version> <author name="【あなたの名前】"> <info url="" /> </author> <copyright>【あなたのコピーライト】</copyright> <description>A simple timer</description> <hosts> <host name="sidebar"> <base type="HTML" apiVersion="1.0.0" src="Timer.html" /> <permissions>Full</permissions> <platform minPlatformVersion="1.0" /> </host> </hosts> </gadget> |
ガジェットを動かしましょう
Windows Vistaの場合
サイドバーを右クリックで「ガジェットを追加」を選びます。
Windows 7の場合
Windows 7の場合はデスクトップの右クリックで「ガジェット」を選びます。
するとガジェットのリストに、「Simple Timer」が出てくるので、それを選びます。
パッケージを作る場合
作成した「Timer.html」「gadget.xml」の2つのファイルをzipにまとめます。zipにフォルダ名が保存されないように(zipファイルをダブルクリックした際に、フォルダではなくて2つのファイルが見える状態)、作成してください。そしてできあがったzipファイルを、「Timer.gadget」という名前に変更します。出来上がった「Timer.gadget」ファイルをダブルクリックしてインストールできるパッケージができます。
さあ、いかがですか?ちょっと見た目が悪いタイマーっぽいものが出てきましたね?
そして自分好みのタイマーに
今回作成したタイマーは、ガジェットの作り方の基本だけなので装飾していません。自分好みの背景画像や、色、フォント、さらにアニメーションを加えて、自分好みのタイマーに育ててみましょう。それがアプリケーション作りの醍醐味のひとつです。
また、このタイマーには指定時間が経過したことを通知するアラーム機能がありません。簡単なアラーム機能に関しては、上記のHTMLファイルを解説した「『初めてのWindowsサイドバーガジェット』ソースコード解説」という記事に記述しましたので、必要に応じて追記してみてください。
そうしているうちにガジェットのJavaScriptは原型を留めないほど変わるでしょう。その頃にはタイマーに限らず、自分の好きなガジェットが作れるようになっているはずです。楽しいガジェットを作って、世界に向けて発信しましょう!
参照資料
Windows で sockstat (lsof)
1 |
netstat -anb |
とか
1 2 |
netstat -ano tasklist /svc | find "_pid_" |
netstatに-oなるオプションがあったり、find(fgrep)で””が必ず必要(command.comゆずりでcmd.exeも処理していないのか、はたまた処理してさらに”を渡しているのか…)だったり。
定例外Windows Update KB2286198
本当は怖いtar
などと刺激的なタイトルをつけてしまいましたが、「ディレクトリトラバーサル」とか「GNU tarのsuper userでの展開時のumask」とかを思い起こす方が多いと思います。主に展開時に大きな問題になるそれらも重要なことなのはもちろんですが、基本も忘れずにしていないと作成時でも泣きをみるかもしれません。設定ファイルのバックアップを取ろうとしたとします。
1 2 3 4 5 |
% su # cd / # rm /somewhere/hoge.tar # tar cvf /somewhere/hoge.tar etc usr/local/etc |
深く考えずにやってしまいそうですが… umaskの確認をお忘れなく。/somewhere/が論理的に他人に読めず物理的にも安全な場所であれば完璧です。単純にsudoを設定すれば防げるという話でもなく、.profileや.cshrcでumaskを厳しく設定していても、普段自分だけがユーザの機械での作業をメインにされている方は他人の機械で作業しているときは忘れてしまうかもしれません。
1 2 3 4 5 6 |
% su # umask 077 # cd / # rm /somewhere/hoge.tar # tar cvf /somewhere/hoge.tar etc usr/local/etc |
のようにする癖が付いていれば、せっかく読めなくなっているファイル(例:/etc/master.passwdやら/etc/shadowやら)を他のユーザが読めてしまう危険が激減します。既存のファイルに追記する場合はモードの確認も必要です。
1 2 3 4 5 6 |
% su # umask 077 # cd / # chmod go= /somewhere/hoge.tar # tar rvf /somewhere/hoge.tar etc usr/local/etc |
cpio, dd, zip, 普通にcp などなどなど、そしてWindowsも含めて暗号化ファイルシステム上のファイルをzipしたりコピーするときなどなどなど、コピー元が安全にしてあってもコピー先で読めてしまってはいけません。プログラミングでは一時ファイルを作成する際とかも関連事項です。当たり前すぎ?こりゃまた失礼いたしました。
迫るサポート期限
セキュリティ更新が原則ストップする予定日(予測日)
Windows 10 2004 | 2021-12-14 | サービス オプションごとの Windows 10 の現在のバージョン ご存じですか? OS にはサポート期限があります! |
Windows 10 20H2 | 2022-05-10 | サービス オプションごとの Windows 10 の現在のバージョン ご存じですか? OS にはサポート期限があります! |
Windows 10 21H1 | 2022-12-13 | サービス オプションごとの Windows 10 の現在のバージョン ご存じですか? OS にはサポート期限があります! |
Windows 8.1 | 2023-01-10 | マイクロソフト サポート ライフサイクル ご存じですか? OS にはサポート期限があります! |
Windows Server 2012/2012 R2 | 2023-10-10 など | マイクロソフト サポート ライフサイクル |
FreeBSD 12.x-RELEASE security branch | 2024-06-30 | http://security.freebsd.org/#sup |
FreeBSD 13.x-RELEASE security branch | 2026-01-31 | http://security.freebsd.org/#sup |
Ubuntu 20.04 LTS Focal Fossa |
2030-04 | List of Releases Ubuntu kernel release cycle |
FreeBSD security branch | http://security.freebsd.org/#sup | |
Internet Explorer | Internet Explorer 11 desktop app retirement FAQ | |
Adobe製品 | Supported Product Versions |
終了したもの
Ubuntu 16.04 LTS Xenial Xerus 16.04.5(16.04.1,16.04.0) |
2021/4 | List of Releases 16.04.x Ubuntu Kernel Support |
Debian GNU/Linux 8 Jessie |
LTS 2020/6/30 (2018/6/17) |
https://wiki.debian.org/LTS/ https://wiki.debian.org/DebianJessie |
Windows Server 2008/2008 R2 | 2020/1/14 など | マイクロソフト サポート ライフサイクル |
Windows 7 最終SP | 2020/1/14 など | マイクロソフト サポート ライフサイクル ご存じですか? OS にはサポート期限があります! |
Ubuntu 14.04 LTS Trusty Tahr 14.04.5(14.04.1,14.04.0) |
2019/4 | List of Releases 14.04.x Ubuntu Kernel Support |
FreeBSD 10.4-RELEASE security branch | 2018/10/31 | http://security.freebsd.org/#sup |
Firefox NPAPI plug-in support (ESR 52) | ESR 2018/8(2018/5) | NPAPI plug-in support… |
FreeBSD 10.3-RELEASE security branch (extended) |
2018/4/30 | https://www.freebsd.org/security/unsupported.html |
Debian GNU/Linux 7 Wheezy |
LTS 2018/5/31 (2016/4/26) |
https://wiki.debian.org/LTS/ https://wiki.debian.org/DebianWheezy |
FreeBSD 11.0-RELEASE security branch | 2017/11/30 | https://www.freebsd.org/security/unsupported.html |
Ubuntu 12.04 LTS Precise Pangolin 12.04.5(12.04.1,12.04.0) |
2017/4/28 | List of Releases 12.04.x Ubuntu Kernel Support |
Windows Vista 最終SP | 2017/4/11 など | サポートの終了とは マイクロソフト サポート ライフサイクル |
Firefox NPAPI plug-in support (51) | 2017/3/7 | Firefox 52… NPAPI plug-in support… NPAPI プラグイン のサポートは終了しました |
FreeBSD 10.2-RELEASE security branch | 2016/12/31 | https://www.freebsd.org/security/unsupported.html |
FreeBSD 10.1-RELEASE security branch (extended) |
2016/12/31 | https://www.freebsd.org/security/unsupported.html |
FreeBSD 9.3-RELEASE security branch (extended) |
2016/12/31 | http://security.freebsd.org/#sup |
Debian GNU/Linux 6 Squeeze |
LTS 2016/2/29 (2014/5/31) |
https://wiki.debian.org/LTS/ https://wiki.debian.org/DebianSqueeze |
Windows 8 | 2016/1/12 など | マイクロソフト サポート ライフサイクル |
FreeBSD 8.4-RELEASE security branch (extended) |
2015/8/1 |
https://www.freebsd.org/security/unsupported.html |
Windows Server 2003/2003 R2 最終SP | 2015/7/14 | サポートの終了とは マイクロソフト サポート ライフサイクル |
FreeBSD 10.0-RELEASE security branch (extended) |
2015/2/28 | https://www.freebsd.org/security/unsupported.html |
FreeBSD 9.2-RELEASE security branch (extended) |
2014/12/31 | https://www.freebsd.org/security/unsupported.html |
FreeBSD 9.1-RELEASE security branch (extended) |
2014/12/31 | https://www.freebsd.org/security/unsupported.html |
FreeBSD 8.3-RELEASE security branch (extended) | 2014/4/30 | https://www.freebsd.org/security/unsupported.html |
Windows XP 最終SP | 2014/4/8など | サポートの終了とは マイクロソフト サポート ライフサイクル |
FreeBSD 9.0-RELEASE security branch | 2013/3/31 |
https://www.freebsd.org/security/unsupported.html |
FreeBSD 7.4-RELEASE security branch (extended) |
2013/2/28 | https://www.freebsd.org/security/unsupported.html |
FreeBSD 8.2-RELEASE security branch | 2012/7/31 |
https://www.freebsd.org/security/unsupported.html |
FreeBSD 8.1-RELEASE security branch (extended) | 2012/7/31 | https://www.freebsd.org/security/unsupported.html |
FreeBSD 7.3-RELEASE security branch (extended) | 2012/3/31 | https://www.freebsd.org/security/unsupported.html |
Debian GNU/Linux Lenny | 2012/2/6 | http://www.debian.org/News/2012/20120209 |
Windows Vista SP1 | 2011/7/12 | サポートの終了とは マイクロソフト サポート ライフサイクル |
Windows Server 2008/2008 R2 SPなし | 2011/7/12 | マイクロソフト サポート ライフサイクル |
FreeBSD 7.1-RELEASE security branch | 2011/2/28 |
https://www.freebsd.org/security/unsupported.html |
Adobe Flash Player 9 | 2011/2/8 | http://kb2.adobe.com/cps/406/kb406791.html |
FreeBSD 8.0-RELEASE security branch | 2010/11/30 | https://www.freebsd.org/security/unsupported.html |
FreeBSD 6.4-RELEASE security branch, 6-STABLE | 2010/11/30 | https://www.freebsd.org/security/unsupported.html |
Windows XP SP2 | 2010/7/13 | サポートの終了とは マイクロソフト サポート ライフサイクル |
Windows 2000 | 2010/7/13 | サポートの終了とは マイクロソフト サポート ライフサイクル |
FreeBSD 7.2-RELEASE security branch | 2010/6/30 2010/5/31 |
https://www.freebsd.org/security/unsupported.html |
Windows Vista SPなし | 2010/4/13 | サポートの終了とは マイクロソフト サポート ライフサイクル |
Debian GNU/Linux Etch | 2010/2/15 | http://www.debian.org/News/2010/20100121 |
FreeBSD 6.3-RELEASE security branch | 2010/1/31 | http://security.freebsd.org/#sup |