2019年07月12日

続・Mac の更新を検討中

 先日の「Mac の更新を検討中」から、ぐずぐずしている間に MacBook Pro が全モデルアップデートされてしまいました。なんとまあ。

MacBook Pro (2017)
Touch Bar なし
MacBook Pro (2018)
Touch Bar あり
MacBook Pro (2019)
Touch Bar あり
MacBook Pro (2019)
Touch Bar あり
画面解像度 2560x1600 2560x1600 2560x1600 2560x1600
CPU 第7世代
2.3GHzデュアル
Intel Core i5
第8世代
2.3GHzクアッド
Intel Core i5
第8世代
1.4GHzデュアル
Intel Core i5
第8世代
2.4GHzクアッド
Intel Core i5
メモリ 2,133MHz LPDDR3 2,133MHz LPDDR3 2,133MHz LPDDR3 2,133MHz LPDDR3
グラフィック Intel Iris Plus Graphics 640 Intel Iris Plus Graphics 655 Intel Iris Plus Graphics 645 Intel Iris Plus Graphics 655
ポート Thunderbolt3 x2 Thunderbolt3 x4 Thunderbolt3 x2 Thunderbolt3 x4
税込価格 225,504円 262,224円 220,104円 ***,***円

Apple Store が混んでいるのか、2.4GHz のカスタマイズ価格を調べようと思ったのに全然つながらん…

 上位機種とはクロックが大きく違うわけだけど、このあたりがどうなんだろうか。こちらの記事「MacBook Pro(2019)13インチエントリーモデルは予想以上の性能!新旧モデルのベンチマークや大幅高速となった動画処理などパフォーマンス比較」によると、ベンチマークの数字だとシングルコアで 7%、マルチコアで 11% 程度上位機種が速い、という結果が出ている。その程度の差なら、別にエントリーモデルでも十分か。むやみに性能が高いと、発熱もすごいしな。これで決まりかな。

タグ:Mac
posted by toshinagata at 23:32| 日記

2019年07月07日

クラシック音楽館:平尾貴四男、矢代秋雄

 クラシック音楽館で邦人作品を取り上げていたので、見ました。平尾貴四男の「砧」と、矢代秋雄のピアノ協奏曲。指揮は山田和樹。

 「砧」は曲の存在は知ってたけど、聴いたのは初めて。戦時中 (1942) に書かれたというのが意外なぐらい、洗練された印象を受けた。

 矢代秋雄の協奏曲は、河村尚子の独奏。この人の演奏は初めて聴いたのだけど、なんかすごく力の入った感じの、独特のスタイルで演奏する人ですね。第一・三楽章で出てくるカデンツァ風の部分、音が重い。もっと歯切れよく叩きつける様に弾くところだと思っていたので、新鮮だった。

20190707-1.png

 一番感銘を受けたのは第一楽章の第二主題のところで、和音の一つ一つにそれぞれ表情がある。ぞくぞくする。

20190707-2.png

 第二楽章と第三楽章は、なんかもうちょっとタメがあってもいいような気がした。次々と楽想が溢れ出てくる感じで、それはそれでいいのかもしれないけど、聴いてる方が忙しいんだよね。そういう曲だ、と言ってしまえばそれまでなんだけど。

タグ:音楽
posted by toshinagata at 23:28| 日記

2019年06月27日

ラズパイ4、Raspbian Buster

 しばらくラズパイの情報から離れてたんですが、久しぶりにチェックしたら、こんなお話が。

 ラズパイ4が発表されたそうです。また、Raspbian の新しいバージョンも。

 チェックせなあかんな、と思いつつ、時間がとれん…7月末ぐらいまでは我慢かな。

タグ:Raspberry Pi
posted by toshinagata at 22:52| 日記

2019年06月08日

