The private key for “ほげほげ” is not installed on this Mac.で疲れた

iOSアプリを久しぶりにアップデートしようとしたら、いくつものエラーが出まくって、こっちを潰せば、あっちからエラーという感じで一日中悩まされてしまいました。

結局、なんとかなってアップロードすることができたのですが、面倒だったのは今回のタイトル

The private key for “なんちゃら” is not installed on this Mac.

の解決でした。まずはこちらの説明のように秘密鍵をチェックしましたが、わたしの場合は鍵が入っています。

このサイトからもリンクがありますが、stackoverflowの記事にあるようにもっと面倒な手順になってしまいました。

画面は上の記事の画面と同じです。

ということで記事に従って進めました。(あたふたしてたから曖昧になっているかもしれません)

  1. iOS Dev Centerに入って、CertificatesのProduction用の(TypeはiOS Distribution)項目をRevokeボタンを押して削除。
    (「このままじゃまずいよ」って感じのメールが送られてきます)

  2. XcodeのPreference=>AccountsからView Detailsから何かするらしいんだけど、すでに

    • iOS Development
    • iOS Distributin
      の項目はあるのでそのまま何もせず。
  3. もういちどiOS Dev Centerに戻ってみると、Distribution用のCertificatesができているので、これを利用することに。

  4. Provisioning ProfilesのDistributionの項目が全部黄色になってしまったので、各ProvisioningファイルをEditして、新しく作成されたDistribution用Certificateに変更。(わたしは数が少ないいけど、多い人は大変です)。

  5. またまたXcodeに戻って、プロジェクトのCode Signingの部分を変更。

  6. PROJECGとTARGETの2か所のそれぞれReleaseを新しく作成したiPhone Distribution: XXX (XXXX)に変更

  7. その下のProvisioning Profileを適切なProvision名に変更する(わたしの場合は、数字と記号の羅列になっていました)。

これが終わったら、ふつうにArchiveしてValidate、無事にアップロードが完了しました。

これ以外にも、いろいろエラーが出ていたのですが、おそらくこれが解決の中心だったと思います。(自信ないけど)

MacDownのThemeファイルでちょっとつまずいた

エディタ「MacDown」の続きです。

MacDownの設定を見てみると、どうやらMouと同じ設定ファイルを使えるようです。ただし拡張子を「.style」にしないと認識されません。

で、試しに設定ファイルを読み込んでみます。ほんとうなら入力画面は以下のように表示されるはずです。

0904a

でも、表示されたのはこんな感じ。

0904b

調べてみると

H2
foreground: ff0000
font-style: normal
font-size: 15px

の中の「font-style: normal」が原因でした。

font-style: bold

は認識されるのですが「normal」はダメなようです。じゃあnormalはどうするのか?

「font-style」の行を取り除けば自動的にnormalになるのでした。

もしかして、こっちが常識なのかな? わたしには分かりません。

MacDownを少しだけ使ってみた

MacDownを使い始めたのですが、このところほとんど手がつかずでした。でも使いたい気持ちが満々です(なぜだか分かりませんが)。

そんなわけでざっと設定を調べてみて、自分がすぐに使えそうなところだけレビューしてみました。といってもMarkdownエディタはMouくらいしか知らないので他との比較はできないのですが。

とりあえず便利なところ

0903-0

「Put editor on the right」は編集画面とプレビュー画面の左右を入れ替えるオプションです。ときどき便利。

「Show word count」をチェックすると「あいうえおabced」は「10 charanters」と表示されます。

0903a

シンタックスハイライトがいろいろ使える

いろんな言語がサポートされています。

def aaa(bbb):
    print bbb
\begin{equation}
a = b + c \label{eq:2-1}
\end{equation}

