PyCharm: インストールと起動

PyCharm のインストールから起動までの手順を記載します。

 

 

1. PyCharm のインストール

インストールは簡単です。

公式サイトからダウンロードしてインストーラを実行すれば完了です。

  

1. PyCharm のダウンロード

公式ホームページにアクセスすると、中央に "ダウンロード" の記載があります。

 https://www.jetbrains.com/ja-jp/pycharm/

 

 真ん中の "ダウンロード" をクリックします。 

f:id:koreyakono:20210224141716p:plain

 

 今回はコミュニティ版をダウンロードしますので、黒色で書かれた "ダウンロード" をクリックします。 任意のフォルダにインストーラをダウンロードします。

f:id:koreyakono:20210224141728p:plain

 

以下の画面では特に何もしなくとも問題ありません。

f:id:koreyakono:20210224141741p:plain

 

 

 

2.  インストーラの実行

ダウンロードしたインストーラをダブルクリックします。

f:id:koreyakono:20210224141805p:plain

 

"Next" をクリックします。

f:id:koreyakono:20210224141807p:plain

 

"Next" をクリックします。

f:id:koreyakono:20210224141810p:plain

 

"Create Desktop Shortcut", "Update PATH variable", "Update context menu" など必要な項目にチェックをいれて、"Next" をクリックします。

f:id:koreyakono:20210224141813p:plain

 

"Install" をクリックすると、インストールが始まります。

f:id:koreyakono:20210224141816p:plain

 

インストールに時間はかかりません。

f:id:koreyakono:20210224141819p:plain

 

 "Finish" を押したら、PCを再起動します。これで完了です。

f:id:koreyakono:20210224141802p:plain

 

 

 

2. PyCharm の起動

 1. デスクトップのショートカットから起動します。

f:id:koreyakono:20210224142045p:plain

 

 2. 始めのプロジェクトを作成するので "New Project" をクリックします。 

f:id:koreyakono:20210224141511p:plain



 3. "Location" にプロジェクトの格納フォルダを指定して、"Create" をクリックします。

f:id:koreyakono:20210224141527p:plain

 

 4. プロジェクトの作成が始まります。 

f:id:koreyakono:20210224141620p:plain

 

5. 以下の画面が表示されれば完了です。

f:id:koreyakono:20210224141641p:plain

 

チェックリスト: Azure Storage のデータ冗長性オプション

今日は Azure の Storage に関する勉強です。

 

docs.microsoft.com

 

 

 


1. ローカル冗長ストレージ (LRS) 

1つのデータセンタ内において、別々のラックに設置されている H/W 間でデータが 3回複製される。データの複製は、3つのレプリカ全てが正常に書き込まれた場合にのみ、正常と判断される。

・どのくらい安全か ?
特定のストレージ、電源ユニットなどで障害が発生してもサービスを継続することができる。
データセンタ単位やリージョン単位の障害には弱い。

 

2. geo冗長ストレージ (GRS) 

GRS では、データは 1つのリージョン内で 3回、ペアになっているセカンダリリージョンで 3回コピーされる。

#疑問: GZRS の存在意義を考えると、GRS では、1つのリージョンに限って考えると、LRS と同じなのかもしれない。


・どのくらい安全か ?
プライマリリージョン全体を覆う障害が発生しても、セカンダリリージョンを使用してサービスを継続することができる。

 

3. 読み取り geo冗長ストレージ (RA-GRS: Read-access geo-redundant storage)

geo冗長ストレージのセカンダリリージョンからデータを読み取り可能にしたもの。

geo冗長ストレージ構成をとると、プライマリリージョンで障害が発生しない限り、セカンダリリージョンのデータを読み取ることができない。しかし、RA-GRS 構成をとると、セカンダリリージョンからデータの読み取りを行うことができるようになる。

# 詳細不明


4. ゾーン冗長ストレージ (ZRS) 

プライマリリージョンの 3つの Azure 可用性ゾーン間でデータを同期的にコピーする。書き込み操作が 3つの可用性ゾーンのレプリカ全てに書き込まれた場合にのみ、正常と判断される。

・どのくらい安全か ?
LRS と同様に特定の電源ユニット、ストレージなどで発生した障害には強い。
データセンタ単位の障害に対しても対応できる。
リージョン全体を巻き込む災害があった場合には守れない。

 

5. geoゾーン冗長ストレージ (GZRS) 

ZRS(ゾーン冗長ストレージ) と GRS(geo冗長ストレージ) の利点を組み合わせたもの。
データが1つのリージョン内の 3つの可用性ゾーン全体にコピーされる。かつ、セカンダリリージョンにも 3回複製が行われる。

