日記」カテゴリーアーカイブ

Macの受信メールから自動でリマインダーを作成する

何日までに○○しなさいというメールが届いた!けどほったらかしておいたら期限を過ぎていた!そういう経験、あるよね?

library-mailそこで、そういうメールが届いたら自動でMacの「リマインダー」に登録されるようにしよう!という話。
続きを読む

豊穣圏の教科書

最近、豊穣圏(enriched category)という概念に触れることがあって、それの標準的な教科書って何かなあと思ったら、G.M.Kelly “Basic Concepts of Enriched Category Theory”というのがそれっぽくて、しかも無料でPDFをダウンロードできるらしい。

MacLaneのCWMには豊穣圏の名前といくつかの例は出てくるけどちゃんとした定義は出てこない。まあ、ちゃんとした定義を書こうとするとモノイド圏(monoidal category)の定義をしてうんたらしないといけないようだが。

豊穣圏というのは(今の自分の理解で)大雑把に言うと、圏のhom-setに単なる「集まり」以上の構造が入ったものである。例えば、加群の圏には、それぞれのhom-setにアーベル群の構造が入っているので、アーベル群の圏 Ab でenrichされた圏の例となっている。

別の例を挙げると、各hom-setにゼロ射が入っている圏は、それぞれのhom-setに点つき集合の構造(ゼロ射が基点)が入っているとみなせる。つまり、ゼロ射を持つ圏は、点つき集合の圏 Set* でenrichされた圏と言える。

各hom-setに構造が入っていればいいというものではなくて、Ab-enriched categoryだと射の合成が双線形、Set*-enriched categoryだとゼロ射(hom-setの基点)を合成するとゼロ射、という風に、合成の方にも条件が付いてくる。この辺の条件を表現するのに、モノイド圏の構造が必要になる。

ガンマ関数の計算(Lanczos近似)

ガンマ関数とは、みなさんおなじみの、

  • \(\Gamma(z+1)=z\Gamma(z),\)
  • \(\Gamma(1)=1,\)
  • \(x>0\) に対し \(\log\Gamma(x)\)は凸

を満たす \(\def\Complex{\mathbf{C}}\Complex\) 上の有理型関数である。\(\DeclareMathOperator\Re{Re}\Re z>0\) に対しては、以下の積分表示がある。\[
\Gamma(z)=\int_0^\infty t^{z-1}e^{-t}dt
\]

階乗 \(n!\) との関係は\[
n!=\Gamma(n+1)
\]となる。

重要な公式としては、反転公式\[
\Gamma(1-z)\Gamma(z)=\frac{\pi}{\sin\pi z}
\]がある。特に、\(z=\frac{1}{2}\) とおけば \(\Gamma\left(\frac{1}{2}\right)=\sqrt{\pi}\) が得られる。

さて、コンピューターでガンマ関数の値を数値的に計算するにはどうすればいいのか。指数関数とか三角関数だとかは分かりやすい冪級数表示があったから良かったが、ガンマ関数にはそういうのはないのか。

いろいろググって調べた結果、ガンマ関数の近似方法として、Lanczos近似というのがあるらしい。が、ググっているだけではいまいちその実体が釈然としないし、導出方法もよくわからない。なので、Lanczosの原論文(1964)を読むことにした。大学院生という身分は便利なもので、大学の図書館でその論文にアクセスできた。

続きを読む

Aterm MR03LNを買った

半年前から、外出先でインターネットに接続するためにIIJmioのMVNO回線とPocket WiFiの端末(GL02P)を使っていたが、このGL02Pは2年使った後なので電池が死んでいて、しかも元々イーモバイル用の端末だから、NTTドコモの一部の周波数帯に対応していない。

じゃあ新しいモバイルルーターを買おう!となるのだが、GL02P+モバイルバッテリーでも最低限には使えるし、代わりのモバイルルーター(自分の中で)第一候補のAterm MR03LNの価格が2万3千円ほどするので、なかなか買うタイミングが見つからなかった。

しかし、数日前(24日)にAterm MR03LNの価格を調べたらAmazonでタイムセールをやっていて、1万5千円と安くなっていたので、迷わずポチってしまった。しかもクレードル付き。(OCNモバイルONEのSIMとのセットだが、そっちのSIMは無視するものとする)(この記事を書いている現在は価格は元に戻ってしまったようだ)

