にうむのblog

暇なときに何か喋ります

mac vscode ^^H

環境

MacBook, Mojave 10.14
VSCode 1.28.0

症状

なんだか最近(9月〜?)、macvscode で書いた TeX ファイルをタイプセットしようとするとText line contents an invalid character.とエラーが出て、タイプセットに失敗するようになった。

f:id:geniusium:20181009225807p:plain:w400

エラーを見てみると入力した覚えのない^^Hの文字が入力されており、これが原因でタイプセットに失敗してるらしい。

原因

^^Hと表示されているのはバックスペースの制御文字で、なぜかこれが日本語入力時にバックスペースを押すと入力されてしまう。詳しくは下記のサイトを参照してほしいが 、結局はエディタの方の問題で修正待ちらしい。

解決

vscode拡張機能「Remove backspace control character」を用いて、ファイル保存時などに制御文字を自動で消去する。
marketplace.visualstudio.com

方法

vscode拡張機能「Remove backspace control character」をインストールして、settings.json

"ctrlchar-remover.pattern": "[\\u0008]",
"editor.formatOnSave": true,
"editor.formatOnType": true,

を追加。これで⌘+SEnter;を入力時にバックスペースの制御文字が自動で消去される。
詳細は下記サイトに日本語で書いてあるのでそれを参照。
github.com

おわりに

私の環境では今年の9月ぐらいからこの症状が出てきたのだが、そのころの vscode のアプデで改悪されたのかな? Windows だと大丈夫なのか?
とりあえずエディタは自動アプデをオフにしときましょう(反省)。

Mojave入れた感想

台風で外にも出られないので(晴れでも引きこもってますすいません)、Macbookに新OS Mojave(もはべ)をインストールした。



f:id:geniusium:20180930212030p:plain
DLに1時間、インストールに1時間ぐらいだった。

感想

ダークモード

エディタはもともと暗くしてあるし、まあFinderとかiTunesとかは暗くなって、まあそれだけ。
書類(pdf)とかブラウザ(Webサイト)の背景は結局白色だし、そのコントラストで余計目が疲れる。そのへんんはどうにかならないものか。Webサイトの背景が黒が主流になればディスプレイの消費バッテリ減って良さそうだなぁと思った。はい次

デスクトップのスタック

いらない、というかよくわからない。デスクトップは散らかってる方が心が落ちつく。前からある「整頓」や「整頓順序」が便利。

iPhone, iPadで写真撮影

これ iOS 12 じゃないとできないのでは? ワイの iPhone まだ iOS 11 なの。ということでまだ試してない。
便利そうだが、昔からある Air Drop で十分満足してたのでまあいいか。
あと iOS つながりでついでに言っておくと、Apple Watch 4 を使うには最新OSである iOS 12 が必要らしい。iOS 11↓ を潰しにきてるな。

クイックルック強化

クイックルックから画像編集とかができるようになったが、プレビューでできていたことなので感動はない。

Finder 強化(?)

f:id:geniusium:20180930214052p:plain
この表示方法で、画像の詳細などが見れるようになったが、(多分)ソートができなくなった? まあなので変更でなく追加にしてもらえるとよかった。

スクショ

動画キャプチャなんかするかね? 容量ばかデカイっしょ? PCゲームあんましないしねぇ。スクショは元からかなり便利だった。

壁紙

鳥取砂丘)。高画質なんだろうけど、砂の感じ(?)が jpg の圧縮みたいに見えてなんかアレ。やっぱ山がいいかな。

ボイスメモなどのiOSアプリ追加

まあ無いよりはいいんじゃないか。

App Store

Mac版はあまり見てなかったので何とも言えないが、改悪ではないと思う。デザインは新しい方が好き。開いてすぐ残金がわかるのが良い。f:id:geniusium:20180930220558p:plain


新機能はこれぐらいかね。まあさすがに PC は安定重視なので、今回のアプデでも特に異常はなく前までの環境と同じようにアプリとかも動いてくれてよかった。やはり素人にはダークモード追加のような視覚的にわかる変化があるといいですね。

ld: library not found for -lSystem

fortranコンパイラ gfortran でエラーが出るようになった。

$ gfortran test.f
ld: library not found for -lSystem
collect2: error: ld returned 1 exit status


心当たりがあるのは前日アップデートした xcode ぐらい。ググってみても xcode 関連の記事がでてくる。
結局、原因の詳細はわからないが、gcc の再インストールで治った。
gcc の再インストールはターミナルでbrew reinstall gccと打てばよし。

参考

github.com

【Mac】open コマンド

/Applications にあるアプリは、ターミナルから