ヘリウムが足りない:リニア新幹線大丈夫?

 ヘリウム不足、しばらく話題になっていなかったけど、また注目されているようです。

 私は自分では直接液体ヘリウムを使ったことはないのだけど、装置のメンテナンスのために使ったことはあって、一応取り扱いに必要な知識は持っている。実は長いこと「ヘリウム回収配管」がある機関に所属していたので、ヘリウムって回収して再利用するのが当たり前だとなんとなく思っていた。でも、よく考えてみたらそんなわけないよな。回収するところまではなんとかなっても、ヘリウムの液化装置なんて維持がめちゃくちゃ大変だから、コストを考えると原則使い捨てにするのがむしろ当然だ。

 今になって騒がれているのは、米国が 2021 年で国外へのヘリウム販売を終了するからだそうです。これ、大変なことですよ。病院の MRI どうするんだ。

 それで、上記の日刊工業新聞の記事には一言も書かれてないけど、リニア中央新幹線どうするんだよ。営業運転には液体ヘリウムが継続的に必要だよね? といっても、必要な液体ヘリウムの量を試算したデータがなかなか見つからない。具体的な数字を出している数少ない例が、下のブログ記事。

ヘリウムが無いとリニア新幹線は走れない!

 2015年7月2日の参議院内閣委員会で山本太郎氏が質問した内容の一部を文字起こししたもののようです。「山本太郎」という名前で脊髄反射的に拒絶する人がたくさん出てきそうだけど(私も好きではないです)、この質疑の内容はよく練られている。この中で、「超電導磁石1組に液体ヘリウム数十リットル」「(山梨実験線で)7両編成の車両で超電導磁石は16個」ということなので、1編成に数百リットルの液体ヘリウムを積んでいることになる。

 走行中に液体ヘリウムは少しずつ蒸発していく。JR 東海は回収再利用するつもりみたいだけど、そうなると蒸発したヘリウムガスを終点に着くまで車両ごとに貯めておかないといけない。液体ヘリウムは気化すると体積が700倍ぐらいになる。蒸発量をざっくり1%ぐらいだとすると、貯めておくヘリウムガスの量はまあ数千リットルぐらい? 実際には圧縮するだろうから、ボンベ数本分ぐらいにおさまりそう。この程度なら、走行中の蒸発分を回収することは、少なくとも技術的には可能そうだな。(この試算、「蒸発量1%」という数字には何の根拠もないので、真に受けないでください。)

 回収・再液化がちゃんと機能すれば、ヘリウム資源の量についてはなんとかなりそうな気もしてきた。もっとも、それに必要なエネルギーの量を考えると、気が遠くなる。そこまで資源を投入してまで、リニア新幹線って走らせないといけないものなんですかね。「一応始めちゃったから最後まで行こうよ」的なノリでやってるような気がしてならない。今から凍結するなんて言ったら、各方面大ヒンシュクなんだろうな。でも、本当はやめてほしいけどな…

タグ:科学 社会
posted by toshinagata at 08:50| 日記

2019年05月19日

元素周期表150年

 今日の中日新聞サンデー版は、「元素周期表150年」でした。

20190519-1.jpg

 解説は玉尾皓平先生。「人類は今、歴史上最も美しい周期表を手にしています。」で始まるこの気品に満ちた一文、「美しい周期表」にふさわしい美しい解説文だと思います。

20190519-2.jpg

 「人類史上最も美しい周期表」の意味するところは、現在認定されている元素が118番までで、第7周期のちょうど終わりに達しているということ。既知の元素の最大のものが、周期表の1周期の終わりと一致していたことは、今までに一度もなかったことなんですね。

20190519-3.jpg

 超重元素を合成して性質を調べる、という研究は、宇宙の果てを探求する研究に似ている。それは、まだ誰も見たことのない世界にたどりつくための営みだ。超重元素の探索には、二つの意味があると思う。一つは、原子核物理学で予測されている「安定の島」付近で、半減期が数日以上の超重元素の同位体が存在するかもしれない、という推測を実験的に検証すること。もう一つは、このような超重元素について、われわれが現在知っているような化学の原則が成り立つのかどうかを検証すること。

 一つめの点については、今まで合成された原子核はまだ中性子数が足りないので、異常に長い半減期の同位体はまだ実現されていない。二つ目の点については、重い元素は半減期が短く量(原子数!)も足りないので、化学的性質を調べるには至っていない。このことから、超重元素の研究はまだまだ長い道程が待っていることがわかる。

 ただ、複雑な思いを抱く部分もある。「〜の果てを探求する」という研究テーマは、人々のロマンをかきたてるのは確かなのだが、学問が先鋭化するにつれて、「果てを探求する」のに必要な研究のコストはどんどん上がっていく。その一方、「果ての探求」ほどロマンチックに見えないけど、実現すれば波及効果が大きい研究テーマというのもある。研究に投入できる資源に限りがある中で、壮大でロマンチックな研究テーマの重みがあまり大きくなってしまうと、バランスを欠くことがあるかもしれない。この点には、少し気をつけておきたいと思っている。

 玉尾皓平先生は、地味なケイ素化学をずっと研究してこられた方なので、このあたりのバランスはよくわかっていらっしゃるに違いない。そういう意味で、このサンデー版の解説を玉尾先生に依頼した東京新聞は、いい仕事をしたと思います。

