fork 先で、upstream での変更を取ってきて merge したい

自分のアカウントにフォークしてきたリポジトリで、フォーク元の(つまり、upstreamの)変更を反映させる方法です。 以下のページにしたがうとできます。

help.github.com

If you don't have push (write) access to an upstream repository, then you can pull commits from that repository into your own fork.

とあるので、upstream に対して書き込む権限がなくても pull してくることができます。

Python2系なのに Blockly のビルドができない

(追記:2020年1月時点ですでに blockly は python 3 に対応しているようです。このページの情報は古い可能性があります。)

Blockly をローカル環境にクローンしてきて、ビルドしようとすると以下のようなエラーが出たのですが、 これはローカル環境に複数の python がインストールされていることが原因だったようです。

$ python2.7 build.py
Traceback (most recent call last):
  File "i18n/create_messages.py", line 25, in <module>
    from common import read_json_file
  File "/Users/(略)/blockly/i18n/common.py", line 62
    except ValueError, e:
                     ^
SyntaxError: invalid syntax
... (以下略)

Blockly のコードは python2.7.x 系で動くことになっているので、2.7.10 と 2.7.16 の両方で試したのですが、同じエラーが出てしまいました。 エラーそのものは「except を使うときにカンマが含まれているのがおかしい」というものですが、 2.7.x 系ではこのシンタックスはサポートされていることになっています。…謎です。

ネットを検索したら全く同じような状況に陥っている人がいて、その人は自分のローカル環境が原因だったと書いているので、 私も自分の環境の python たちを泣く泣くアンインストールすることにしました。

github.com

私の環境は以下のようになっています。

  • MacOS Mojave 10.14.5
  • Homebrew と anaconda の両方を使っています
  • Homebrew で python2.x 系と python3.x 系を両方インストール済みで、それぞれ python2.7 python3.6 というコマンドで動かすことができる

とにかく何が原因なのかわからないので、anaconda を uninstall し、その後 homebrew でインストールされている python を消します。 Homebrew では複数のパッケージで python に依存しているので、普通に brew uninstall しようとすると warning が出てきます。 そこで --ignore-dependencies というオプションをつけて強制的に uninstall してみます…。

$ conda install anaconda-clean
$ anaconda-clean
$ brew uninstall python3 --ignore-dependencies
$ brew uninstall python@2 --ignore-dependencies

ひとまずこの状態で python という名前を含むコマンドを探すと以下のようになります。

$ python [tab] [tab]
python            python2.7         pythonw           
python-config     python2.7-config  pythonw2.7 

このとき、python コマンドの指すものは /usr/bin にあるもの(もともと MacOS に入っているもの)になっています。

$ which python
/usr/bin/python
$ which python2.7
/usr/bin/python2.7
$ python --version
Python 2.7.10
$ python2.7 --version
Python 2.7.10

この状態でもう一度 blockly のビルドをすると成功しました!(ここまで頑張って uninstall してもうまくいかなかったら逆に悲しい)

uninstall してしまった python たちはまたあとで少しずつ install してあげようと思います…。

Apple 製品の購入日を調べたい

iPhoneMacBook などの Apple 製品の購入日がいつだったのか、Apple の公式ウェブサイトで調べる方法の備忘録です。(2019年6月1日現在)

  1. まず、Apple 公式ページのメニューバーの 「サポート」 に進みます。

    Apple 公式ページ「Apple サポートへようこそ」

  2. そのページをスクロールすると、「保証状況を確認する」という項目があるので、 「オンラインで管理」 に進みます。

    Apple公式ページ「保証状況を確認する」の項目

  3. 「マイサポート」 というページが見えているはずなので、「マイサポートにサインイン」をクリックしてサインインします。Apple 公式ページ「マイサポート」

  4. 自分の持っている Apple 製品一覧を見ることができるので、知りたい製品の名前をクリックすると、製品のシリアル番号や購入日を見ることができるようになっています。便利。

Agda のモジュール読み込みのエラー

Agda のモジュール読み込みのエラー

Agda 2.5.2 で import my-module-file as M のようにしてファイルを開こうとすると、

Module cannot be imported since it has open interaction points
when scope checking the declaration
  import my-module-file as M

というエラーが出ますが、これは元ファイル (my-module-file.agda) に示すべき Goal が残っているのが 原因のようです。 Hole を埋めてあげて、*All Done* の状態にしてあげればモジュールとして読み込めました。

bash の補完機能は inputrc で

bash の補完機能で大文字と小文字の区別をなくす

bash でファイル名をタブで補完するとき、Windows の Git Bash みたいに大文字小文字 の補完を自動でやってくれるようにしました。

set completion-ignore-case on

というのを ~/.inputrc というところに書いて読み込ませればOK。 inputrc って便利なんですね…!

linux でも基本は同じ

linux の場合、source ~/.inputrc で読み込んでも反映されなかったのですが、一旦 bash を開きなおすとうまくいきました!

Bibtex 備忘録