Aterm MR03LNの製品情報はAtermMR03LN | 製品一覧 | AtermStationで見られる。自分が重視したポイントは、

  • LTE対応。(今じゃ当たり前か)
  • FOMAプラスエリアや、LTEの800MHz帯にも対応。
  • Bluetoothテザリング(PAN)に対応。(Wi-Fiより低速だが消費電力が低い)(ただ、ネットで評判を見るとそこまで期待してはいけない?)
  • IPv6対応。(IIJmioのSIMと組み合わせるとIPv6でインターネットに繋がる)

あたりか。

以下のアプリを使うと、このモバイルルーターの電波状態・バッテリー残量等を確認できる。

それから、休止状態にしたMR03LNをスマートフォンやタブレットのアプリで「リモート起動」できるようだ。しかし、「MR03LNのリモート起動」と「スマートフォン・タブレットからのWi-Fi/Bluetoothでの接続」が連携する訳ではないので、ないよりマシとはいえ、使い勝手はそこまで良くないか。(「リモート起動」した後、スマートフォン・タブレットでMR03LNに接続するまでの間、アプリからは何も操作できない状態になる)

以下、パッケージの写真。

本体、電池パック、裏蓋とクレードルの他に、ACアダプターとUSBケーブルとLANケーブルが付属するが、これらは手持ちのものを使うつもりなので、多分開封しないだろう。

そろそろ、携帯機器に付属するACアダプターとUSBケーブルが、「プリンターに付属するUSBケーブル」のポジションになっている気がするが、付属をやめる動きはないのだろうか。(Nexus 7を買った時のACアダプターとUSBケーブルも封印したままな気がする)

クレードルに装着。クレードルにはLAN端子があって、MR03LNをルーターとして使えるらしい。本体のUSB端子でパソコンにつなぐとパソコンからはネットワークインターフェースに見えるようだが、クレードルのUSB端子ではそういうのはできないようだ。充電用に「ケーブルを差す」よりは「クレードルに置く」方が楽だ。


Pocket Wifi (GL02P)と並べてみた。

MR03LNの方が縦横が大きいが、薄い。重量はそれほど変わらないが、気持ちMR03LNの方が軽い。

GL02Pにはイーモバイル時代を含めて2年半お世話になったが、これでお役御免だ。

東大入試理系数学2015第5問(解いてみた)

暇だったから[要出典]今年の東大の入試問題数学の問題に目を通してみた。問題文はこのへんこのへんで参照できるようだ。

ツイッターでの評判を見る感じ、第5問と第6問が話題になっていて、第5問は整数問題、第6問は(大学の)解析学で出てくる概念に関係あるみたいな感じだった。第5問のが問題文が短い(問題文が長いと読むのが面倒くさい)のでとりあえず第5問を解いてみる。

続きを読む

Macのストレージを空けた

今使っているMacはMacBook Proの256GBフラッシュストレージモデルで、いくらでもファイルを保存できるという感じではない。購入から1年近く経った今、90%以上の領域を使ってしまっている。そこで、使用頻度の低いファイルを外付けHDDに追い出したり、使わなくなった古いバージョンのソフトウエアを積極的に削除していくということが必要になる。

Haskell Platform

~/Library/Haskell 以下にいろいろ入っている。
$ du -h -d 2 Library/Haskell で調べた感じ、古いGHC 7.6.3が1.3GBほど占めているようだった。なので古いGHCを消す。
手順はMac OS X – HaskellWikiをみた限りでは uninstall-hs コマンドを使えばいいらしい。

$ du -h -d 2 Library/Haskell
144K	Library/Haskell/bin
 26M	Library/Haskell/doc
1.3G	Library/Haskell/ghc-7.6.3/lib
1.3G	Library/Haskell/ghc-7.6.3
3.2G	Library/Haskell/ghc-7.8.3/lib
3.2G	Library/Haskell/ghc-7.8.3
188K	Library/Haskell/logs
203M	Library/Haskell/repo-cache/hackage.haskell.org
156M	Library/Haskell/repo-cache/hdiff.luite.com
359M	Library/Haskell/repo-cache
4.9G	Library/Haskell
$ uninstall-hs -v
-- Versions found on this system

7.6.3
    /Library/Frameworks/GHC.framework/Versions/7.6.3-x86_64
    /Library/Haskell/ghc-7.6.3
    /Users/*/.ghc/x86_64-darwin-7.6.3
    /Users/*/Library/Haskell/ghc-7.6.3

7.8.3
    /Library/Frameworks/GHC.framework/Versions/7.8.3-x86_64
    /Library/Haskell/ghc-7.8.3
    /Library/Haskell/ghc-7.8.3-x86_64
    /Users/*/.ghc/x86_64-darwin-7.8.3
    /Users/*/Library/Haskell/ghc-7.8.3