open -a アプリ名

で開くことができる。
例えば Safari を開く場合

$ open -a Safari

と打てば良い。( .app は省略可。あってもいい)
以下のように引数をとればファイルを開くこともできる。

$ open -a Safari index.html

Visual Studio Code.app のようにアプリ名にスペースがある場合は

$ open -a "Visual Studio Code"

のように""でくくる。


エイリアスを設定しておけば便利である。
ホームディレクトリにある(なければ作成).bash_profile に

alias vscode='open -a "Visual Studio Code"'

を追加して

$ source ~/.bash_profile

で設定を反映。するとターミナルで

$ vscode

と打てば Visual Studio Code が開く。
ファイルを Visual Studio Code で開きたい場合

$ vscode test.txt

と打てばよい。


ついでに、ターミナルでのカレントディレクトリを Finder で表示するには

$ open .

でいい。

【Mac】ターミナルの文字色変更

下記サイトを参考に変更したのでメモ。
Macターミナルのコマンドを打つ ~$ 部分に色を付け、ブランチ名を表示させる

設定を反映させるには

$ source ~/.bash_profile

と打つ。

Macの写真アプリから画像を書き出すときのメモ

f:id:geniusium:20180922225702p:plain

はじめに

iOS端末で保存した画像は自動でiCloudに保存されるようになったが、スクショやら写真やらが数千枚ごちゃ混ぜになっているのは何だか心地よくないので、季節の変わり目にでも全てPCに取り込んで整理したいものである。
MacBookを手に入れてからは、Macの写真アプリからiOS端末(iCloud)に保存しているの画像を書き出しているが、毎回やり方を忘れてしまい色々困ったことになっていた。それで今回ようやくメモしておこうという気になったのでそうすることにする。

書き出しについて

まず、Mac写真アプリからの画像書き出し方法は3つある。
「ドラッグ&ドロップ」と「写真を書き出す(Shift+⌘+E)」と「未編集のオリジナルを書き出す」である。

「ドラッグ&ドロップ」はよくわからないので今回はやめておく。
他2つの違いは、以下の通りである。

「写真を書き出す(Shift+⌘+E)」は、写真アプリ内で行った画像のトリミングや回転、明るさ調整などの編集結果を維持したまま、Macに取り込む。ただし、画像ファイルの作成日や編集日が今この瞬間に書き換えられてしまう。これはファイルのソートやリネームをする時に非常に困ったことになる。あと、書き出す画像や動画のフォーマット(jpg, pngとか)や画質を選べたりできる。

「未編集のオリジナルを書き出す」では、写真アプリ内で行った画像の編集は全てリセットされたオリジナルの画像が書き出される。よって、画像ファイルの作成日や編集日は元のままである。あと、オリジナルなので当然フォーマットなどは選べない。

写真アプリではただの写真や動画だけでなく、Live Photosやスローモーションなどの形式がある。上の2つの書き出し方法で、これらがどういう風に書き出されるのか表にまとめた。

写真を書き出す(Shift+⌘+E) 未編集のオリジナルを書き出す
写真 作成日や編集日は上書きされるが、撮影日は上書きされない。jpg, tiff, pngから選択。 作成日や編集日、撮影日は上書きされない。オリジナルはjpg。
動画 720pとか1080pなどが選べる。フォーマットはm4v。 フォーマットはmov。
Live Photos 静止画1枚になり、jpg, tiff, pngから選択。 実体はただの動画。mov。
スクリーンショット jpg, tiff, pngから選択。 png
アニメーション jpg, tiff, pngから選択。選択肢にgifなし。 gif
バースト 1枚だけ書き出される。jpg, tiff, pngから選択。 連写した全ての画像が書き出される。
スローモーション スローモーションの設定が維持。m4v 等倍の動画に戻ってしまう。mov

という具合である。
まあどちらを選ぶかは人の好みではあるが、個人的にはリネーム時に欠かせない作成日や編集日の情報が消えて(上書きされて)しまうのはどうにも我慢ならない。写真のトリミングや回転は大したことはないので、これらは諦めることにする。
しかし、さすがにスローモションが等倍になってしまうのは許せないので、臨機応変に対応することにする。

結局、ファイルの作成日や編集日の情報を維持するため、画像編集の維持は諦め、「未編集のオリジナルを書き出す」で画像や動画を書き出すことにした。しかし、スローモーションについては「写真を書き出す(Shift+⌘+E)」と「未編集のオリジナルを書き出す」の両方で書き出し、「未編集のオリジナルを書き出す」で書き出したファイルを作成日でリネームし、それを参照しつつ「写真を書き出す(Shift+⌘+E)」で書き出した方を手動でリネームすることにした(面倒)。

