Windows 10 の更新プログラムのダウンロード手順

Windows の更新プログラムは、通常、定期的にインターネット上のマイクロソフトのサイトからダウンロードされて 自動的に PC にインストールされます。

 

ほとんどの場合、これで問題ないわけですが、オフライン環境の PC にインストールする必要があるなどの理由で、更新プログラムのインストーラを入手したい場合があります。今回は、その手順をまとめました。

 

手順の概要

 

 


1. マイクロソフトの "Windows 10 の更新履歴" のサイトへアクセスします。

 

更新プログラムの情報が公開されているマイクロソフトのサイトへいきます。 

 

support.microsoft.com

 

 

2. 自分が使用している Windows 10 のバージョンを選択します。


左の列に Windows 10 のバージョンが記載されています。この例では、Windows 10 20H2 を選択しています。

 

f:id:koreyakono:20210214220256p:plain

 

もし、他のバージョンの Windows 10 を使用している場合には、列をスクロールすると、他のバージョンの Windows 10 がありますので、そちらのリンクをクリックしてください。


3. 取得したい更新プログラムを選択します。

Windows 10 の更新プログラムは、最新のものをインストールすれば、それ以前の修正分も全て含まれていますので、通常は、リストの一番にある最新のバージョンを選べば問題ありません。何らかの理由で最新以外のものをインストールする必要がある場合には、お好みの更新プログラムをクリックします。

 

・この例では、Windows 10 20H2 用の更新プログラム KB4601319 を選択しました。

f:id:koreyakono:20210214220615p:plain


リンクをクリックすると、対象の更新プログラムについての情報が表示されます。既に明らかになっている不具合情報やその対応方法が記載されていますので、確認をしておきます。

 

4. 更新プログラムのダウンロードサイトへアクセスします。

更新プログラムの記事をスクロールすると、 "How to get this update" という項目があります。この項目の中の  "Microsoft Update Catalog" のリンクをクリックします。

 

f:id:koreyakono:20210214222008p:plain

 

 

5. 必要な更新プログラムを取得します。

"Microsoft Update カタログ" というサイトへいくと、"KB4601319" に該当する更新プログラムの一覧が表示されます。この中から、自分の環境にあった更新プログラムをダウンロードします。

 

・以下の例では、Windows 10 20H2 の 64bit 版の資源をダウンロードする場合です。

f:id:koreyakono:20210214221041p:plain

 

 

以上です。

 

 

タブで 2つの Frame の切り替えができるようにしようとしたら、Frame が2つ縦に並んでしまった件 (1回目: 失敗)

前回、入力用の Entry とボタンを使ったシンプルな UI を作成しました。今回は、これらをタブで切り替えられるようにしてみようと思いました。

 

koreyakono.hatenadiary.jp

 

 

 

 

f:id:koreyakono:20210210213818p:plain

元になる UI。これをタブで切り替えたいと思ったのですが。

 

 

 

BaseFrame という名の tk.Frame を作成し、notebook.add() すればよいのだと思ったのですが。。。

 

結果は、

 

f:id:koreyakono:20210210220120p:plain

 

 

思ってたのと違う。。。

 

 

タブはあるのだけど、2つの Frame が縦に並んでしまいました。。。

 

 

 

今日はここまでにしよう。。

 

  

・現時点のプログラム。 "Notebookを使ってタブを設定してみる" 行からが今回の追加分です。

import tkinter as tk
import tkinter.ttk as ttk

class BaseFrame(tk.Frame):
def __init__(self, master):
frame_color = "lightskyblue"

# call constructor
super().__init__(master, relief="groove", bd=6)

self.base_frame = tk.Frame(master,
bg=frame_color,
relief="sunken", bd=5)
self.base_frame.grid()

# put label
self.r0c0_label = tk.Label(self.base_frame, font=("system"),
text="path: ", anchor="w", padx=1, width=10)
self.r0c0_label.grid(row=0, column=0, sticky="w")