対応リージョンは以下の通りである。
東南アジア
北ヨーロッパ
西ヨーロッパ
東日本
英国南部
米国中部
米国東部
米国東部2


6. 読み取りアクセス geoゾーン冗長ストレージ (RA-GZRS)

セカンダリリージョンへの読み取りアクセスを可能にした GZRS。

 対応リージョンは以下の通りである。
東南アジア
北ヨーロッパ
西ヨーロッパ
東日本
英国南部
米国中部
米国東部
米国東部2

 

他の用語

Paired regions

GRS やGZRS のレプリケーションでは、リージョン単位での停止を回避するために、1つの Azureリージョンは別のリージョンとペアになっている。これを Paired regions と呼ぶ。

 

可用性ゾーン

リージョン内に存在する冗長性を管理する単位。それぞれの可用性ゾーンは、独立した電源、冷却手段、ネットワークを備えている。各リージョン内には、少なくとも 3つの可用性ゾーンが存在する。

 

MS 365 Apps クライアントのインストール手順

MS 365 Apps (旧 O365) クライアントのインストール手順をまとめました。

今回の手順では、マイクロソフトのサイトからローカルに資源をダウンロードすることで、オフラインでのインストールができるようにします。

 

 

 今回の手順はマイクロソフトの以下のサイトを参考にしています。

docs.microsoft.com

 

 

手順1. Office 展開ツールのダウンロードと展開

1.1. Office 展開ツールのダウンロード

MS365Apps のインストール資源のダウンロードには、Office 展開ツール (ODT: Office Deployment Tool)  を使用します。

以下のサイトへアクセスし、ODTをダウンロードします。

www.microsoft.com

 

1.2. Office 展開ツールの展開

ダウンロードした資源を任意のフォルダに展開します。

1.  ダウンロードした  "officedeploymenttool_xxxxx-xxxxx.exe"  をダブルクリックします。

f:id:koreyakono:20220310005447p:plain

 

 

2.  左下、"Click here to accept the Microsoft Software License Tearms." にチェックを入れ、"Continue" をクリックします。

f:id:koreyakono:20220310005510p:plain

 

3. 資源を展開するフォルダを選択します。

 

4.  以下の画面が表示されたら "OK" を押します。

f:id:koreyakono:20220310005633p:plain

 

5. 上記手順の結果、ODT の資源フォルダは、以下のような状態となります。

tmp> ls
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/01/25 4:52 1164 configuration-Office2019Enterprise.xml
-a---- 2021/01/25 4:52 1014 configuration-Office365-x64.xml
-a---- 2021/01/25 4:52 1014 configuration-Office365-x86.xml
-a---- 2021/01/25 4:52 6391608 setup.exe
tmp>

 

手順2. Office展開ツールの設定ファイルを作成する

次に、Office 展開ツールで使用する設定ファイルを作成します。 

1.  以下のサイトへアクセスします。

https://config.office.com

 

2.  "新しい構成を作成" で "作成" (赤枠部分) をクリックします。

f:id:koreyakono:20220310005847p:plain



3. 必要な情報を入力します。

3.1. インストールする Office スイートを選択します。

f:id:koreyakono:20220310005950p:plain



 

3.2. 更新プログラムチャネルとバージョンを選択します。デフォルトで良ければ、選択をしなくても問題ありません。

f:id:koreyakono:20220310010052p:plain



 

3.3. "アプリ" の項目でインストール対象するソフトウェアを選択します

f:id:koreyakono:20220310010359p:plain

 

3.4. "言語" の項目の "主言語を選択" で主言語を選択します。ここでは、"日本語(日本)" を選択しました。その後、右上の "エクスポート" を押します。

f:id:koreyakono:20220310010518p:plain

 

3.5. 以下の画面で "OK" を押します。

f:id:koreyakono:20220310010643p:plain

 

 

3.6. 使用許諾にチェックをいれ、"ファイル名" に生成する任意のファイル名を指定します。この例では、"MS365Apps" です。そして、"エクスポート" をクリックします。

f:id:koreyakono:20220310010742p:plain



 

3.7. 生成された設定ファイル (MS365Apps.xml) を、"手順1" で展開した ODT(Office 展開ツール) の資源フォルダに格納します。

 

 

手順3. MS365Apps のインストール資源のダウンロード

1.  コマンドプロンプト(powershell) を起動し、手順1 で展開した ODT の資源フォルダへ移動します。

 