「“`」も「~~~」と同じように使えるみたいです。

0903-2

サポートされている言語はここにありますが、一般的なものはたいていサポートされているみたいですね。

objcとかobj-cとかobjective-cなど、エイリアスになっているので適当に書いてもなんとかなりそうです。

TeXの数式表示ができる(かな?)

ここをチェックするとTeXのように数式を表示できるみたいです。

どれほどできるのか分かりませんが、とりあえずこんな数式は大丈夫なようです。

0903-22

プレビューの表示はこんな感じ。

0903bb

「_」の前にスペースを入れないとイタリックと判断されてしまい、数式が正しく表示されませんでした。

ほんとはCSSと編集画面の設定をカスタマイズしたかったのですが、それは近いうちに調べたいと思います。




markdown用エディタMacDownをインストールした(だけ^^)

ほんとうにインストールした直後なので、実はあまり説明できることはありませんが、気に入りそうな予感がするので紹介してみました。

markdown記法は、ブログを書いたりメモしたりとか、とにかくよく使っています。

で、markdown用のエディタとしてMouを愛用してきたのですが、今日、とつぜんMacDownというのを見つけてインストールしてしまいました(Mac用です)。作者は台北で活動している人のようです。

MacDownができるまでの経緯はMacDownのサイトに書いてありますが、
Mouにインスパイアされただけのことはあって、使い勝手がとよく似ています。

0828a

Mouと同様に、編集画面のカスタマイズとプレビュー画面のカスタマイズができるのがいいですね。Preferencesの画面もMouによく似ています。

0828c

まぁ、わたしは他のmarkdownエディタのことはほとんど知らないので比較はできませんが。

Mouで使っているテーマも使えるのかもしれません。
次回は、もう少し使ってからご報告します。

whichとtypeとwhereas(Bashの場合)

コマンドを探すコマンド3つです。ちょこっと比較しただけなので未消化になってしまいました。

which

whichは基本的に$PATHをサーチしてコマンドの位置を表示するらしい。

$ which ls
/bin/ls

ビルトインコマンドの場合は、たとえば

$ which dirs

としてもBashは何も表示されません。zshやらcshなら表示されました。

% which dirs
dirs: shell built-in command

type

typeは$PATHやビルトインやaliasやを探して、実際に有効なものを表示するようです。

$ type ls
ls is aliased to `gls --color=auto -F'

これはわたしが.bashrcの中で定義して内容が表示されています。
コマンドも含め、見つかったもの全部を表示させるためには