-- To remove a version and all earlier: uninstall-hs thru VERSION
-- To remove only a single version:     uninstall-hs only VERSION

$ uninstall-hs only 7.6.3
-- Would remove just version 7.6.3
/Library/Frameworks/GHC.framework/Versions/7.6.3-x86_64
/Library/Haskell/ghc-7.6.3
/Users/*/.ghc/x86_64-darwin-7.6.3
/Users/*/Library/Haskell/ghc-7.6.3
/Users/*/Library/Haskell/bin/cpphs@ -> ../ghc-7.6.3/lib/cpphs-1.18.4/bin/cpphs
/usr/bin/ghc-7.6.3@ -> /Library/Frameworks/GHC.framework/Versions/7.6.3-x86_64/usr/bin/ghc-7.6.3
/usr/bin/ghc-pkg-7.6.3@ -> /Library/Frameworks/GHC.framework/Versions/7.6.3-x86_64/usr/bin/ghc-pkg-7.6.3
/usr/bin/ghci-7.6.3@ -> /Library/Frameworks/GHC.framework/Versions/7.6.3-x86_64/usr/bin/ghci-7.6.3
/usr/bin/haddock-ghc-7.6.3@ -> /Library/Frameworks/GHC.framework/Versions/7.6.3-x86_64/usr/bin/haddock-ghc-7.6.3
/usr/bin/runghc-7.6.3@ -> /Library/Frameworks/GHC.framework/Versions/7.6.3-x86_64/usr/bin/runghc-7.6.3
-- To actually remove these files, sudo run the command again with --remove
-- To generate a script to remove these files, run the command again with --script

$ sudo uninstall-hs only --remove 7.6.3
Password:
-- Removing just version 7.6.3

そもそも今インストールされているGHC 7.8.3も最新版じゃないという気がするが。

TeX Live (MacTeX)

古いTeX Live 2013が入っていたので消す。確かMacTeXで入れたような気がするので、このへんを読んでおく。普通に /usr/local/texlive/2013 を消せばいいみたい。

$ du -d 1 -h /usr/local/texlive
4.4G	/usr/local/texlive/2013
4.5G	/usr/local/texlive/2014
4.0K	/usr/local/texlive/texmf-local
8.9G	/usr/local/texlive
$ sudo rm -rf /usr/local/texlive/2013

その他

Homebrewで入っている古いソフトウエアを消したりMacPortsで入っている古いソフトウエアを消したり、Dropboxで同期しているでかくて使用頻度の低いファイルを同期しないようにしたりいろいろ

TeXを勉強したい

LaTeXではない方の)plain TeXを勉強すべしという電波を受信したので、勉強しようと思った。

じゃあ何を読んで勉強しようかという話だが、TeX Wiki内のTeX入門/マクロの作成 – TeX Wikiというページが入門として良さそうだった。

もうちょっとまじめに勉強しようとなると、TeXの本 – TeX Wikiの下の方にある

あたりを読むと良さそう。

学園祭で来場者に複素関数を教えた話

11月22日から24日にかけて行われた東京大学駒場キャンパスでの第65回駒場祭で、数学科有志による「ますらぼ」企画(@UTmathlabo)に参加していました。「ますらぼ」では、数学科生・院生による発表、我々で作った冊子の配布、それから数学に関する展示が行われていました。

私は、かねてから作っていた複素関数を視覚化するWebアプリケーション “Conformality” に関する記事を書いたり、展示をしたりしていました。

冊子には、いくつかの複素関数の例・解説と、Webアプリの舞台裏に関する記事を書きました。一方、展示では、いくつかの複素関数の例・解説をポスター(というほどの紙の大きさでもない)で貼ったのと、パソコンとタブレットを用意して実際にWebアプリを動かしながら解説するのをやりました。

来場者に解説するとき、聞き手のレベルに合わせて話して、分かってもらうのは楽しかったです。実際どのぐらい理解してもらえたかは不明ですが…。あと、ふだんあまり喋らないので声が枯れました。

具体的に、レベルに応じてどんな内容を話したかというと、

小学生(!)

  • そもそも0や負の数はまだ習っていないので、まずはそこから。
  • 複素数の足し算が平行移動になることを説明できれば十分すぎるだろう。

中学生

  • 実数はOK。「数直線の数」みたいな感じ。
  • 複素数を紹介。いずれ高校で習うよ、ということで。
  • 複素数のかけ算ぐらいまでは解説しただろうか?
  • 「関数」としては \(y=ax^2\) ぐらいがいいとこだったかな?と思ったが、中学校では「関数」として「一次関数」というのが出てくるのを失念していた。

高校生

  • 現行の学習指導要領では数学IIIで複素数平面を扱う。複素数自体は、もっと前の2次方程式関連のところで出てくるはず。(高校では「複素数平面」というようだが、数学が専門の人は普通は「複素平面」と言う。私のような面倒くさがりな人には1文字少ないのはでかい)
  • 学年としては、3年生は複素数平面知っているはず。2年生の11月では複素数平面をやっている学校があるかないか、という感じ。聞いてみたところ「明日(火曜日)から複素数平面の単元に入る」という人もいた。
  • 事前に書店などに出向いて数学IIIの参考書を立ち読みしたところ、高校で扱うのは(今回関係ありそうなのは)複素数のかけ算の図形的な意味やド・モアブルの定理がせいぜいだということが分かった。
  • 今は高校で行列を教えないので、一次分数変換と行列の関係を教えにくかった。
  • 高校では実数の指数関数や三角関数を習う。

大学生

  • 複素数や複素平面はまあ知っている(1、2年生や、文系の3、4年生も含めて)。
  • 理系の3、4年生には一次分数変換の円円対応や正則関数の等角性まで知っている人もいて話が早かった。

という感じでした。

教える関数としては、当初は一次分数変換が一番単純かなあと思いましたが、高校生を視野に入れるなら複素数のかけ算(拡大縮小と回転)からやった方が学習の役にも立つだろうと思って、冊子やポスターでは最初に複素数のかけ算の例を載せました。しかし、実際に人に教えるときはもっと初歩的な、複素数の足し算の幾何学的意味(平行移動)から始めたので、他人への解説の仕方というのは自分だけで考えてもわからないものだということを認識しました。

解説内容はそのうちこのブログかどこかに載せたいと思います(時間があれば)。

余談として、「ますらぼ」の教室では学内無線LANが使えないので、Webアプリケーションを動かすには工夫が必要でした。持ち込んだ機器は

  • MacBook
    • 解説の際の主力。
    • ペアレンタルコントロールを設定したアカウントでWebブラウザを動かした。
    • セキュリティースロットにワイヤーをつけて盗まれないようにした。6年半前にこのMacBookを買ってから初めてセキュリティースロットが活躍した。
  • Nexus 7
  • AirMac Express
    • Nexus 7とMacBookを同一ネットワークにつなげた。

で、MacでWebサーバーを動かしてWebアプリケーションを動かす感じにしました。URLは本来の “https://miz-ar.info/webapp/conformality/” で動いているように見せたかったので、MacBookとNexus 7で d-poppo.nazo.cc がMacBookのIPアドレスに解決されるようにしました。

ドメイン名に対して好き勝手なIPアドレスを割り当てるためには /etc/hosts をいじるのが手軽な方法だと思います。しかし、Androidの場合は /etc/hosts をいじるにはroot権限を取る必要があり、調べてみたところ思いの外危なそう&面倒くさそうだなあと思ったので、代わりに手元でDNSサーバーを動かすことにしました。MacBookにはDNSサーバーのソフトウエア(BIND9)が搭載されていた(最新のOSXにはないらしい)のですが、駒場祭直前にBIND9の使い方なんて覚えられない…。と思っていたらWebminとかいう便利なツールがあることを知ったので軟弱者の私はそれでBIND9を設定しました。めでたしめでたし。

自作PCにWindows 8.1を導入した (2)

前回: 自作PCにWindows 8.1を導入した

Arch LinuxとWindowsのデュアルブート

自分がArch Linuxを入れる時に使ったブートマネージャーはrEFIndだった。そのコンピューターに追加でWindowsを入れると、Windows Boot Managerがハードディスクのどこかにインストールされてそれが使われるようになる。が、それだと起動時にOSを選択できないので、ブートマネージャーの選択をrEFIndに戻す。ブートマネージャーを選ぶには、ファームウエア(UEFI?)の側でブートデバイスを選ぶ要領でやればよい。自分が使っているGIGABYTEのマザーボードだと、電源投入直後にF12を押すとブートデバイスを選択する画面が出るので、そこでrEFIndを選択した。

rEFIndの画面には、起動できるOS(今は2種類。OSのインストールDVDを入れるとそれも選択肢に現れる)の一覧が表示されるので、それで選べばよい。

ハードウエアクロック

Arch Linuxをインストールした時、ハードウエアクロックはUTCで設定したが、Windowsではデフォルトで地方時(local time)を使う(?)ので、日本だと9時間ずれた時間がWindows上に表示される。

この問題については、Arch Wikiの記事に書いてある(日本語記事)。記事に従ってレジストリをいじればよい。Windowsによる時刻同期は、よくわからないが切った方がいいらしい。

ソフトウエアのインストール

コマンドラインで使えるWindows向けのパッケージマネージャーであるところのChocolateyを入れてみた。そうすると、管理者権限のあるコマンドプロンプトとかPowerShell上で

choco install virtualbox
choco install GoogleChrome
choco install gimp

という具合でソフトウエアを導入できる。便利。

デュアルブートじゃなくて仮想化で同時に使いたい

先に書いたように、起動時にWindowsかArch Linuxかを選択すれば、どちらか一方のOSを起動できる(デュアルブート)。が、時代は仮想化だ(?)。Windowsを立ち上げつつLinuxも使う、あるいはその逆をやりたい。それも、新しく仮想マシンにLinuxをインストールするのではなく、既に物理ハードディスクにインストールしてあるLinuxを使いたい。

普通、仮想化ソフトウエアでOSを動かすときは、ゲストOS用のハードディスクの実体はホストOSのファイルシステム上に作られる数十GBのファイルになっているが、その代わりに物理ハードディスクを直接ゲストOSに割り当てたい。

VirtualBoxの場合はこの辺の手順でそれができるらしい。が、なぜかうまくいかなかった。どういうエラーが出たかは覚えていない。

そういえば今回インストールしたのは8.1 Pro (x64)なので、Hyper-Vというやつが使えるはずだ。試してみようということで、
コントロールパネル > プログラム > プログラムと機能 > Windows の機能の有効化または無効化
でHyper-Vにチェックを入れ、再起動。この辺の記事を参考に設定しようとしたが、物理ディスクをオフラインにする手順のところで詰まった。具体的には、
コンピューターの管理 > 記憶域 > ディスクの管理
で、Arch Linuxが入っているディスク0をオフラインにしようとしたら、「現在のシステムディスクまたは BIOS ディスク 0 上のディスク属性は変更できません。 」というエラーが出た。EFIが入っているディスクだからダメなのか。よくわからん。

続きはまた今度。

IIJmioの格安SIMを1ヶ月間使ってみた感想

IIJmioの格安SIMを買ってから1ヶ月が経ったので、実際に使って生活した感想を書く。

端末

結局Pocket WifiのGL02Pで使い続けている。前の記事でも書いたように、この端末はSIMフリーで、APNを設定すればドコモのMVNOでも使える。SIMの大きさは標準SIMだが、microSIMでもアダプタなしで騙し騙し使える。自分の生活圏では、ほとんど3Gしか掴まない。LTEの表示が出る場所(つまり、ドコモのLTEの1.7GHz帯の電波が飛んでいる)も一部にはあるようだ。

OLYMPUS DIGITAL CAMERAOLYMPUS DIGITAL CAMERAOLYMPUS DIGITAL CAMERAスクリーンショット 2014-11-06 0.17.43

利用状況

家にいる時は家の固定回線があり、大学にいる時は(建物によっては)学内無線LANが使えるので、モバイル回線にお世話になるのは、このどちらでもない場所となる。駅や電車内とか。ただし、電車通学ではないので通学中は使わない。

というわけなので、普段の生活の中で、家と大学だけで過ごす日はまったくモバイル回線を使わない。そういうわけで、日によってばらつきが大きく、(b-mobileやOCNにあるような)高速通信の容量が1日あたりで決まっているプランよりも、今回選んだ、高速通信の容量が1ヶ月あたりで決まっているプランの方が向いている。

利用量は多い日で100MBを超える程度。まったく使わない日も多いので、先月は一ヶ月の利用量が2GBに届かず、700MBくらい余った。なので、常に高速通信ONで問題なさそうである。まあ、これは外出先で容量を食うサービス等を利用していないからだろう。動画の視聴や、リモートデスクトップ、VNCはやっていない。外出先でのアプリのアップデートは避けたいと思っている。

今後

これからどうするか。先の記事にも書いたように、今持っている端末がアレなので、新しい端末を入手したい。iPhoneを買うか、Android端末か、モバイルルーターか。

自分の中ではNexus 5が有力候補だったが、調べたところFOMAプラスエリアに完全対応していないようで、そこが不安要素になっている。

あと、メインのドコモ回線をどうするかも悩む。今はFOMA契約で、ガラケーで使っているが、今後どうするか。

日記終わり。