# put entry
self.r0c0_entry = tk.Entry(self.base_frame, width=50, bd=2, font=("system"))
self.r0c0_entry.grid(row=0, column=0, columnspan=2, padx="60", sticky="w")

self.r1c0_button = tk.Button(self.base_frame, text="put button",
command=lambda obj=self.r0c0_entry:
run_script(obj)
)
self.r1c0_button.grid(row=1, column=0, pady=5, sticky="w")


def run_script(entry=None):
url = entry.get()
print(url)


class MainWindow:
def __init__(self):
self.root = tk.Tk()
self.root.title("GUI")
self.root.attributes("-topmost", True)

# -----------------------------------
# Notebook を使ってタブを設定してみる
# -----------------------------------
notebook = ttk.Notebook(self.root)

notebook.grid(sticky="w")

# tab に表示する frame1 frame2 を生成する
self.frame1 = BaseFrame(master=self.root)

self.frame2 = BaseFrame(master=self.root)

# notebook に追加する
notebook.add(self.frame1, text="tab1")

notebook.add(self.frame2, text="tab2")

# 変更はここまで ------------------------

self.root.mainloop()


# start program
MainWindow()


if __name__ == '__main__':
pass

チェックリスト: Azure: Virtual Machine で使用するディスク

Azure 試験(AZ-104)学習についてのチェックリストです。 

 

 

 

以下のページの復習用。

docs.microsoft.com

 

Disk Roles

Q1. 仮想マシンに使用されるディスクには、3つの種類があります。その 3つとは ?

OSディスク、データディスク、一時ディスクです。

1. OSディスク (OS disk)
OS が格納されるディスクです。
仮想マシンを作成する時に、仮想マシンイメージと使用する OSディスクを選択します。OSディスクの最大容量は 2,048 GB です。

2. データ ディスク (Data disk)
データを格納するためのディスクです。必要に応じて複数作成することができます。データディスクの最大容量は 32,767 GB です。

 

3. 一時ディスク (Temporary disk)
一時ディスクは、仮想マシンに 1つ作成されます。
ページファイルやスワップファイルなどのために一時時領域として使用されます。
一時ディスクの内容はメンテナンスイベント時に失われます。


これらのディスクはサーバーに対してローカルであり、ストレージアカウントには格納されません。

 

# 要調査: サーバに対してローカルというところの意味が分からない。

 

Q2. OS ディスクとデータディスクは、どうやって管理するのか ?

 OS ディスクとデータ ディスクは、Azure portal仮想マシンの [ディスク] ページで管理できます

 

マネージドディスクとアンマネージドディスク

Q3. マネージドディスクとは、どんなものですか ? 

1. 現時点で、Azure の仮想マシンで一般的に使用されるディスクが、マネージドディスクです。


2. 物理的なインフラ設定が Azure で行われるため、簡単に使用できます。
例えば、ストレージアカウント、BLOBコンテナ、ページBLOB の作成や維持を管理者が行う必要がありません。

 

 Q4. マネージドディスク使うと、どのような良いことがありますか ?  (6つ)

1. 簡単なスケーラビリティ
サブスクリプションの各リージョンで、各種類のマネージドディスクを最大 50,000 個まで作成できます。


2. 高可用性
マネージドディスクでは、データを 3回格納することで、99.999% の可用性を実現します。1つのレプリカで障害が発生した場合でも、他の 2つレプリカへの読み取り、書き込みが可能です。

 

3. 可用性セットおよび可用性ゾーンとの統合
仮想マシンを可用性セットに配置した場合、それらのマシンのマネージドディスクは Azure によって障害ドメインに自動的に分散され、局所的な障害に対する回復性がマシンに備わるようになります。

可用性ゾーンを使用することもでき、データが複数のデータセンターに分散されるので、可用性がさらに高くなります。

# 要調査: 可用性セット、可用性ゾーンのそれぞれの意味

 