$ type -a ls
ls is aliased to `gls --color=auto -F'
ls is /bin/ls

とします。なかなか便利そうです。

whereis

$ man whereas

とすると以下のように表示されます。

The whereis utility checks the standard binary directories for the specified programs, printing out the paths of any it finds.

standard binary directoriesって何なんでしょうか。
とりあえず、whichと同じような表示がされますが、よくわかりません。

Bashのキャッシュを消すのは?

先日、homebrewでpythonをインストールしました。で、

$ which python

とすると、ちゃんと「/usr/local/bin/python」と表示されますが、実行すると

$ python --version
2.7.5

と表示されます。でもインストールしたのは2.7.8で、2.7.5はMacにもともと入っていたもの。

どこかにキャッシュされているんだろうと思ったら、Bashが独自にキャッシュしているんだそうです(わたしはBashを使っているので)。

こんなときはhashコマンドを使ってみると

$ hash
hits   command
   1   /usr/bin/python

のように表示されます(思い出して再現してます)。

だから、このハッシュをクリアしてやればいいわけです。キャッシュ全部をクリアするのは

$ hash -r

でした。その後もう一度実行すると

$ hash
hash: hash table empty

となったので、

$ python

で無事/usr/local/bin/pythonが呼び出されることになりました。

でも、このターミナルを閉じて、別なターミナルを開けば、こんなことは必要ないんですよね。

TodoistのキーバンドをKarabinerで変更してみる

タスク管理のアプリTodoistをインストールしてみました。TodoistはWebでも、iOSやAndroidなどにも対応していて便利そうです。

Mac用のTodoistは項目の文字を強調したりイタリックにしたりアンダーラインを引くことができて、それぞれCtrl+b、Ctrl+i、Ctrl+uが割り当てられています。

わたしはemacsのキーバインドに慣れてしまっているので、1文字戻るときについついCtrl+bを押してしまいます。すると強調を表す「!! !!」が挿入されてしまうのです。Todoistでは「!!」に囲まれた範囲が強調になるようです。

最近はあんまり固執しないでアプリごとのキーバインディングに慣れたいと思っているのですが、無意識にCtrl+bを押してしまうんです。すると4文字も削除しなければならなくなってガッカリ。

というわけで、Karabiner(旧KeyRemap4MacBook)を使ってCtrl+bだけ「1文字戻る」に割り当てることにしました。

必要なのは、Karabinerのprivate.xmlに項目を記入します。以前Metanotaのときにも設定したので繰り返しになりますが、記事にしてみました。

必要なのはのアプリの名前です。これはKarabinerのメニューからLaunch EventViewer => Appタブを表示させてからTodoistを起動するか選択すると表示されます。Todoistは「com.todoist.mac.Todoist」でした。これをもとにの項目を設定します。

そしての項目です。などは、適当でいいんだと思います(調べるつもりでほったらかしてました)。あとはCtrl+bに「CURSOR_LEFT」を設定して保存。

<appdef>
    <appname>TODOIST</appname>
    <equal>com.todoist.mac.Todoist</equal>
</appdef>

<item>
    <name>Todoist Ctrl+B to backward char</name>
    <identifier>todoist.app_ctrl_b_backward_char</identifier>
    <only>TODOIST</only>
    <autogen>__KeyToKey__ KeyCode::B, ModifierFlag::CONTROL_L, 
    KeyCode::CURSOR_LEFT</autogen>
</item>

KarabinerのPreferenceを開いて「ReloadXML」ボタンを押すと、いま設定された項目が表示されるので、チェックすれば完了です。

0805

Mac上のVirtualBoxのHostキー+「C」や「F」

Mac上でVirtualBoxを使う話です。VirtualBoxではデフォルトでHostキーは左のCommandキーに割り当てられています。

Host+Fとしてから「Switch」を押すとフルスクリーンになるので、Macでは左Command+F。

0721a

Host+Cとしてから「Switch」を押すとScaleモードになるので、Macでは左Command+C。

0721b

どちらもHost+Homeとするとメニューバーにアクセスできると表示されています。

Homeキーはどこにあるのか調べてみるとFn+←だそうです。ということはHost+Homeは

左Command + Fn + ←

になるようです。この組合せを押すと画面には

Machine
View
Devices
Help

のメニューが表示されました(スクリーンショットは撮れませんでしたが)。

Scaleモードの場合は、Host+Homeでも何も表示されません。何ででしょうか。

あんまり使わないし、どちらの場合もHost+Fのフルスクリーンモードなら、もういちどHost+F、Host+CのScaleモードなら、もういちどHost+Cを押せば解除されるので、間違えて選択してしまった場合でも元に戻すのは簡単ですね。

openがまた古いバージョンを呼び出したのでEmacs23は削除した

Macのopenコマンドが古いバージョンのEmacsを呼び出している状態を解決したと思ったのですが、今日になってまた古いEmacsが起動されるようになってしまいました。

$ open -a "Emacs"

とすると再びEmacs23が起動するようになってしまいました。

アプリケーションフォルダにあるのはEmacs24へのシンボリックだし、whichで表示されるのもEmacs24だし、そもそもEmacs23へのパスは何も通っていないんですけどね。何でわざわざ呼び出してくるんでしょう。

こうなればもうEmacs23をアンインストールすることにします。そもそも両方使う必要ないし。

$ brew cleanup emacs
Removing: /usr/local/Cellar/emacs/23.3b...

この直後に

$ open -a "Emacs"

としてみました。エラーでも出るのかと思ったら、あっさりとEmacs24が起動されました。

スッキリしたような、何かひっかかるような、です。

Macのopenコマンドのサーチパスってどれ?

コマンドラインからopenコマンドを使ったら、$PATHの通っていないはずの古いEmacsが呼ばれてしまった、というのが今回の内容です。

わたしのMacにはEmacs23とEmacs24が入っています。どちらもhomebrewでインストールしたものです。

もうあまりEmacsは使わないだろうなと思っていたのですが、また頻繁に使うようになりました。

それで新しいのがいいかなという程度の気持ちでEamcs24にアップグレードすることにしたのですが、、、

ここでopenコマンドの問題が生じました。

ターミナル上で

$ open -a "Emacs"

とするとEmacs23が呼ばれてしまうのです。最初は気づきませんでしたが、バージョンを見るとEmacs23になっています。

そこでwhichコマンドを使うと

$ which emacs
/usr/local/bin/emacs

と表示されます。このemacsはhomebrewがインストールした「../Cellar/emacs/24.3/bin/emacs」へのシンボリックリンクです。

そもそも、Emacs23は「/usr/local/Cellar/emacs/23.3b/」にしかありません。

アプリケーションフォルダにあるEmacs.appもEmacs24へのシンボリックです。

ですから、

$ open -a /Application/Emacs.app

とするとちゃんとEmacs24が起動します。なのに「open -a “Emacs”」はPATHも通っていないEmacs23を探してきてしまうのです。

もしかしたらアプリケーションとファイルの関連付けのデータベースにEmacs23が優先される情報でも残っているのでしょうか。アプリケーションのサーチだけでファイルとの関連付けはないと思うのですが。

ほかに思いつくこともなかったので、Web上で調べた方法でこの関連付けのデータベースを再構築してみることにしました。

$ /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework
/Support/lsregister -kill -r -domain local -domain system -domain user

ちょっと待ち時間があって再構築は終了したようです。そこでもういちど試しました。

$ open -a "Emacs"
Unable to find application named 'Emacs'

こんどは見つからなくなってしまいました。もちろん「open -a /Application/Emacs.app」なら問題なくEmacs24が起動するのですが。

関連付けデータベースを再構築が原因でしょうから、何でもいいから適当な拡張子に関連付けをしたら何とかなるかな、ということで拡張子「tex」のファイルの情報を開いて「このアプリケーションで開く:」を「Emacs.app」に設定してみます。

0714

「すべての変更」はグレーの表示で選択できません。Emacs.appはシンボリックリンクだからでしょうか。とりあえず1つのファイルの関連付けだけ終了して再びコマンドラインに戻って、また試します。

$ open -a "Emacs"

今度は大丈夫、Emacs24が起動しました。

結局、openコマンドのサーチパスに相当するのは、このLaunchServicesということなのでしょう。