本『暗号解読』(サイモン・シン)の感想

暗号解読(上) (新潮文庫)

暗号解読(上) (新潮文庫)

面白かった。 「暗号の歴史」が知れる本。
そもそもは暗号というのは、バレてはいけない内容の話(急襲とか反乱とか)が漏れ出ないように、重要人物から重要人物への通信(手紙とか)に使う手段だった。

とにかくバレなければ良い、ということなので、最初は手紙、それ自体の存在を隠すという、ステガノグラフィ(隠蔽)も秘密の通信には大事な要素だった。

しかし、次第にバレても絶対読めないよね?の暗号技術がより研究されるようになり、それが戦争の勝利への重要要素になったりと、人類に非常に関わっていくこととなる。

印象的だったのは、今日は当たり前の無線通信が、それが発見された当初はとても画期的であり、例えば、それまでの通信というのは地点間にケーブルを埋設してやっと交信できたのに対して、無線はそういった工事がなく使用できたという歴史の流れ。

すなわち、無線はいち早く、基地と基地、前線と基地が通信でき、これがあるのとないのとでは、戦争に勝てるかどうか決定的な差が生まれる。

しかし無線なので、その通信の存在自体は隠匿できず、したがってその通信内容をいかに秘密にするべきか暗号技術がまたさらに発展し、さらに無線になったことで有線の時よりも通信しやすくなり、通信量が増えたことで人間による暗号化・複合化に限界がきて、暗号機械(エニグマ)が誕生・・・というくだりが読みごたえがあった。

SwiftUI プレビューのデバイスを指定する、複数指定する

コード

import SwiftUI

struct ContentView: View {
  var body: some View {
    VStack {
      Text("Hello")
        .font(Font.custom("AvenirNext-Heavy", size: 100))
    }
    .background(Color.yellow)
  }
  
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
      
      ForEach(["iPhone SE", "iPhone XS Max"], id: \.self) { deviceName in
          ContentView().previewDevice(PreviewDevice(rawValue: deviceName))
      }

    }
}

プレビュー結果

f:id:daisuke-t-jp:20190926174156p:plain:w500

資料

macOS Catalina 10.15 Beta をインストールして Xcode / SwiftUI の Canvas Preview を試す

はじめに

Xcode 11 をインストールして SwiftUI を試した。
SwiftUI のチュートリアルはここにある。

https://developer.apple.com/tutorials/swiftui/creating-and-combining-views

これをみると、コーディングした結果が、リアルタイムでプレビュー確認できる大変便利な形になっているが、実際は私の環境(macOS 10.14.6 Mojave)ではこのプレビューがなかった。


f:id:daisuke-t-jp:20190925072555p:plain:w500

チュートリアルをよくみると、上のようにプレビューを動作させるためには macOS 10.15 Catalina が必要と書かれていた。

ということで、本日時点(2019/9/25)では正式な macOS 10.15 はまだリリースはされていないので、 Beta バージョンをインストールし、SwiftUI のプレビューできるかを試してみる。

ただし、正式な macOS 10.15 がリリースされるのは、近い将来(おそらく 2019/10ごろ)だろうから、Beta に抵抗がある場合、少し待って正式版を使うと良い。

macOS Catalina 10.15 Beta をインストール

https://developer.apple.com/download/

このページに行き


f:id:daisuke-t-jp:20190925071551p:plain:w500

Install Profile ボタンをクリックする。


f:id:daisuke-t-jp:20190925071727p:plain:w500

dmg ファイルがダウンロードされるので、クリックして実行(マウント)する。 dmg 内に pkg があるので、クリックして実行する。


f:id:daisuke-t-jp:20190925071920p:plain:w500

ソフトウェア・アップデートから Catalina Beta をインストールできるようになっているので、インストールする。


f:id:daisuke-t-jp:20190925072218p:plain:w500

インストールが実行される。


f:id:daisuke-t-jp:20190925082708p:plain:w500

macOS 10.15 Catalina が起動される。


f:id:daisuke-t-jp:20190925082816p:plain:w500 f:id:daisuke-t-jp:20190925082803p:plain:w500

Xcode の追加コンポーネントのインストールを要求されるので、インストールする。終わったら Xcode を起動する。


f:id:daisuke-t-jp:20190925085106p:plain:w500

エディタの右上のオプションをクリックする。


f:id:daisuke-t-jp:20190925085145p:plain:w500

オプションのメニューの Canvas を選択すると、プレビューが起動する。


f:id:daisuke-t-jp:20190925090848g:plain:w500

こういった感じでコード変更がライブプレビューされるので、目的は達成できた。

OpenWeather から気象情報を取得する

OpenWeather
https://openweathermap.org/

はじめに

  • OpenWeather の API を調査し、気象データの取得をテストする
  • 2019/9/24(JST)の情報であることに注意

OpenWeather とは

  • 2014年に設立されたビッグデータ、データ処理、衛星画像処理の企業
  • 本社はイギリスにある。アメリカにはオフィスが、ラトビアには開発チームがある

どんな気象 API があるか

https://openweathermap.org/api

おおざっぱに、いくつか API をあげる。これらは無料でも使用可能。

基本的に API のレスポンスは JSON フォーマットで取得できる。さらに一部の API については XML フォーマットのレスポンスも対応している雰囲気。

価格

https://openweathermap.org/price

現在と今後の予測の API は無料でも使用できるが、有料プランもある。ここではプランごとの API 呼び出し回数上限(分ごと)を取り上げる。