4. Azure Backup のサポート
Azure Backup は、暗号化されたディスクを含むマネージド ディスクをネイティブでサポートします。

 

5. 詳細なアクセス制御
Azure のロールベースのアクセス制御 (RBAC) を使用して、マネージド ディスクでの特定の操作に対するアクセスを、特定のユーザー アカウントに許可することができます。 たとえば、確実に管理者のみがディスクを削除できるようにすることができます。

 

6. 暗号化のサポート
マネージド ディスク上の機密データを不正アクセスから保護するために、Azure ストレージ アカウントで提供されている Azure Storage Service Encryption (SSE) を使用して、データを暗号化することができます。 または、Windows 仮想マシンで用の BitLocker を使用する Azure Disk Encryption (ADE) や、Linux 仮想マシン用の DM-Crypt を使用することもできます。

 

Q5. アンマネージドディスクとは、どのようなディスクですか ?

1. アンマネージド ディスクも、Azure ストレージアカウントにページ BLOB として格納されます。


2. アンマネージド ディスクの場合、マネージドディスクと異なり、ストレージアカウントの作成と管理を、管理者が手動で行う必要があります。
管理者は、ディスクのスループットの監視と適正化を自分で行う必要があります。


また、マネージド ディスクのような個別ディスクごとではなく、ストレージ アカウント レベルでセキュリティと RBAC のアクセスを管理する必要があります。

 

3. もともと、Azure の仮想ハードディスクはすべてアンマネージドディスクでした。
アンマネージドディスクは、マネージド ディスクが備えるスケーラビリティ機能と管理機能のすべてがサポートされているわけではないので、現在ではあまり利用されることはありません。

Q6. マネージメントディスク、アンマネージメントディスクの有効化設定はどこで行うのか ?

Azure ポータルで、仮想マシンの作成ウィザードの [ディスク] ページの [詳細] セクションで行います。
"マネージドディスクの使用" の項目で "いいえ" を指定すると、アンマネージドディスクになります。

Q7. アンマネージドディスクからマネージドディスクへの変換はどのようにすればよいですか ? (Powershell)

以下のようなコマンドを実行します。
ConvertTo-AzureRmVMManagedDisk -ResourceGroupName <RM> -VMName <VM>

Ehemeral OS disk

Q8エフェメラル OS ディスクとは何か ?

エフェメラル OS ディスクは、ローカル仮想マシン上のデータを保存するための仮想ディスクです。
ephemeral: 一時的な、はかない

 

・特徴
1. 良いところ
1. エフェメラルディスクは、マネージドディスクよりも早く読み取りと書き込みができます。
2. イメージを元のブート状態にリセットするのも高速です。
3. エフェメラルディスクは、ホストに対してローカルに存在するため、ストレージコストは発生せず、無料です。
# 要調査: ホストに対してローカルという意味が分からない。

2. 悪いところ
1. 仮想マシンで障害が発生すると、エフェメラルディスク上のすべてのデータが破損し、仮想マシンを起動できなくなる可能性があります。

Q8エフェメラル OS ディスクは、どのようなシステムに向いているか ?

システム初期化によるデータの消去や通信断絶に影響を受けないシステム。

  1. 複数のコンピュータで構成されるシステムのうちの 1つとして動作していて、自分を初期化しても他のコンピュータが代わりに処理を行ってくれるシステム。
  2. 最新のデータさえ保持しておけばく、データを恒久的に保管しなくてもよいシステム。

e.g. 多層 Web サイトのビジネスロジック、マイクロサービスなど

 

MS Azure 管理者試験について

Azure 管理者の試験にどんなものがあるのかと、調べたところ、

  1. FUNDAMENTALS 認定資格
  2.  ASSOCIATE 認定資格
  3. EXPERT 認定資格

  の3段階があることを知りました。

docs.microsoft.com

  

FUNDAMENTALS 認定資格はオプションという位置づけだそうで、ASSOCIATE 認定資格から取ればよいそうです。

 