タグ:科学 社会
posted by toshinagata at 20:41| 日記

2019年05月13日

Mac の更新を検討中

 今使っている MacBook Late2008 だが、スリープからの復帰時にときどき画面が揺れることがあって、近々寿命が来るかもしれない、と思っている。1台の Mac を10年以上も使ったのはこれが初めてで、そろそろ買い換えてもいいんじゃないか。妻からもそう言われているので、検討を始めた。最近 Mac の製品ラインアップは全然チェックしてないから、どうなってるかよくわからん。

 ノート型は必須なので、MacBook, MacBook Air, MacBook Pro の3種類。できればメインメモリは 16 GB, ストレージは 512 GB 欲しい。CPU や GPU の性能にはあまりこだわらない。

モデル画面サイズメインメモリストレージ
MacBook12インチ最大16GB最大512GB
MacBook Air13.3インチ最大8GB最大512GB
MacBook Air (Retina)13.3インチ最大16GB最大1.5TB
MacBook Pro13.3インチ最大16GB最大2TB

 旧型 MacBook Air はメモリ容量で選択肢から外れた。残りのそれぞれのモデルについて、最低限上記のスペックを満たす構成だと、下のようになった。(調べている途中で、MacBook Pro には世代の違う2モデルがあることに気づいた。)

MacBookMacBook Air (Retina)MacBook Pro (2017)
Touch Bar なし
MacBook Pro (2018)
Touch Bar あり
画面解像度 2304x1440 2560x1600 2560x1600 2560x1600
CPU 第7世代
1.3GHzデュアル
Intel Core i5
第8世代
1.6GHzデュアル
Intel Core i5
第7世代
2.3GHzデュアル
Intel Core i5
第8世代
2.3GHzクアッド
Intel Core i5
メモリ 1,866MHz LPDDR3 2,133MHz LPDDR3 2,133MHz LPDDR3 2,133MHz LPDDR3
グラフィック Intel HD Graphics 615 Intel UHD Graphics 617 Intel Iris Plus Graphics 640 Intel Iris Plus Graphics 655
ポート USB-C x1 Thunderbolt3 x2 Thunderbolt3 x2 Thunderbolt3 x4
税込価格 213,624円 216,864円 225,504円 262,224円

 MacBook Pro (2018) に気づく前は、MacBook Pro (2017) でいいかと思っていたけど、デュアルコアとクアッドコアの違いは大きいので、迷っている。26万円か…手の届かない価格ではないけどな…

(こういう流れになると、普通は上位モデルを買うことになるんだよね…でも、Thunderbolt のアダプタも買わないかんし、VMWare Fusion もアップデートせんといかんし、うーん…)

タグ:Mac
posted by toshinagata at 01:29| 日記

2019年05月08日

風邪引いてました

 元号が変わった日に急に熱が出て、連休後半はぼろぼろだった。発熱→熱が下がって激しい咳→咳が弱まってまた発熱→徐々に回復、という経緯で、週明け3日目(月曜から仕事だった)にしてようやく通常に戻ってきた。

 連休中で医者も休みだろうし、まあ風邪だろうから市販薬で直すか、と、妻に頼んでドラッグストアで薬を調達してきてもらった。

 まずは、総合感冒薬の PL 顆粒。「いろんな症状に効く」、つまり「どれも大して効かない」ということでもあるようだけど、医者に行ってもいつも処方されるので、まあ持っておいた方がいいのかな。

20190508-1.png

 私はすぐに喉をやられて、咳で寝られないことが多いので、咳止めも買ってきてもらった。これでした。って、よく見たらこれも総合感冒薬じゃん。

