2020-08-01 課題

メモ:先に進む前に録画してあるか確認しよう

自分用メモ

Matplotlib

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import numpy as np
import matplotlib.pyplot as plt

y = np.random.rand(100)
x = np.linspace(1, 5, 101)

plt.plot(x, y,label="random data")
plt.xlabel("time series")
plt.ylabel("power")
plt.title("sample graph")

plt.grid()
plt.legend()
#plt.axes().set_aspect('equal', 'datalim') # アスペクト比を合わせる
plt.show()

TeX の記録

\begin{align} \dot{p} &= F, \ \frac{dp}{dt} &= F, \ m\ddot{x} &= F, \ m \frac{d^2 x}{dt^2} &= F. \end{align}

競プロ、AtCoder

素数判定A - 素数、コンテスト、素数

ARC N に出場できるとき、すなわち N が素数のときは YES、そうでないときは NO と一行に出力せよ。

ルートに対するオーダーの感覚

1
2
3
4
5
6
import math
lst = [1, 10**3, 10**8, 10**15, 10**30, 10**50]
for n in lst:
    print(f"n      = {n}")
    print(f"sqrt n = {math.ceil(math.sqrt(n))}")
    print("==============")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
n      = 1
sqrt n = 1
==============
n      = 1000
sqrt n = 32
==============
n      = 100000000
sqrt n = 10000
==============
n      = 1000000000000000
sqrt n = 31622777
==============
n      = 1000000000000000000000000000000
sqrt n = 1000000000000000
==============
n      = 100000000000000000000000000000000000000000000000000
sqrt n = 10000000000000000905969664
==============

問題の解法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import math

def is_prime(n):
    if n == 1: return False
    for k in range(2, int(math.sqrt(n)) + 1):
        if n % k == 0:
            return False
    return True

def solve(n):
    return "YES" if is_prime(n) else "NO"

print(solve(17)) # YES
print(solve(18)) # NO
print(solve(999983)) # YES
print(solve(672263)) # NO, 547, 1229
1
2
3
4
YES
NO
YES
NO

IT 基礎知識

今日の気分

  • What is your address?
  • 173.168.16.11
  • No, you local address
  • 127.0.0.1
  • I mean you physical address
  • 28:05:FF:58:31:05

復習:OSI基本参照モデル

ある端末が持つ・割り当てられる IP

外向き IP(グローバルアドレス)と内向き IP(ローカルアドレス)

MACアドレスは、LANカード、ルータ、ハブなどのネットワーク機器に割り当てられます。実際にデータ通信を行う際、最終的にはパソコンなどのコンピュータ同士、つまりIPアドレス間のやり取りになりますが、行き来するデータは途中でルータやハブなどの機器を経由しています。機器から機器へのデータ移動の際に、MACアドレスによって、次のデータの引き渡し先を判別するという仕組みです。

IP 割り当て問題

本の記述を追いかける

P.386 コネクションレス型通信である

通信中のパケット紛失や重複、改竄の検出やそのための対応が必要な場合はアプリケーションで行う。それによってトランスポート層でのそのような処理のオーバーヘッドを削減している。リアルタイム・システムでは遅れているパケットを待つよりもそういうパケットはないものとして処理する方が好ましいため、適時性を重視するアプリケーションでよく使われている[1]。トランスポート層での誤り検出機能が必須なら、その用途に設計された Transmission Control Protocol (TCP) または Stream Control Transmission Protocol (SCTP) を使えばよい。

P.386 ルーターとは

通常はOSI基本参照モデルでの第1層(物理層)から第3層(ネットワーク層)までの接続を担う。一般的に用いられるルーターは、基本機能として各ネットワーク間でのIPパケット(第3層)をやり取りできるようにする装置であるが、実際は基本に加えてさまざまな付加機能を実現している。

ハードウェアとしてのルーターは、おおまかに通信事業者 (ISP) 向けのコアルーターと企業向けのエッジルーター、コンシューマー向けのブロードバンドルーターに分けられる。

ルーターというのは「会社の電話の内線と外線の交換機」にそっくりです。最初からそう説明すればよかったですね。

あなたが iPad のサファリを開き、キーワード「NETAGE のWiFi レンタルは国内最安?」を Google で検索すると、iPad は WiFi 経由で WiFi ルーターに接続されます。そして WiFi ルーターは LTE(3G や 4G でもいいですけど)で近くの基地局と接続し、その先のインターネットに接続します。 LAN につながった iPad から WiFi 経由でWiFi ルーターにリクエストが送信されたのです。その後、WiFi ルーターから近所のアンテナ基地局へ、そこから更にインターネットを経由して Google サーバにリクエストが届きます。

このようなネットワーク接続状態のとき、WiFi ルーターのこっち側を LAN(ローカルエリアネットワーク)、向こう側を WAN(ワイドエリアネットワーク)と呼びます。(必ずしも正確ではないですが、シンプルに考え、)WAN はインターネット、LAN は WiFi、とすれば分かりやすいと思います。

P.386 (IP)ヘッダ

P.389 特殊なIPアドレス

P.390 サブネットマスク

P.392 IPv6

P.392 IPv6 の特徴