プラン 料金(月ごと) API 呼び出し回数上限(1分間)
Free 無料 60 回
Startup 40 US$ 600 回
Developer 180 US$ 3,000 回
Professional 470 US$ 30,000 回
Enterprise 2,000 US$ 200,000 回

API キーを準備する

https://home.openweathermap.org/users/sign_up

  • 上のページからユーザ登録する
    • 「I am 16 years old and over」のチェックボックスがあるので、16歳以上しか登録できないようだ。

f:id:daisuke-t-jp:20190924041802p:plain:w400

  • ログインした状態で HOME (https://home.openweathermap.org/) にアクセスし、「API Keys」タブをクリックすると、 API キーが表示される
  • もしくはユーザ登録時に届くメールにも API キーは書かれている

API をテストする

前提

API リクエスト例

https://api.openweathermap.org/data/2.5/weather?appid=<APIキー>&q=Shinjuku,jp

API レスポンス例

{
   "coord":{
      "lon":139.71,
      "lat":35.7
   },
   "weather":[
      {
         "id":801,
         "main":"Clouds",
         "description":"few clouds",
         "icon":"02n"
      }
   ],
   "base":"stations",
   "main":{
      "temp":297.58,
      "pressure":1008,
      "humidity":65,
      "temp_min":294.82,
      "temp_max":299.82
   },
   "visibility":10000,
   "wind":{
      "speed":4.1,
      "deg":270
   },
   "clouds":{
      "all":20
   },
   "dt":1569268257,
   "sys":{
      "type":1,
      "id":8074,
      "message":0.0101,
      "country":"JP",
      "sunrise":1569270598,
      "sunset":1569314220
   },
   "timezone":32400,
   "id":1850144,
   "name":"Shinjuku",
   "cod":200
}

API 呼び出し回数上限

#!/bin/sh

for i in {0..100}
do
    curl "https://api.openweathermap.org/data/2.5/weather?appid=<API キー>&q=Shinjuku,jp"
done

1分間の API 呼び出し回数制限(60回)を超えた時の動作を試したく、上のシェルを複数に並列で動作させたが、上限を超えた旨を示すレスポンスは確認できなかった。すべて正常にデータを得られた。これについては不明。(2019/9/28 時点)

そのた

  • 気温の単位がデフォルトでケルビンになる。摂氏で取得したい場合は units=metricAPI を呼び出すこと(参照:https://openweathermap.org/current#data
    • https://api.openweathermap.org/data/2.5/weather?appid=<APIキー>&q=Shinjuku,jp&units=metric
  • 都市名ではなく、緯度経度指定したい場合は lat, lon パラメーターを使用する
    • https://api.openweathermap.org/data/2.5/weather?appid=<APIキー>&lat=35.690128&lon=139.701701

本『哲学的な何か、あと数学とか』(飲茶)の感想

哲学的な何か、あと数学とか (二見文庫)

哲学的な何か、あと数学とか (二見文庫)


フェルマーの最終定理

3 以上の自然数 n について

xn + yn = zn

となる自然数 x, y, z は存在しない

マチュアの数学者フェルマーが残したこの定理には当時「証明」がなく、実際にそれが証明されたのは、フェルマーが生きた時代17世紀から300年以上だった20世紀だった。


この本には、フェルマーが残した謎に満ちた、しかし悪魔的に魅力があるこの定理に、数々の数学者が挑戦してきた歴史が書かれている。

そこには、人間の情熱だったり、苦しさからくる挫折だったり、環境の問題(性差別、貧困)によるどうしようもない不幸だったりがある。ひとことで言うと人間ドラマ。

だから、フェルマーの最終定理ってどんな感じで解決したの? と数学に興味があり手にとったが、読んでいて、その人間ドラマとしての部分も楽しめた。

ちなみに、この本の序盤の部分は、作者のサイト フェルマーの最終定理 - 哲学的な何か、あと科学とか に公開されているので、どんな感じの本かはここで確認して、この先が読みたければ、実際に本を読んでもいい感じ。

Docker ディスクイメージのファイルサイズを変更する

環境

  • Docker Desktop Community for Mac : Version 2.1.0.3(38240)

手順

!この手順を行うと、今あるすべてのイメージ / コンテナが失われることに注意!


  • メニューから Preferences を選び、 Preferences のウインドウの中から Disk タブを選択する

f:id:daisuke-t-jp:20190921221326p:plain:w500

  • この画面の Disk image locationReveal in Finder ボタンをクリックすると実際のディスクイメージのファイルを Finder で閲覧できる(Docker.raw
    • f:id:daisuke-t-jp:20190921221331p:plain:w500
    • Finder でみるとこんな感じ
  • スライダーを移動させると任意のサイズを指定できるので、指定して Apply ボタンをクリックすると、ディスクイメージサイズを変更できる(今回は 16 GB に変更した)

f:id:daisuke-t-jp:20190921221335p:plain:w500

  • 警告のウインドウが表示される。すべてのイメージとコンテナが消されることが書かれている。問題ないならば、 Resize ボタンをクリックする

f:id:daisuke-t-jp:20190921221338p:plain:w500

  • Resize すると Docker が再起動中になり、一番下のステータスが Docker Desktop is starting に変わる

f:id:daisuke-t-jp:20190921221343p:plain:w500

  • さらに待つとステータスが Docker Desktop is running になる

f:id:daisuke-t-jp:20190921221346p:plain:w500

  • あらためて Finder でディスクイメージをみるとファイルサイズが変更されることが確認できる

資料