フォーマットについて

フォーマットについて簡単に説明しておく。

画像
jpg 圧縮されるが拡大しなければキレイ。おすすめ。
png ビットマップ。ファイルサイズでかい。
tiff 圧縮されない。プロ用。ファイルサイズめちゃでかい。
gif アイコンとかによく使われてる。アニメーションができる。

iPhoneなどで撮影した写真は、普通jpg。スクショはpng

動画
mov Apple端末用。winとかでは見慣れないが、おすすめ。
m4v mp4のApple版という認識。

どっちがいいのかわからん。

注意

iOS端末間をマイフォトストリームで画像共有していた時代は良かったのだが、iCloudフォトライブラリになってから面倒な問題が発生した。ファイル作成日およびファイル編集日は、普通その画像が作られた時(写真なら撮影時、スクショならスクショした時)の日付・時刻になるはずだが、写真アプリから(オリジナルを)書き出してみると実際そうはなっていないことがよくある。じゃあいつの日付になっているかというと、その画像がiCloudにアップロードされた時刻である。リアルタイムで画像がアップロードされていればいいのだが、ある時刻に複数の画像がまとめてアップロードされると、それらのファイル作成日(編集日)が同じ時刻になってしまう(または順序が入れ替わったりする)。
画像編集の情報を捨ててまでファイル作成日にこだわったのに、こんな事になっていてはもう激おこぷんぷん丸である。さらに、どうにもこの問題を解決することはできないようである。諦めよう。しかし、写真のファイルに付いている「撮影日」の情報はどうも正しいようである。なので、撮影日の情報がある写真については撮影日でリネームし、その情報がないものは(動画は撮影日の情報はない)仕方ないのでファイル作成日または編集日でリネームしよう。まあスクショとかなら多少順序が変わったところで別にいいもんね。
最後に、一応リネームの方法も書いておく。

ファイルの一括リネーム

マクロを書ければそれでいいが、僕は書けないので「Shupapan.app」というアプリを使う。少し不安定な気もするが、一応使えるのでおk。
注意のところでも述べたが、撮影日の情報があるもの(写真)についてはそれで、ないものについては作成日または編集日(一致していないファイルもあるようだが、どちらがいいのかわからない。)を用いてリネーム。
Shupapanの設定は以下の通り。

日付の種類:ファイルの撮影日(作成日or修正日)
日付の位置:指定文字列 + 日付にリネーム
追加する文字列:IMG_
書式:[year][mon][day]_[hour][min][sec]
「リネーム時に元の拡張子を保護(除外)」にチェック。

リネーム結果の例:IMG_20180922_225503.jpg

多くのファイルを一気にリネームしようとするとアプリが落ちるので、一度にリネームするファイルは数百個程度までにしておくのが無難。リネームし終わったら「全てクリア」を押してから次をしよう。



以上。長文スマソ。
ちなみに今回の画像書き出しでは、写真1300枚、スクショ920枚、その他少々でした。ソシャゲより学業を優先できてるということですね(写真の7割は書類か黒板)。スクショ枚数が写真枚数を超えたらソシャゲ廃人認定です。

vscodeのLaTeX環境で.auxなどの補助ファイルを自動で消去

目的

vscodeLaTeX Workshopを用いたLaTeX環境において、
.aux や .log などの補助ファイル(auxiliary files)を自動で消去するように設定する。

方法

「⌘ + , (or Ctrl + , )」でユーザ設定を開いて「latex-workshop.latex.clean」と検索。
Latex-workshop › Latex › Clean: Enabled」にチェックを入れる。

または、settings.jsonの { } の中に

"latex-workshop.latex.clean.enabled": true

を追加。設定が既に複数ある場合は行末にカンマ" , "で区切る。

これでLaTeXをタイプセットすると、タイプセットが完了した後、自動で補助ファイルが消去される。
ただし、デフォルトだと .synctex.gz や .dvi は消去されないので、それらを追加した

"latex-workshop.latex.clean.fileTypes": [
  "*.aux",
  "*.bbl",
  "*.blg",
  "*.idx",
  "*.ind",
  "*.lof",
  "*.lot",
  "*.out",
  "*.toc",
  "*.acn",
  "*.acr",
  "*.alg",
  "*.glg",
  "*.glo",
  "*.gls",
  "*.ist",
  "*.fls",
  "*.log",
  "*.fdb_latexmk",
  "*.dvi",
  "*.synctex.gz"
]

を、さらに settings.json に追加。


以上。