20190508-2.png

 昔から売られている外用薬も買ってきてもらった。「ヴェポラッブ」なんですね。「プ」じゃないんだ。知らんかった。

20190508-3.png

 咳止めはどちらも役に立ってくれた。とにかく、咳の頻度が減って、多少なりとも眠れるようになるのが大きい。PL 顆粒も効いた気がする。

 私が治りかけた頃、今度は妻が調子を崩して2日、子供たちも順番に半日ぐらい寝込んだ。うつしてしまったらしい。申し訳ない。ちなみに、私はたぶん土曜日に所用で名駅に出かけた時にもらってきたんだと思う。

 そういえば、昔実家で常備していたかぜ薬は、「コデジールA錠」だった。調べてみたら、他の総合感冒薬と同様、主成分はアセトアミノフェンで、咳止めでジヒドロリン酸コデイン、あと漢方の成分が少し入っているみたい。記憶にあるのとビンのラベルが違う。モデルチェンジしたかもしれないな。

20190508-4.png

タグ:生活
posted by toshinagata at 23:01| 日記

2019年04月27日

wxLuaApp で OpenGL やってみた

 球体の表面を色分けした図を描いて GIF アニメーションにする、という案件が発生した。こういうやつです。

20190427-1.gif 20190427-2.gif

 OpenGL を使えばできそう、というのはすぐに思いついたのだが、どう実装するかでしばし悩んだ。最近の流行りで言えば WebGL なんだろうけど、少し調べてみてハードルが高そうと感じた。自分の OpenGL の知識が相当古いところで止まっているのが原因かもしれず、本当はそちらをアップデートするのが正攻法なのだが、今回はとにかく早く結果が欲しい。

 そこで、Molby のコードを流用することにした。さすがに C で書くのはどうかと思ったので、最近のマイブームである wxLuaApp で OpenGL に挑戦。実はこれが結構大変でありまして、WebGL を使ったほうが未来につながったかもと 15% ぐらいは思ったりしている。

sinCache = {}
sinCacheSect = 0
idle_count = 0
phase = 0
mode = 0
cflag = false
modefunc = function () return 1 end

function OnIdle(event, canvas)
  local max_count = 32
  if mode < 9 and idle_count < max_count then
    if idle_count == 0 then
      if mode == 0 then
        modefunc = function (x, y, z) return 1 end
      elseif mode == 1 then
        modefunc = function (x, y, z) return x end
      elseif mode == 2 then
        modefunc = function (x, y, z) return -y end
      elseif mode == 3 then
        modefunc = function (x, y, z) return z end
      elseif mode == 4 then
        modefunc = function (x, y, z) return 2 * z * z - x * x - y * y end
      elseif mode == 5 then
        modefunc = function (x, y, z) return 2 * z * x end
      elseif mode == 6 then
        modefunc = function (x, y, z) return -2 * y * z end
      elseif mode == 7 then
        modefunc = function (x, y, z) return x * x - y * y end
      elseif mode == 8 then
        modefunc = function (x, y, z) return -2 * x * y end
      end
    end
    CaptureCanvas(idle_count, max_count, mode, cflag)
    if cflag then
      idle_count = idle_count + 1
      if idle_count == max_count then
        idle_count = 0
        mode = mode + 1
      end
    end
    cflag = not cflag
  end
end

function ColoredVertex(c, r, x, y, z)
  local rgba
  local y2 = modefunc(x, y, z) * math.cos(phase)
  if y2 >= 0 then
    rgba = {(1 - y2) * 0.8, (1 - y2) * 0.8, 1 - (1 - y2) * 0.2, 1}
  else
    rgba = {1 - (1 + y2) * 0.2, (1 + y2) * 0.8, (1 + y2) * 0.8, 1}
  end
  gl.Material(gl.FRONT_AND_BACK, gl.DIFFUSE, rgba);
  gl.Vertex(r * x + c[1], r * y + c[2], r * z + c[3])
end

