Skip to main content

ログ取得ツール

Category: Mac

これはさすがにchromeが悪いだろう

昨年のいつからか、chromeがローカルネットワークにアクセスできなくなっている。ERR_ADDRESS_UNREACHABLE だと。

最初はmacosの問題かと思っていた。なんかネットワークの検索を許可しますか的なダイアログが出ていたのを思い出しつつ、しょうがねーなーと。私は自宅でorangepiのサーバを立てていて、まああんまり活躍はしてないんだけどリポジトリサーバを置いたり何やらステージング環境的な使い方とか、そういう感じで xxxx.local というホスト名はよく使っていた。avahiとかmDNSとかそういうやつで名前解決もできるんで、かなり便利だったんですよ。

で、それが使えなくなる。不便に思いながら過ごした歳月。sshとかcurlは通るので、サーバが落ちているわけではない。重い腰を上げて設定を見てみると、こんな光景が待っていた…

なんだこの見るからにバグっている設定画面は。いくつ仮想chromeを上げているんだ。実体はどれなんだ? 実はvscodeの下にもいくつかchromeがありましてw

macのVM環境

VM環境っつーかLinux環境だ。これがないと何かと始まらないよね結局。

普段はdockerで間に合うんだけど、ごく稀にvagrant使いたくなることがあるでしょう。デプロイ先の、dockerとOSのバージョンに関する問題を手元で再現させたい時とかさ。でもApple Siliconでvagrantでうまく使えるVMシステムっていうのはあんまり気軽じゃない。UTMとかCLIはちょっとずつ出てきてるけど、まだvagrantを実現できるだけの機能はなく、プラグインも作られていない。limaもいまだvagrantからは使えないみたい。再現性のあるVM環境として便利なんだけどな、vagrant…

もうみんな(自分もだが)vagrantなんて使ってないし、仕方ないのかなーと思って漁っていたら、macOSにも仮想マシンのレイヤのAPIが出ていることもあって、割と良さそうな知らないやつがポロポロ出てきていたんだ。で、そのうちのorbstackってやつを試している。こいつが割といい感じだった。

zshのcompletionの罠

zshのcompletionで不便なのは、_shが変なふうに定義されているところ。PATHから実行ファイルを探してきて補完しようとする。で、実行ファイルがシェルスクリプトじゃなくてバイナリとかだったら実行できないわけだ。

私がわざわざ「sh xxx.sh」とするとき、xxx.shはPATHから探してきてほしいわけではなくて、カレントディレクトリにあるファイルを実行して欲しい。なのだが、TABで補完すると知らんコマンドがたくさん引っかかる。これは不便だ。

というわけで、以下の内容のファイルを/usr/local/share/zsh-completions/_shに配置する。

#compdef sh ksh bash
_default

これで平穏は保たれた。しかしsh xxxでxxxをPATHから探してくる動作は酷くないか? Unixの歴史の闇…しかも、普通のコマンド実行と違って、カレントディレクトリが優先だ。

sh-3.2$ cd $(mktemp -d)
sh-3.2$ ls -a
. ..
sh-3.2$ sh ls
/bin/ls: /bin/ls: cannot execute binary file
sh-3.2$ vi ls
sh-3.2$ chmod +x ls
sh-3.2$ ls      ← /bin/lsが実行される
ls
sh-3.2$ sh ls   ← ./lsが実行される
hello

PATHから探して欲しけりゃ、わざわざ「sh」つけないでしょ、っていう。普通のインタプリタで実行するファイル名を指定する時は、そうだよ?

pyobjcの衝撃

最近知ったんですが、Pythonにpyobjcというモジュールがあると。で、macOSのAPIをたくさん叩くことができるらしいと。

ちょっと試してみたら、、、

import Foundation
Foundation.NSLog(“hello”)
2018-12-07 21:42:46.620 python[66235:6413829] hello

何これ?? すごくない? Pythonのログハンドラだってこの通り。

import logging  
import Foundation  
  
class NSHandler(logging.Handler):  
    def emit(self, record):  
        Foundation.NSLog(self.format(record))  
  