それぞれ、取得しなければならない試験について調べました。

1. FUNDAMENTALS 認定資格: Microsoft Certified: Azure Fundamentals

  • 試験 AZ-900: Microsoft Azure Fundamentals 

2. ASSOCIATE 認定資格: Microsoft Certified: Azure Administrator Associate

  • 試験 AZ-104: Microsoft Azure Administrator    (21,103 円)

     URL:  Microsoft Certified: Azure Administrator Associate - Learn | Microsoft Docs

3. EXPERT 認定資格: Microsoft Certified: DevOps Engineer Expert

  • 試験 AZ-400: Designing and Implementing Microsoft DevOps Solutions  (21,103 円)

      URL: Microsoft Certified: DevOps Engineer Expert - Learn | Microsoft Docs

 

 

EXPERT 認定資格は、Microsoft Certified: Azure Administrator Associate または、Microsoft Certified: Azure Developer Associate のいずれかをとっていることが前提 になっています。

今回の私の例では、Microsoft Certified: Azure Administrator Associate の取得することになります。

 

試験 2つということで比較的取りやすい構成なのだろうと思います。それにしても、最低で4万円もかかります。高いですよね。仕事じゃなきゃとらないだろうなぁ。

 

気になるフレーズ: 銃を突きつけられても 146通りの対応法がある

There's a gun pointed at our heads.

There's 146 things that we can do.

銃を突きつけられても、146通りの対応がある。

 

Netflix で最近見始めた "SUITS" に出てくる主人公の弁護士ハービー・スペクターの口癖。146 って、外国人にとって言いやすいのだろうか。

 

ピンチでも  "146通りの方法がある" と自分に言ってみると、なんだか、大丈夫そうなきがしてきます。

 

今、シーズン3 なのですが、いつも仲間内で言い合いになってばかりになっていて、ちょっと見てて疲れます。みんな仲良くしてほしいです。

tkinter で Button を押した時に Entry の値を取得する

f:id:koreyakono:20210210213818p:plain

上記のような UI を作り、Button を押したら、tk.Entry に入っている値を取得して関数 run_script を呼び出そうとしました。Button に command = run_script(Entry.get()) としたのですが、tk.Entry の値が run_script  に渡されませんでした。

 

よくよく考えてみると、Button の Command  を run_script(Entry.get()) の形で定義してしまうと、Button の定義時に tk.Entry に入力されていた値で固定されてしまうということに気付きました。

 

Button を押す度に値を取得できるように、command では、run_script() には tk.Entry オブジェクトを渡し、 run_script() の方で tk.Entry.get() を実行させるようにしました。これなら、思ってたとおりに動作します。

 

・修正後

import tkinter as tk

class BaseFrame(tk.Frame):
def __init__(self, master):
frame_color = "lightskyblue"

# call constructor
super().__init__(master, relief="groove", bd=6)

self.base_frame = tk.Frame(master,
bg=frame_color,
relief="sunken", bd=5)
self.base_frame.grid()

# put label
self.r0c0_label = tk.Label(self.base_frame, font=("system"),
text="path: ", anchor="w", padx=1, width=10)
self.r0c0_label.grid(row=0, column=0, sticky="w")

# put entry
self.r0c0_entry = tk.Entry(self.base_frame, width=50, bd=2, font=("system"))
self.r0c0_entry.grid(row=0, column=0, columnspan=2, padx="60", sticky="w")

self.r1c0_button = tk.Button(self.base_frame, text="put button",
command=lambda obj=self.r0c0_entry:
run_script(obj)
)
self.r1c0_button.grid(row=1, column=0, pady=5, sticky="w")


def run_script(entry=None):
url = entry.get()
print(url)


class MainWindow:
def __init__(self):
self.root = tk.Tk()
self.root.title("GUI")
self.root.attributes("-topmost", True)
self.frame = BaseFrame(master=self.root)
self.root.mainloop()


# start program
MainWindow()


if __name__ == '__main__':
pass