文章を書いた TeX ファイルに何を加えれば参考文献を表示できるか、忘れないようにメモしておきます。 [更新 2020-01-28: @misc の使い方を補足しました]

手順

1. TeX ファイルに参考文献を付け加える

メインの .tex ファイルの \begin{document}\end{document} で挟まれてる部分に、

\bibliographystyle{jplain}
\bibliography{paper} % paper.bib というファイル名なら paper とかく

を加える。jplain は日本語論文でABC順で文献を並べるという意味。 詳しくは http://ideas.paunix.org/latex/latex_6_bib.htm#bibstyle をみるべし。

2. Makefile を編集

Makefile をこんな感じにする。すると、make ファイル名.pdf組版できる。

.SUFFIXES: .tex .pdf

all :
    @echo usage: make filename.pdf / make clean

.tex.pdf :
    platex $<
    pbibtex $*
    platex $<
    platex $<
    dvipdfmx $*

clean :
    rm -f *.ps *.bak *.dvi *.aux *.log *.toc *.bbl *.blg *.out *.ptb

3. Bib ファイルを作る

英語論文の引用の場合、タイトルの中でアルファベットを大文字にしたいところを {} で囲ってあげればよい。

@InProceedings{文献,
  title={{T}itle {O}f {T}he {P}ublication},
  author={著者},
  journal={ジャーナル},
  pages={227--238},
  year={2000}
}
  • このフォーマットを自分で書くのは時間の無駄なので、Google ScholarChrome 拡張が非常に便利。 chrome.google.com

  • @InProceedings, @article, @book, @phdthesis などはよく使う。ウェブサイトなどの引用は @misc が便利。

@misc{BibTex,
author={{Alexander Feder}},
title={{Using BibTeX}},
howpublished="\url{http://www.bibtex.org/Using/}",
year=2006,
note={[Online; accessed 28-Jan-2020]}
}
  • pages, author などは PAGES, AUTHOR と大文字で書いても問題ない。
  • 自分の過去の論文を引用したいが、これから収録される場合は note={to appear, 11 pages} などとすればいいらしい。

4. 引用する

.tex ファイル中で \cite{文献名} とする。引用が一つもないと、次のように「一つも引用してませんよ!」 とエラーを出してくれるので、とりあえずダミーの引用でも入れておけばよい。

This is pBibTeX, Version 0.99d-j0.33 (utf8.euc) (TeX Live 2017)
The top-level auxiliary file: sample.aux
The style file: jplain.bst
I found no \citation commands---while reading file sample.aux
Database file #1: paper.bib
(There was 1 error message)

stack build でエラーが出る

Haskell のパッケージ管理システム便利版の stack というものをいじっていてビルドしようとした際に出たエラーの対処法です。

cabal の他に新しくできた stack というものは、パッケージ依存性の問題(cabal hell)を解決するようにできているそうです。便利。

haskell.e-bigmoon.com

stack build できない

stack では、YAML形式の設定ファイルを読み込んでビルドしていくのですが、それを行おうとすると構文解析に失敗します。

Could not parse '(略)/stack.yaml':
Aeson exception:
Error in $['extra-deps'][0]: failed to parse field 'extra-deps': expected PackageIdentifier, encountered Object
See http://docs.haskellstack.org/en/stable/yaml_configuration/

エラーによれば、extra-deps の一つ目で詰まったようです。私のファイルでは

extra-deps:
  - git: [リポジトリのURL]
    commit: [特定のコミット]

という部分の - git: と書いているところが怒られていて、ここにはパッケージの名前が入るべきだと言われていますが、ネットで調べた限りはこれは一応書き方としては間違っていないようですね…

stack のバージョンをあげる

原因は stack のバージョンがあまりにも古いことにあったようです。調べたところ私の stack はなんと version 1.3.2 (2016年12月) でした。 version 1.5.1 よりも古いと上記のエラーが出てしまうみたいです。

$ stack upgrade
Current Stack version: 1.3.2, available download version: 1.9.1
Newer version detected, downloading
Querying for archive location for platform: osx-x86_64-static
Querying for archive location for platform: osx-x86_64
Downloading from: https://github.com/commercialhaskell/stack/releases/download/v1.9.1/stack-1.9.1-osx-x86_64.tar.gz
Download complete, testing executable
Version 1.9.1, Git revision f9d0042c141660e1d38f797e1d426be4a99b2a3c (6168 commits) x86_64 hpack-0.31.0
New stack executable available at (ホームディレクトリ)/.local/bin/stack

新しい stack がダウンロードできたので、/usr/local/bin の stack のリンクを貼り替えます。 リンク先のパスを知るには readlink コマンドが使えます。

$ readlink stack
/Library/Haskell/ghc-8.0.2-x86_64/bin/stack

正しくリンクを貼り替えられたようです。この後、stack build もうまくいきました。

$ stack --version
Version 1.9.1, Git revision f9d0042c141660e1d38f797e1d426be4a99b2a3c (6168 commits) x86_64 hpack-0.31.0