if __name__ == "__main__":  
    logging.basicConfig(level=logging.INFO, handlers=[NSHandler()])  
    log = logging.getLogger(__name__)  
    log.info("hello")

こいつは、何かと楽しめるかもしれないねー。いろんなモジュール(なんちゃらKit)に対応しているみたいだし、試してみようっと。

TimeMachine、壊れたか?

MacのTimeMachineのバックアップが壊れたっぽいなと思っている。「っぽいと思っている」という曖昧な表現にしているのはなぜかというと…

High Sierraにした日よりも後に何度か成功しているから、High Sierraが原因というわけでもないのかな。とにかくバックアップ作成の準備中の状態から前に進まなくなっているのだ。変なlocalsnapshotのマウントができている状態。ただアクティビティモニタで見ていると、backupdというプロセスがディスクアクセスを続けているので、単に時間がかかっているだけなのかもしれないと。ただ終わる気配…というかバックアップが始まる気配がないんだよねー。

(追記)

…と思っていたところ、先ほど久々のバックアップが始まった。何日ぶりなんだろう。驚かせやがって。

High Sierra

自分のマシンのOSをHigh Sierraにしてみました。見た目の違いと言えばファイルシステムがapfsに変わったところか。ホールつきのファイルが作れるようになった。HFS+はホール作れなかったからね。それでホールに対応したtarを使ったり、tarのフォーマットにも色々あるから云々…という話ももうすぐ昔話の類になるんだろうね。 まあ見た目の違いはファイルシステムだけかな。何が良くなったという気もしないけど、悪くなっていなければ問題ない。アップデートに大量の時間がかかったのはあまり良くないことだった。会社のマシンはいつやろうかな。アンチウィルスとか対応してない状態でやるのもダメだろうから、アップデートはもうちょっと先になるかもしれない。

いい有線マウスがない…ということは!

普段私は自宅ではMBPを閉じてHDMIでディスプレイにつなぎ、メカニカルキーボードとマウスをUSBでつないで使ってます。で、USB有線のマウスで小型の良いものを探していたんです。長らく気に入って使っていた古いマウスのボタンがそろそろヘタってきたのよね。 それでときどき電気屋さんに見に行ったりしていたが、どうもピンと来るものがない。というか良さそうなマウスは全部Bluetoothの無線モノなんですよね。私は有線の方がいいのに。 というわけで困っていたんですけど、マウスにこだわる意味もないかと思い直した。それでAppleのトラックパッド(Magic Trackpad 2)を買ってしまいました。Bluetoothです(oh…)が、USBでつないで充電とペアリングができます。Mac側のBluetoothをオフにしていても、USBでつないでいれば普通に操作できます。そうかこれを有線で使うという手もあるのか…ただ位置(キーボードの下部にくっつけて使う)を考えるとケーブルは邪魔になるっぽいね。 Macで使うには確実に快適だし、Appleだけあってしっかり作ってあるという印象を受けた。基本は現行MacBookのトラックパッドと同じで、サイズは結構大きい。 まだ使い込んでないですが、なるほどと。操作の感覚も悪くない。慣れたらかなり使いやすいんじゃないかと思う。

GarageBandの入力

いやーまさかCommand(⌘)+クリックで入力できるとは思いませんでした。ずいぶん悩んだけど、ググればすぐ分かったんだよこんなこと!

気合いでキーボードでタイミングを合わせて打ち込むのかと、暗澹たる思いを持ってしまっていた。まあそこまでやるならabc2midiかなんかでテキスト入力していくけれども。慣れてしまえばGarageBandのこのインタフェースは便利と思える。スコアに直接入力することすらできる。まあスコア直接は使いにくいのでピアノロールかな。これでMacでも耳コピ作業をできる環境にあるってことが分かった。次はピアノロールの幅がちょっと狭いので、縦方向に拡大する方法を知りたい。横幅は拡大縮小できるということは理解した。

しかもそのままエンコードしてiTunesに送れるというね…いや別にそこまでは期待していないのだが。便利な世の中になったもんだねー。ただ難点は.midiファイルを書き出せないので、作ったデータを保管するのが面倒な話になるっぽい。あとMac版はコード入力ができないと。ふーん。