function DrawSphere(c, r, sect)
  local m = math.floor(sect / 4)
  local n = m * 4
  if sinCacheSect ~= n then
    sinCacheSect = n
    for i = 1, m * 5 + 2 do
      sinCache[i] = math.sin(math.pi * 2 / n * (i - 1))
    end
  end
  local s = sinCache
  for i = 1, n + 1 do
    gl.Begin(gl.QUAD_STRIP)
    for j = 1, n / 2 do
      gl.Normal(s[j] * s[i + m], s[j] * s[i], s[j + m])
      ColoredVertex(c, r, s[j] * s[i + m], s[j] * s[i], s[j + m])
      gl.Normal(s[j] * s[i + 1 + m], s[j] * s[i + 1], s[j + m])
      ColoredVertex(c, r, s[j] * s[i + 1 + m], s[j] * s[i + 1], s[j + m])
    end
    gl.End()
  end
  gl.Begin(gl.TRIANGLE_FAN)
  gl.Normal(0, 0, 1)
  ColoredVertex(c, r, 0, 0, 1)
  for i = n + 1, 1, -1 do
    gl.Normal(s[2] * s[i + m], s[2] * s[i], s[2 + m])
    ColoredVertex(c, r, s[2] * s[i + m], s[2] * s[i], s[2 + m])
  end
  gl.End()
  gl.Begin(gl.TRIANGLE_FAN)
  gl.Normal(0, 0, -1)
  ColoredVertex(c, r, 0, 0, -1)
  for i = 1, n + 1 do
    gl.Normal(s[2] * s[i + m], s[2] * s[i], -s[2 + m])
    ColoredVertex(c, r, s[2] * s[i + m], s[2] * s[i], -s[2 + m])
  end
  gl.End()
end

function DrawModel()
  gl.MatrixMode(gl.MODELVIEW)
  gl.LoadIdentity()
  gl.Translate(0, 0, -1)
  gl.Rotate(130, 1, 0, 0)
  gl.Rotate(-45, 0, 0, 1)
  gl.Material(gl.FRONT_AND_BACK, gl.DIFFUSE, {1, 0, 1, 1});
  gl.Enable(gl.NORMALIZE)
  DrawSphere({0, 0, 0}, 0.85, 48)
end

function CaptureCanvas(n, m, mode, cflag)
  phase = 3.1415926 * 2 * n / m
  canvas:Refresh()
  canvas:Update()
  if not cflag then return end
  canvas.context:SetCurrent(canvas)
  capture = gl.ReadPixels(0, 0, 120, 120, gl.RGBA)
  data = {}
  alpha = {}
  for i = 1, #capture do
    capture[i] = math.floor(capture[i] * 255 + 0.5)
  end
  local j = 0
  for y = 1, 120 do
    for x = 1, 120 do
      local i = ((120 - y) * 120 + x - 1) * 4 + 1
      local j = (y - 1) * 120 + x
      data[j * 3 + 1] = capture[i]
      data[j * 3 + 2] = capture[i + 1]
      data[j * 3 + 3] = capture[i + 2]
      alpha[j + 1] = capture[i + 3]
    end
  end
  image = wx.wxImage(120, 120)
  datastr = string.fromtable(data)
  alphastr = string.fromtable(alpha)
  image:SetData(datastr)
  image:SetAlpha(alphastr)
  image:SaveFile(string.format("sample%d_%02d.png", mode, n))
end

function OnPaint(event, canvas)
  local dc = wx.wxPaintDC(canvas)
  if not canvas.is_initialized then
    canvas.context = wx.wxGLContext(canvas)
    canvas.context:SetCurrent(canvas)
    sz = canvas:GetClientSize()
    gl.Viewport(0, 0, sz.x, sz.y)
    gl.Enable(gl.DEPTH_TEST)
    gl.Enable(gl.LIGHTING)
    gl.LightModel(gl.LIGHT_MODEL_AMBIENT, {0.8, 0.8, 0.8, 1.0})
    gl.Light(gl.LIGHT0, gl.DIFFUSE, {1, 1, 1, 1})
    gl.Enable(gl.LIGHT0)
    gl.Light(gl.LIGHT1, gl.AMBIENT, {0.4, 0.4, 0.4, 1})
    gl.Enable(gl.LIGHT1)
    gl.Enable(gl.BLEND)
    gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
    canvas.is_initialized = true
  end
  canvas.context:SetCurrent(canvas)
  gl.ClearColor(0, 0, 0, 0)
  gl.Clear(bit.bor(gl.COLOR_BUFFER_BIT, gl.DEPTH_BUFFER_BIT))
  DrawModel()
  gl.Flush()
  canvas:SwapBuffers()
  dc:delete()
