macOS High Sierra の「Month 13 is out of bounds」エラーに対処する(β)
NOTE: Mac初心者が成長するためのぼっちアドベントカレンダー・21日目
WIP: このエントリで紹介している内容には開発者向けbeta版の話題を含みます
前置き: 筆者のマシンに起こっていたこと(2017-12-21現在)
今回のエントリを書く背景には大きくふたつの問題があり、今回はひとつめの問題について対処した話をします。
- 大した作業をしているわけではないのにハング→再起動を繰り返す
- 「艦隊これくしょん-艦これ-」と「刀剣乱舞-ONLINE-」を同時にGoogle ChromeでプレイするとCPU使用率がすごく高くなる
macOS High Sierraで起きていた(いる)「Month 13 is out of bounds」エラー
元々「滅多にフリーズしない」と言われているMacをやたらハングさせる筆者ですが、12月上旬は5日に1回ペースだった異常終了がどんどん頻繁になっていき、ついには12月20日の時点でブラウザ上での作業が困難になりました。
Macのログメッセージを確認する
Macでは「コンソール」を使用することでログメッセージを確認することができます。
最初はSystem.logに適当にあたりをつけて再起動直前の状況を知ろうと思っていたのですが、とにかくものすごい勢いで「Month 13 is out of bounds」というエラーが吐かれていることを発見しました。
「Month 13 is out of bounds」エラー
これはCore Foundationに作り込まれているバグらしく、スペックがあまりに低いわけでもない限りそこまで著しくCPU使用率を逼迫させていたわけではないようです。
ただ筆者が使っているマシンがCore i5/メモリ8GBという微妙なスペックであること、常駐アプリが多いこと、Chromeで大量にタブを開いて作業をしていることなどが重なり、頻繁な再起動に繋がったのではないかと考えています。
とりあえずの対応としては以下が挙がっています。
- システム時間を2017年12月以前に戻す
- UserEventAgentをkillする
システム時間をいじるのは影響範囲が大きそうなのでやりたくないのと、UserEventAgentが何をやっているプロセスなのかググってもよくわからなかったのとで、他の対応を取ることにしました
対応1: mdworkerを止める
mdworkerというSpotlight検索のプロセスが、UserEventAgent以外で頻繁にエラーログに出現していたので、元々Spotlight検索をそれほど使っていなかったこともあり、マシン内を検索しないように設定しました。
対応2: メモリを意識的にクリアする
下のエントリでMagicanLiteというアプリを紹介しています。常にCPU/メモリ使用率を意識してチェックするようにし、頻繁にメモリをクリアするようにしたのですが、「艦隊これくしょん」で遠征に出すことすらつらいという状況でした。
あとMagicanLiteがすげー勢いで「Month 13 is out of bounds」を吐く……
対応3: ChromeHelperをできるだけ立ち上げないようにする
Google Chromeを使っているとChromeHelperというプロセスが実行されます。
これがCPUもメモリも食う上にタブの数だけ(?)増えるという状態だったので一部の作業というか、連隊戦イベント絶賛開催中の「刀剣乱舞-ONLINE-」をSafariで実行するようにしました(薄々そんな気はしていたのですが案の定あまり意味はありませんでした。これについては明日書きます)。
また、できるだけタブを開きっぱなしにしないようにしましたがこれもまた限度がありました。
今検索したら良さげなコマンドがあったので明日試そう。
対応4: 「macOS High Sierra 10.13.3 beta 2」をインストールする
タイムリーなことに12月19日に開発者向けbeta版がリリースされていたので、完全に力技なんですけどインストールしました。
夫のアカウントを使ったので確証はないんですけど、以下の条件を満たす必要があるかもしれません。
- Apple Developer Accountを持っている
- メンバーシップを購入している
結論: 正式リリースはよ
とりあえずこれを書いている現状、理不尽な再起動は起こっていませんが、Google Chromeが阿呆ほど重いのと、Beta版なので(「Month 13 is out of bounds」でない)エラーログが尋常じゃない勢いで吐かれています。
はよう正式リリースを頼む。
おわりに
図らずもアドベントカレンダーのネタができてしまったことを嘆く筆者のツイートです。
Macがハングと再起動を繰り返すのでコンソール見たら「Month 13 is out of bounds」っていうJSのDate関数で失敗したみたいなログが大量に吐かれててどう考えてもこれ https://t.co/wAwMT2RBG7
— wifeofvillon (@wifeofvillon) 2017年12月20日
システム日付を11月に戻すとかリスキーすぎてやりたくないんだけどパッチはまだか
— wifeofvillon (@wifeofvillon) 2017年12月20日
図らずもアドベントカレンダーのネタができてしまったな……
— wifeofvillon (@wifeofvillon) 2017年12月20日
macが作業できないレベルで異常終了するの本当無理
— wifeofvillon (@wifeofvillon) 2017年12月20日
UserEventAgent at 100% CPU after security update | Official Apple Support Communities https://t.co/QKSKFiw3nl
— wifeofvillon (@wifeofvillon) 2017年12月21日
>StartCalendarInterval属性を使用したplistファイルを削除して再起動しました。これでOKです。
それ本当にOKなのかな???
Macでフルスクリーン化(最大化)した複数のアプリをひとつのディスプレイに表示させる方法
NOTE: Mac初心者が成長するためのぼっちアドベントカレンダー・20日目
フルスクリーン化(最大化)したふたつのアプリをひとつの作業領域(ディスプレイ)に表示させる
先日、Mission Controlを使って複数の作業領域を使う方法について書きました。
今日は「絶対できること知らない人いるって!」と言われたので、フルスクリーン化したふたつのアプリをひとつの作業領域に表示させる方法を紹介します。
上の表現だと意味不明だと思うんですけど要するにこういうこと(Atom+Trello)
複数のアプリをひとつの作業領域に表示する
実現方法は次の通りです。
- (前提:ふたつのアプリをフルスクリーン表示にする)
- Mission Controlを表示する
- 片方のアプリをもう片方のアプリにドラッグ&ドロップする
解除方法
何気なくやってできたのでちゃんと調べていないのですが、筆者は片方のアプリのフルスクリーン化を一旦解除することで元に戻しています。
余談
これ無限にアプリ追加していけるのかと思ったらそうでもなかった。
おわりに
ちなみにネタ提供者は曲面ディスプレイ使いでした。はぁなるほど
LG モニター ディスプレイ 29UC88-B 29インチ/曲面 ウルトラワイド/IPS 非光沢/HDMI×2、DisplayPort/スピーカー内蔵/高さ調節対応
- 出版社/メーカー: LG Electronics Japan
- 発売日: 2016/03/24
- メディア: Personal Computers
- この商品を含むブログを見る
LG モニター ディスプレイ 38UC99-W 37.5インチ/曲面 UltraWide(3840×1600)/IPS 非光沢/USB Type-C、HDMI×2、DP/スピーカー/高さ調節
- 出版社/メーカー: LG Electronics Japan
- 発売日: 2017/02/10
- メディア: Personal Computers
- この商品を含むブログを見る
Macの「カレンダー」にGoogleカレンダーの内容を同期させる
NOTE: Mac初心者が成長するためのぼっちアドベントカレンダー・19日目
Macの「カレンダー」にGoogleカレンダーの内容を同期させる
生活基盤の結構な割合をGoogleとAmazonに握られているので「全部ブラウザでいいじゃん」と思っていました。
ただ次のエントリを書いたときに「通知センターって実は超便利なのでは?」と思ったのと、Twitterで「ネタがない」と呻いていたら@rashita2さんからお題を頂戴したので、Googleカレンダーを「カレンダー」で読み込んでみることにしました。
右の通知欄とか、Dockの設定とか、システム環境設定の何かとか #だんだん雑に
— 倉下 忠憲 (@rashita2) 2017年12月19日
AppleアカウントにGoogleアカウントを連携する
ログイン中のAppleアカウント(で合ってる?)と連携しているインターネットアカウントはシステム環境設定 > インターネットアカウントの「アカウント」タブで確認・追加・削除できます。
今回はタイトルに「Googleカレンダーの内容を同期させる」と大きく出ましたが、もちろんノータイムで変更が反映される訳ではなく定期的にReadして反映してくれるようです。その時間間隔もここで設定できます。
「カレンダー」からGoogleアカウントに接続する
「システム環境設定」を開かなくても「カレンダー」から直接Google他のアカウントに接続することができます。
「カレンダー」を開き、カレンダー > アカウントを追加をクリックすると、接続できるWebサービスの候補が表示されます。
「Google」を選択し「続ける」と、Googleのログイン画面が表示されます。
Googleアカウントにログインすると、どのアプリケーション連携するかを訊かれるので、今回は「カレンダー」を選びます(ここで「メール」も選んでおくと普通にGmailの同期も始まる)。
この同期作業をしている間、16時に「テスト」という予定をブラウザ経由で追加しておいたのですが、ちゃんと反映されましたね。
通知センターにも反映されました。
おわりに
はるか昔SIerに入社したときにある先輩のすぐ「紐付ける」って言葉を使うところが(その先輩のことは今でも五本の指に入る程度には尊敬してるんですけど)好きじゃないなぁと思っていたのに、自分も「紐付ける」おばさんになってしまったことに気付きました。
慌てて別の用語に変更しましたが漏れがあるかもしれません。
Macのターミナルプロンプト名($より前の文字列)を変更する
NOTE: Mac初心者が成長するためのぼっちアドベントカレンダー・17日目
Macのターミナルプロンプト名を変更する
ターミナルの$より前の文字列の呼び方
Macに限らずターミナル(コマンドプロンプト)の$より前の文字列って「プロンプト」って呼ぶらしいですよ
[wifeofvillonnoMac-mini:~ wifeofvillon$
コンピューターにコマンドを入力する場所を表す画面上の表示。特に、MS-DOSやUNIX、Windowsのコマンド プロンプトでのコマンド入力表示を指す。
プロンプト名の変更手順
macOSのプロンプトのデフォルトは(Mac miniの場合)以下の通りになっています。
{user_name}noMac-mini: {current_path} {user_name} $
これを次のような文字列に変更しようと思います。
{hh:mm:ss} {current_path} $
変更手順は以下の通りです。
/etc/bashrc
の記述を変更する/etc/bashrc
の内容を読み込む
/etc/bashrc
の記述を変更する
bashrcをsudoで開きます。エディタは何でもいいと思うんですけど使い慣れたvimで行きましょう。
$ sudo vim /etc/bashrc
PS1
という変数があるので、その値を変更します。以下によく使いそうなオプションを記載します。
オプション | 意味 |
---|---|
\h | ホスト名 |
\W | 現在のディレクトリ名 |
\w | 現在のディレクトリ(フルパス) |
\u | 現在のユーザー名 |
\d | 曜日 月 日の形式の日付 |
\t | 時刻 HH:MM:SS 形式(24時間) |
\s | シェル名 |
そのほかのオプションについてはこちらのエントリが詳しいです。
:wq!
で変更内容を保存します。
/etc/bashrc
の内容を読み込む
変更直後は設定が反映されないので、変更内容を再読み込みします。
$ source /etc/bashrc
実行ログと設定内容はこんな感じです。
おわりに
すごく無理矢理やってる気がしてならないので、この企画全体に言えることなんですけど本当に自己責任でお願いします。
ニーアオートマタ ブリングアーツ 機械生命体セット(2体セット) PVC製 塗装済み可動フィギュア
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2018/04/30
- メディア: おもちゃ&ホビー
- この商品を含むブログ (1件) を見る
NieR: Automata Character Figure ヨルハ 九号S型 YoRHa No.9 Type S
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2017/10/30
- メディア: おもちゃ&ホビー
- この商品を含むブログ (1件) を見る
MacでIPアドレスを調べる
NOTE: Mac初心者が成長するためのぼっちアドベントカレンダー・16日目
MacでIPアドレスを調べる
ターミナルでifconfig
する
Windowsで端末のIPアドレスを知りたいとき、筆者はコマンドプロンプトを立ち上げてipconfig
を打っていたんですけど、Macのターミナルで同じことをする場合ifconfig
を打てばいいらしいです。
この企画のテーマを踏まえると「らしい」止まりなのは本当よくないと思うんですけど、正直ネットワーク方面は問題視されるレベルでわからないので参考にしたエントリを貼るだけにします。
システム環境設定から確認する
プライベートIPアドレスはシステム環境設定 > ネットワークから確認できます。
ねっとりわーく……?
もっと詳しいアドレスはネットワーク > 詳細で確認できます。
おわりに
偶然知ったんですけどLinuxではifconfig
コマンドの使用は非推奨になったらしいですよ
そして筆者はもうすこしネットワークに興味を持った方がいいと思う
- 作者: 三上信男,Gene
- 出版社/メーカー: 技術評論社
- 発売日: 2010/05/07
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 2回
- この商品を含むブログ (3件) を見る
Scrapboxのプロフィール画像を変更する方法
概要
Scrapboxのアイコン記法
Scrapboxにはアイコン記法が実装されている。
これを利用することでプロフィール画像を変更することができる。
変更手順
プロフィール画像を変更するには以下のように作業する。
- プロジェクトにプロフィールページを作る
- プロフィールページの画像を変更する
プロジェクトにプロフィールページを作る
表示ユーザー名も変更したい場合
ナビゲーションバー右上のMenu > Edit profile
をクリックするとユーザー名を編集できる画面が開く。
https://scrapbox.io/settings/profile
ユーザー名を変更するとプロフィールページ(この場合はhttps://scrapbox.io/atom-docs-ja/wifeofvillon)が自動生成される。
デフォルトではログインに使用したGoogleアカウントのプロフィール画像が使用されるが、プロフィールページの画像URLを変更すると新しいプロフィール画像として反映される。
表示ユーザー名を変更しない場合
タイトルが現在のユーザー名のページを作成し、好きな画像を貼る。
プロフィール画像をアイコンとして使用する
設定画面でもヒントがある通り、[${username}.icon]
で本文中に自分のプロフィール画像をアイコンとして挿入できる。
Macのスクリーンショット(スクリーンキャプチャ)の保存先を変更する
NOTE: Mac初心者が成長するためのぼっちアドベントカレンダー・15日目
Macのスクリーンショット(スクリーンキャプチャ)の保存先
久々にサブのMacBook Airを開いたらデスクトップが大惨事になっていたのでスクリーンショットの保存先を変更することにします。
スクリーンショットの保存先を確認するには
スクリーンショットの保存先とか諸々の設定はターミナルを立ち上げてdefaults read <domain>
を実行すると読めます。
ただスクリーンショット(domainはcom.apple.screencapture)の設定は目grepした限り(初期値だと)defaultsで吐いてくれるリストに含まれておらず、defaults read com.apple.screencapture
を実行すると次のように怒られます。
Domain com.apple.screenshot does not exist
スクリーンショットの保存先を変更する
# 保存先を指定する $ defaults write com.apple.screencapture location ~/Pictures # 結果を確認 $ defaults read com.apple.screencaptures 2017-12-18 21:30:46.157 defaults[6932:680213] Domain com.apple.screencaptures does not exist -bash 21:30:46 ]defaults read com.apple.screencapture { location = "/Users/wifeofvillon/Pictures"; } # 設定を反映 $ killall SystemUIServer
保存先の変更についてはこちらを参考にしました。
おわりに
参考にしたエントリで
変更したディレクトリからデフォルトの設定(デスクトップ)に戻す場合は以下のコマンドを実行します。
というふうに、保存先をデスクトップに戻す場合にdefaults delete <domain>
の使用する方法が提示されているのですが、「初期状態に戻したい」のでなく「デスクトップに再指定したい」のであれば
$ defaults write com.apple.screencapture location ~/Desktop
というふうに指定し直したほうがいいと個人的には思います。
というのはdefaults delete <domain>
するとそのdomainまるごと設定から削除するようなので、後日defaults read
してもまた「存在しないよ」と怒られるからです。
あと、保存先(location)の他にファイルの種類(type)とかファイル名(name)も同じ方法でいじれるらしいです。
ということを考えるとそもそもdefaults delete <domain>
自体よっぽどのことがない限り使わない方がいいのではと思います。
実行はあくまでも自己責任でよろしくおねがいします。