2.  資源の状態は、以下の通りです。


tmp> ls
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/01/25 4:52 1164 configuration-Office2019Enterprise.xml
-a---- 2021/01/25 4:52 1014 configuration-Office365-x64.xml
-a---- 2021/01/25 4:52 1014 configuration-Office365-x86.xml
-a---- 2021/02/18 23:45 565 MS365Apps.xml <--- 手順2 で作成した設定ファイル
-a---- 2021/01/25 4:52 6391608 setup.exe
tmp>

 

3. このフォルダで MS365Apps のインストール資源をダウンロードするコマンドを実行します。

tmp> .\setup.exe /download .\MS365Apps.xml
tmp>

※ カレントディレクトリに Office というディレクトリが生成され、そのフォルダに資源がダウンロードされます。資源の容量は 3 GB 程度になります。

 

この資源 (上記例では、tmp フォルダ内の全てのファイルとディレクトリ) を使うことで、MS365Apps のオフラインインストールが可能になります。

 

 

手順4. MS365Apps のオフラインインストール

1. 手順3 で作成した資源を任意のフォルダにコピーします。

2. フォルダの状態はこのような状態です。

tmp> ls
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2021/02/18 23:53 Office <-- 手順3 で生成された資源
-a---- 2021/01/25 4:52 1164 configuration-Office2019Enterprise.xml
-a---- 2021/01/25 4:52 1014 configuration-Office365-x64.xml
-a---- 2021/01/25 4:52 1014 configuration-Office365-x86.xml
-a---- 2021/02/18 23:45 565 MS365Apps.xml <-- 手順2 で作成した設定ファイル
-a---- 2021/01/25 4:52 6391608 setup.exe
tmp>

3.  MS365Apps のインストールコマンドを実行します。

 上記フォルダ内で以下のコマンドを実行します。

tmp> .\setup.exe /Configure .\MS365Apps.xml

 

タブで 2つの Frame の切り替えができるようにしようとしたら、Frame が2つ縦に並んでしまった件 (2回目: 構成をシンプルにしてみる)

前回、notebook を使って 2つのタブを作り、Frame を切り替えられるようにしようとしたら、タブが2つ並ぶという失敗をしました。

 

koreyakono.hatenadiary.jp

 

 

今回は、まずはタブの作り方の基本を知ろうと、自作の class を使うのをやめて、シンプルに tk.Frame を呼び出してみました。

 

 

結果は。。。

 

できました。

 

タブを切り替えると、

f:id:koreyakono:20210210224823p:plain    

 

ちゃんと関連するボタンが表示されます。

f:id:koreyakono:20210210224837p:plain

 

 

 

・現時点のコード

MainWindow で tk.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")

return self


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, height="100")
notebook.grid(row=0, column=0, sticky="w")


# 変更: BaseFrame を使わずに、シンプルに tk.Frame Notebook へ追加する

# 以下は使わないことにするのでコメントアウト
# self.frame1 = BaseFrame(master=self.root)
# self.frame2 = BaseFrame(master=self.root)

# tk.Frame をシンプルに呼び出してみる
self.frame1 = tk.Frame(self.root)
# frame1 にボタンをつけてみる
tk.Button(self.frame1, text="button 1").grid()

# tk.Frame をシンプルに呼び出してみる
self.frame2 = tk.Frame(self.root)
# frame2 にボタンをつけてみる
tk.Button(self.frame2, text="button 2").grid()

print(f"frame = {type(self.frame1)}")
print(f"frame = {type(self.frame2)}")

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

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

self.root.mainloop()


# start program
MainWindow()


if __name__ == '__main__':
pass

 

 

つまりは、クラスの使い方に誤りがあるらしいです。

今日はここまで。

 

PowerShell: プロセスを再起動するスクリプト

ある日リモートデスクトップをしていたら、急にリモートデスクトップ越しのファイルコピーができなくなりました。調べてみると、rdpclip.exe の再起動で事象が解消することがあるそうです。実際に試してみると、確かに rdpclip.exe の再起動後、正常になりました。 

始めはタスクマネージャから rdpclip.exe の再起動をしていたのですが、なんだか、最近は、1週間に 1回は起こっているように感じられるので、スクリプトを作成してみました。

 

工夫したところは、他のプロセスの再起動もできるように、スクリプトの引数にプロセス名を受けられるようにしたことです。引数なしで実行すると、デフォルト値として $process_name に指定されている rdpclip.exe を再起動します。

 