end

function main()
  --  フレームを作成
  frame = wx.wxFrame(wx.NULL, wx.wxID_ANY, "", wx.wxPoint(50, 50), wx.wxSize(120, 200))
  frame:SetClientSize(120, 120)
  --  GLCanvas を作成
  canvas = wx.wxGLCanvas(frame, wx.wxID_ANY, {}, wx.wxDefaultPosition, wx.wxSize(120, 120), 0, "GLCanvas")
  canvas.is_initialized = false
  --  イベントを接続
  canvas:Connect(wx.wxEVT_PAINT, function (event) OnPaint(event, canvas) end)
  canvas:Connect(wx.wxEVT_IDLE, function (event) OnIdle(event, canvas) end)
  frame:Show(true)
end

main()
posted by toshinagata at 00:55| 日記

2019年04月14日

ウメとナツミカン

 ウメの花が終わった後、実がたくさんついている。

20190414-1.jpg

20190414-2.jpg

 実を収穫することを目指すのかどうか、ちょっと悩ましいところ。このウメは、実ウメとして植えたものではないので、大した実は成らないような気がする。でも、これだけ実がついていると、落ちるに任せるのもちょっともったいない気もするんだよな。一応実を間引いて、根元に肥料はあげておいた。

 一方、ナツミカンの方は、今のところ葉芽ばかり出てきている。芽吹いてくる前に大きく剪定したので、木が葉を伸ばす方に向いてしまったかも。今年成りすぎたので来年は実は少ない年だけど、ゼロはさびしいな。なんとかこれから少しでも花芽が出てきてくれるといいのだけど。

20190414-3.jpg

タグ:園芸
posted by toshinagata at 15:57| 日記

2019年04月13日

ドラゴンズ3年ぶり貯金

 京田・堂上の満塁本塁打でタイガースに大勝、3年ぶりに貯金だって。

 京田と堂上が同時に出てるってどういうこと?と思ったが、遊撃と二塁なんですね。確か開幕戦は堂上が遊撃で京田はベンチだったよな。調べてみると、固定されているのは一塁のビシエドと三塁の高橋周平だけで、二塁・遊撃は京田・堂上・阿部(・三ツ俣)、外野手は平田・大島・アルモンテ・福田、捕手は加藤・大野をそれぞれ併用している。ドラゴンズは今年から与田監督が指揮を執っている。新しい監督は新戦力を試したがる、というけど、この中で新顔と言えそうなのは加藤匠馬ぐらいだから、結局は昨年までのメンバーがイマイチ伸び悩んでいたということなんだろうな。

 堂上直倫、30歳。愛工大名電〜ドラゴンズ1位指名、父も兄もドラゴンズの選手。やりにくくてしょうがなかっただろう。一昨年から京田の控えに回され、このまま沈んでいくのかと思ったら、今年の開幕はその京田を控えに追いやってスタメン出場。今日の試合など、一番遊撃京田、五番(!)二塁堂上、と、すっかり「両雄並び立つ」趣きとなっている。堂上が活躍したら、古参のドラゴンズファンは嬉しいと思うよ。

 京田陽太、24歳。期待の新人として一昨年から半ば「特別扱い」で抜擢され、昨年も(やや成績を落としたとはいえ)堅実に結果を残したが、昨オフに根尾昂がドラフト1位指名されて、突然雲行きが怪しくなった。冷静に考えれば、大卒で2年間結果を残した選手と高卒の新人選手が横一線で競争できるわけもないのだけど、マスコミ(というか主に中日新聞と中日スポーツ)がとにかく煽るので、まあこちらもやりにくかったことだろう。ただ、もともと真面目で熱心な選手なはずなのだけど、オープン戦終盤で与田監督の評価がえらく下がっていた。まさか堂上に追い抜かれることはないだろう、と高をくくっているようなところが見え隠れしていたのかな。

 野球は基本パ・リーグを見ているのだけど、名古屋に住んでいる以上、ドラゴンズは強いに越したことはないのですよ。一応セ・リーグではドラゴンズファンだしな。うまく選手を伸ばして、いい結果を出して欲しい。

タグ:野球
posted by toshinagata at 23:55| 日記
email.png
Powered by さくらのブログ