MacとHomebrewとPythonの悩み

MacのHomebrewは我々のようなクリエイティブな人間にとっては必須とされるツールだ。 だが、ちょっとした悩みも生じるんですよね。 Macには最初からPythonとかが入っているんですけど、Homebrewにもpythonがある。2系と3系があって、共存できるようになっている。ただPython使ってる人はシステムに最初から入ってるPythonを使うか、pyenvで入れるだろう。pyenvで入れとけばsudoしなくても済むし、いろんなバージョンを切り替えて使える。pyenvからpypyを使ってもいいしJythonやIronPythonを使ってもいい。私も普段はpyenvで普通のCPythonを使っている。pyenv自体はHomebrewで入れている。つまり、以下の3つがあるわけだ。

  • システムのPython
  • HomebrewのPython
  • pyenvで入れたPython

pyenvはpyenvで問題はあって、やれzlibだのreadlineのヘッダがないとかで新しいバージョンのインストールがコケることが多発するのだが、それは置いておいて、問題はHomebrewのPythonだ。 ansibleやmercurialもHomebrewに入っているんだけど、こいつがHomebrewのPythonに依存しているのだ。つまりHomebrewのPythonを使わずにpyenvを使い、ansibleやmercurialはHomebrewで入れたい、と言ったことができない。pyenvならpyenvにどっぷり入って、pyenvが用意しているpipでpip install ansibleだのpip install Mercurialだのする必要があるわけ。 私はbrew update ; brew upgrade ; brew cleanupを毎日実行していて、パッケージをなるたけ最新に近い形で保っている。そこにgemだのpipだのnpmだのは入ってきてほしくないんだ。開発するモジュールに依存したpackage.jsonだのGemfileだのrequirements.txtは開発するモジュール側に入っているわけで、アップグレードして古いのを消す、みたいなのを回すとやばいと直感が俺にささやく。 だけどさ、ansibleやmercurialは最新に保ちたいんだよ! つまり、、、

Macの日本語入力の続々報

以前にMacの日本語入力を絶賛したわけだが、最近Google日本語入力に戻ってしまった。

なぜかというと、これはAtom(githubのテキストエディタ)のせい。Atomの最近のアップデートがMacの日本語入力と組み合わせると最悪のエクスペリエンスを与えることになったため、泣く泣くGoogle日本語入力を入れ直すことになった。確定のタイミングとかが違うからキーストロークが変わってやりにくいんだよね…やめてほしい まあこれをもってmacの日本語入力をウンコ扱いするのはとんだ「とばっちり」もいいとこなんだが、現実としてテキストエディタでAtomを常用している私としては、Atomが直るまではmacの日本語入力を使えなくなってしまったのだった。この気持ち悪い中黒カタカナと付き合わなければならない身にもなってほしい。これAtomにissueを上げるべきなんだろうけど、なんて書いたらいいのだろうか。スクリーンキャストで表現しないと伝わらないような気がするな。 中黒カタカナというのは、例えばGoogle日本語入力で、「コンピュータ」で確定、「サイエンス」で確定、と打ってみて下さいよ。サイエンスを自然に確定させようとすると先頭に中黒がついて「コンピュータ・サイエンス」になっちゃうじゃないですか。油断していると「データベース」とか「ウェブサイト」にも中黒を挿入しようとするんだこいつは! そしてこの機能をオフにする方法が分からないんだ。中黒くらい「/」キー一発で打てるんだから、わざわざ補完してくれなくてもいいんだよ。 …と思っていたところ、さらに最近のatomのアップデートでこの挙動が直ってる?? ちょっと戻してみようっと。いま使ってるのはmacOS Sierra 10.12.1とatom 1.12.6です。 あとOpenSCADのテキストエディタもコメントとかに日本語入力しようとすると変なことになるよね。これもGoogle日本語入力にすると少しはマシになるが、完全には治らなかった。入力場所がおかしくなったり、あーと思ってundoしても、undo自体がバグってしまって、消したい奴が抜けて残ったりするのよね。