注意点は、引数に渡されたプロセス名を -match で部分一致させている点です。他のプロセス名の一部分に含まれる文字列を指定すると、予期せぬプロセスを停止してしまうことがありえます。

param(
[String]$process_name="rdpclip.exe"
)

Get-WmiObject Win32_Process | ?{$_.CommandLine -match $process_name} | %{
Stop-Process $_.Handle
Start-Process $_.Path
Write-Output($_.Path)
}

 

 

チェックリスト: ワークロードに適したディスクの種類を選択する

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

 

docs.microsoft.com

 

 

 

Q1. Premium SSD で最も高いパフォーマンスを出すディスクサイズと、そのディスクサイズ、IOPS、スループットを答えなさい。

ディスクサイズ名称: P4
ディスクサイズ: 32GiB
IOPS: 120
スループット: 25 MBps

Q2. Premium SSD で最も低いパフォーマンスを出すディスクサイズと、そのディスクサイズ、IOPS、スループットを答えなさい。

ディスクサイズ名称: P80
ディスクサイズ: 32TiB
IOPS: 20,000
スループット: 900 MBps

 
Q3. Ultra SSD で最も高いパフォーマンスを出すディスクサイズ名と、そのディスクサイズ、IOPS、スループットを答えなさい。

最大サイズ: 1,024 以上
IOPS: 160,000
スループット: 20,000 MBps

 

Q4. Ultra SSD の制限を 3つ答えなさい。

1. Azureリージョンのサブセットでのみ利用可能です。 (#要調査: 意味が分からない)
2. 仮想マシンイメージをサポートしません。

3. Ultra SSD がアタッチできるのは、可用性ゾーン内の仮想マシンのみです。

## 要調査: 可用性ゾーン: インフラストラクチャの冗長オプションの1つらしい。

 

 

チェックリスト: 仮想マシンで使用されるディスクの種類

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

 

docs.microsoft.com

 

Q1. ディスクパフォーマンスを判断するための 2つの基準とは何でしょうか ?

1. IOPS
Input/Output Per Second。 1秒あたりの入出力操作数です。
2. スループット
スループットは、単位時間あたりのデータの転送率を表します。メガバイト/秒 (MBps) などの単位で表されます。


Q2. Azure で使用できるディスクの種類を 4つ挙げてください。

1. Ultra SSD
2. Premium SSD
3. Standard SSD
4. Standard HDD

 

Q3. Azure で利用可能な 4種類のディスクには、それぞれどんな特徴がありますか ? 

1. Ultra SSD
Azure のディスクの中で最高の性能を持ちます。4GB から 64TB の容量をサポートします。

Ultra SSD 固有の機能として IOPSやスループットの値をホスト仮想マシンから切り離すことなしに調整ができます。パフォーマンスが反映されるには、最大で 1時間かかります。

高パフォーマンスが必要な大規模データベースや SAP HANA などで使用されます。

 

・制限事項

  1. Azureリージョンのサブセットでのみ利用可能です。 (#要調査: 意味が分からない)
  2. アタッチできるのは、可用性ゾーン内の仮想マシンのみです。
  3. ES/DS v3 仮想マシンにのみアタッチできます。 (#要調査: 意味が分からない)
  4. ディスクスナップショット、仮想マシンイメージ、スケールセット、Azure Disk Encryption、Azure Backup、Azure Site Recovery はサポートされません。


2. Premium SSD
Ultra SSD に次ぐ性能を持ちます。また、Ultra SSD のような制限がありません。
一方、Ultra SSD で可能であった仮想マシンからデタッチせずにパフォーマンスを調整することはできません。
Premium SSD への切り替えは、いつでも可能です。
Standard SSD とは異なり、Premium SSD ではパフォーマンスについて保証されています。
中規模から大規模な組織におけるミッションクリティカルなシステムに適しています。


3. Standard SSD
Premium SSD や Ultra SSD ほど高速ではありませんが、 コストパフォーマンスの高いディスクです。
ストレージ性能については、保証がされていませんが、99% の時間で想定されているパフォーマンスを達成します。
ディスクの負荷が注中しない Webサーバやアプリケーションサーバなどに利用します。

4. Standard HDD
速度は低速ですが、コストを最小限に抑えることができます。
負荷の低いシステムや開発環境やテスト環境用に向いています。

 

Q4.  25 Mbps のスループットを保証しなければならない場合に選択するのは、どのディスクですか ? 

Premium SSD になります。

Standard SSD や Standard HDD でも 60Mbps の速度を出すことができますが、これは最大値であり、スループットが保証されていないことに注意が必要です。