2020-08-01_hw オンライン プログラミング勉強会

この記事は7分で読めます

このサイトは学部では早稲田で物理を, 修士では東大で数学を専攻し, 今も非アカデミックの立場で数学や物理と向き合っている一市民の奮闘の記録です. 運営者情報および運営理念についてはこちらをご覧ください.

中高の数学の復習から専門的な数学・物理までいろいろな情報を発信しています.
中高数学に関しては自然を再現しよう役に立つ中高数学 中高数学お散歩コース
大学数学に関しては現代数学観光ツアーなどの無料の通信講座があります.
その他にも無料の通信講座はこちらのページにまとまっています.
ご興味のある方はぜひお気軽にご登録ください!


概要

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

自分用メモ

  • 遅延型方程式に対するコメント追加
  • matplotlib のチュートリアルを読もうの会
    • 公式情報に触れる重要性
    • 古い情報が古いと書いてあったりする:たとえば pylab
    • Gallery
      • 見ていて面白い
      • 「どこをいじるとどう変わるか」が視覚的にわかる
      • 公式情報なのできちんとアップデートしてくれている(はず)
      • 公式情報にソースがあるので自分でいろいろ書き換えていて破滅したとき、必ずオリジナルを復元できる

Matplotlib

  • とりあえず本当に簡単な図を描く
  • 適当なランダムグラフ
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()
png

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 と一行に出力せよ。

  • 要は素数判定
  • $N$ が素数かどうかを判定するには $\sqrt{N}$ 以下の数までチェックすればいい:素直に $N$ まで見ると大変なことになる。

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

  • 具体的に大きな数でどう振る舞うか見てみよう
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("==============")
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
==============

問題の解法

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 
YES
NO
YES
NO

IT 基礎知識

  • 応用情報の本を一日2ページくらい眺めてみてください。毎日やれば大体 1 年で読み終わります。
    • 次回対応予定:7.4 ネットワーク層のプロトコルと技術

今日の気分

  • 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 はいろいろ変わる
    • 例:スマホ
      • 家の中のネット環境
      • 外で単独で使うとき
      • 適当な Wi-Fi につなぐとき
    • 気分:どのルーターの配下にいるか?
      • ルーターはあとで触れる

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

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

IP 割り当て問題

  • いろいろな切り口がある
  • 1 つの方向性:IP 枯渇問題
  • なぜ IPv4 と IPv6 の 2 つがあるのか?
    • IPv4 では足りなくなったから
    • IPv6 で方式ごと変えて増やした
    • IoT 端末にも IP を振りたい:冷蔵庫を外から操作
  • 内向き・外向きのアドレスが出てくる理由も同じ
    • 外向きのアドレスが「真のアドレス」:会社の代表番号
    • 内向きのアドレスは内線番号
    • 内線番号にまでいちいち正規の電話番号を割り当てない
      • そもそも公開したいとさえ思わない
      • 「公開したいとさえ思わない」というのがまさに別の切り口の 1 つ

本の記述を追いかける

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

  • Wikipedia
  • TCP/IP の UDP で使われる
  • Wikipedia の UDP から
    • 参考:ハンドシェイク
    • 「トランスポート層でのそのような処理のオーバーヘッドを削減している」

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

  • オーバーヘッドの問題はいろいろなところで出てくる
  • 参考:「ITの分野では、コンピュータで何らかの処理を行う際に、その処理を行うために必要となる付加的、間接的な処理や手続きのことや、そのために機器やシステムへかかる負荷、余分に費やされる処理時間などのことをオーバーヘッドということが多い。」

P.386 ルーターとは

  • 異なるネットワークを相互に接続するネットワーク機器
  • Wikipedia

通常は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アドレス

  • 8.8.8.8:Google の DNS として有名
  • 127.0.0.1:開発時によく使う。Windows だと「c:/Windows/System32/drivers/etc/hosts」ファイルでドメイン名「localhost」を指定して使うこともある。
  • グローバル IP とローカル IP
    • 最初に触れた問題
    • 外向きにグローバル IP アドレス、内向きにプライベート IP アドレスを使う
    • IP の無駄遣いを防ぐためもある
    • クラス A-C:会社の規模によって使い分ける
    • もちろん A が大企業向け、C が小企業・家庭用という感じ
    • 本でいきなり「192.168.」というアドレスが出てくることがあるが、それはまさにこのプライベートアドレスで話をしている。

P.390 サブネットマスク

  • これは社内セキュリティに使われたりする
  • 参考
    • 会社の部署間でデータの参照を制限する場合
    • パソコンやサーバの台数が多く分割して管理する場合
    • 開発環境と本番環境を分けるなど、環境を切り離す場合
  • ネットワーク設計の話
    • 経営関係の資料を一般社員には見せたくない
    • 経営関係者のネットワークとその他社員の領域を切り分け、経営関係者しかその資料があるところにアクセスできないようにする

P.392 IPv6

  • IP アドレスの枯渇
  • IPv4 でも「特殊なIPアドレス」などグローバル・ローカルを分けたりして枯渇対策はしてきた。
  • 「端末」が世にあふれてきて、アドレスが足りなくなってきた
    • 原理的に「IPアドレスは32けたの2進数」としているので、これ以上増やせない
      • IPはよく「インターネット上の住所」に例えられるが、市町村合併で起きる実際の住所変更のように柔軟に変えられるわけではない
        • 実際の住所にしても行政関係はもちろん、郵便や運送業などのシステムのレベルでは修正や対応が必要
    • 既存の機器・プログラムはこの前提で動いていて、勝手に変えられないし、仮に変えられるとしても膨大な手間になる
    • 新たな仕様を作り、それで世界全体に持っていく
    • 少なくとも既存の欠点はつぶしておく必要があるし、しばらく枯渇しないようにしたい
P.392 IPv6 の特徴

中高の数学の復習から専門的な数学・物理までいろいろな情報を発信しています.
中高数学に関しては自然を再現しよう役に立つ中高数学 中高数学お散歩コース
大学数学に関しては現代数学観光ツアーなどの無料の通信講座があります.
その他にも無料の通信講座はこちらのページにまとまっています.
ご興味のある方はぜひお気軽にご登録ください!

  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

このサイトについて

数学・物理の情報を中心にアカデミックな話題を発信しています。詳しいプロフィールはこちらから。通信講座を中心に数学や物理を独学しやすい環境づくりを目指して日々活動しています。
  • このエントリーをはてなブックマークに追加
  • LINEで送る

YouTube チャンネル登録

講義など動画を使った形式の方が良いコンテンツは動画にしています。ぜひチャンネル登録を!

メルマガ登録

メルマガ登録ページからご登録ください。 数学・物理の専門的な情報と大学受験向けのメルマガの 2 種類があります。

役に立つ・面白い記事があればクリックを!

記事の編集ページから「おすすめ記事」を複数選択してください。