<commit_before>---
layout: post
title: "osx"
date: 2021-02-16
excerpt: "mac osxで設定しておくべき項目とインストールするべきソフトウェア"
tags: ["apple", "osx", "settings"]
config: true
comments: false
---

# mac osxで設定しておくべき項目とインストールするべきソフトウェア


## 設定しておくべき項目
 - Dockを自動的に隠す + Dockを右に寄せる
   - `[システム設定]` -> `[Dockとメニューバー]` -> `[Dockを自動的に表示/非表示]のチェックを入れる`
   - `[システム設定]` -> `[Dockとメニューバー]` -> `[画面上の位置]で右を選択`
 - メニューバーを自動的に隠す
   - `[システム設定]` -> `[Dockとメニューバー]` -> `[メニューバーを自動的に表示/非表示]のチェックを入れる`
 - 外部からのsshを許可する
   - `[システム設定]` -> `[共有]` -> `[リモートログイン]のチェックを入れる`
 - スクリーンセーバーを無効にする
   - `[システム設定]` -> `[デスクトップとスクリーンセーバー]` -> `[開始までの時間]` -> `開始しない,を選択`
   - `[システム設定]` -> `[省エネルギー]` -> `[ディスプレイをオフにするまでの時間]を, しないに設定`
 - ホットコーナーからMission Controlを起動する
   - `[システム設定]` -> `[Mission Control]` -> `[ホットコーナー]` -> `Mission Controlを割り当て`
 - Mission Controlの自動並び替えをOFFにする
   - `[システム設定]` -> `[Mission Control]` -> `最新の使用業況に基づいて操作スペースを自動的に並び替えを行う`をOFFにする
 - カーソルを大きくする
   - `[システム設定]` -> `[アクセシビリティ]` -> `[ディスプレイ]` -> `[カーソル]` -> `カーソルサイズを大きくする`
 - apple watchでPCのセキュリティを解除
   - `[システム設定]` -> `[セキュリティとプライバシー]` -> `[Apple Watchを使って...]にチェックを入れ、iPhoneとApple Watchをアクティブにする`
 - Bluetoothのアイコンをメニューバーに表示する
   - `[システム設定]` -> `[Bluetooth]` -> `[メニューバーにBluetoothを表示]にチェックを入れる`
 - 入力ソースを限定する
   - `[システム設定]` -> `[キーボード]` -> `[入力ソース]から必要がないキーボードを削除する`
 - launchpadの起動ショートカットを変更する
   - `[システム設定]` -> `[キーボード]` -> `[Launchpad]` -> `[Launchpadを表示]に(alt+d)等を割当`
 - windowの切り替えショートカットを`command + @`から変更する
   - chrome等を複数window開いているとき、windowの切り替えができると嬉しい
   - `[システム設定]` -> `[キーボード]` -> `[ショートカット]` -> `[キーボード]から[次のウィンドウを捜査対象にする]に(alt+tab)等を割り当てる` 
 - ctrl2回で音声入力になるのを変更する
   - `[システム設定]` -> `[キーボード]` -> `[音声入力]` -> `[ショートカット]` -> `衝突しにくいショートカットに変更`

---

## インストールするべきソフトウェア
 - `brew`: パッケージマネージャ
 - `iterm2`: ターミナル
 - `google chrome`: ブラウザ
 - `google日本語入力`: 日本語入力
 - `karabiner elements`: ショートカット変更
 - `wireguard`: VPNソフトウェア
 - `easyres`: 解像度のクイック変更
 - `magnet`: ショートカットでウィンドウ操作
 - `snap camera`: リモートワークに必要
 - `iriun webcam`: リモートワークに必要
 - `dropbox`: [DEPRECATED]
 - `alfred`: Spotlightを強化したアプリ
 - `haze over`: アクティブなウインドウ以外暗くする

---

## セキュリティ

### sudo時のパスワードを省略する
 - `sudo visudo`して以下の内容を末尾に書き込む

```config
%admin          ALL=(ALL) NOPASSWD:ALL
```

---

## ネットワーク

### インターフェースに複数のIPアドレスを設定する

**en0に192.168.3.129を追加**  
```console
$ sudo ifconfig en0 alias 192.168.3.129/24 up
```

**en0から192.168.3.129を削除**  
```console
$ sudo ifconfig en0 -alias 192.168.3.129
```

### routeの確認

```console
$ netstat -rn | less
```

### routeの変更

**defaultの変更**  
```console
$ route delete default
$ route add default 192.168.3.1
```

**特定のIPを違うgwへ**  
```console
$ route add -host <ip-addr> 192.168.3.1
```

---

## sshdでパスワード認証を無効化する

`/etc/ssh/sshd_config`に以下を追加

```
PasswordAuthentication no
UsePAM no
```

sshdを再起動する

```console
$ sudo launchctl stop com.openssh.sshd
$ sudo launchctl start com.openssh.sshd
```

---

## バッテリーの状態をCUIで取得する

```console
$ pmset -g batt
Now drawing from 'AC Power'
 -InternalBattery-0 (id=5767267)        61%; AC attached; not charging present: true
```

---

## windowsファイル共有(smb)をマウントする
 - CUI
   - 安定動作しない
   - `# mount -t smbfs -o nosuid,-D=777 //${USERNAME}:${PASSWORD}@{HOSTNAME}/$PATH $LOCAL_PATH`
   - `man mount`でもそれらしい項目がない
 - GUI
   - `Finder` -> `$K` -> リモートパスを入力して実行

## linuxのnfsをマウントする
 - CUI
   - マウント
     - `# mount -t nfs mount -t nfs -o resvport ${HOSTNAME}:${PATH} ${LOCAL_PATH}`
   - アンマウント
     - `# diskutil unmount force ${LOCAL_PATH}`
 - サーバサイドに期待する設定
   - `/etc/exports`のファイルにて`anonuid=1000,anongid=1000,insecure,all_squash`がパラメータとして入っている必要がある

---

## finder

### ターミナルの特定のpathからfinderを開く

```console
$ open .
```

### ターミナルの特定のファイルをosxのアプリで開く

```console
$ open <filename>
```
 - デフォルトで開くアプリを設定するには`ファイルを右クリック` -> `このアプリケーションで開く` -> `その他` -> `常にこのアプリケーションで開く`を選ぶ

---

## トラブルシューティング

### google日本語入力の切り替えが遅い場合
 - 権限が適切にアサインされていない可能性がある
 - [参考](https://www.ytyng.com/blog/mac-os-big-sur-google-japanese-input-full-disk-access/)
<commit_msg>add "osx" doc<commit_after>---
layout: post
title: "osx"
date: 2021-02-16
excerpt: "mac osxで設定しておくべき項目とインストールするべきソフトウェア"
tags: ["apple", "osx", "settings"]
config: true
comments: false
---

# mac osxで設定しておくべき項目とインストールするべきソフトウェア


## 設定しておくべき項目
 - Dockを自動的に隠す + Dockを右に寄せる
   - `[システム設定]` -> `[Dockとメニューバー]` -> `[Dockを自動的に表示/非表示]のチェックを入れる`
   - `[システム設定]` -> `[Dockとメニューバー]` -> `[画面上の位置]で右を選択`
 - メニューバーを自動的に隠す
   - `[システム設定]` -> `[Dockとメニューバー]` -> `[メニューバーを自動的に表示/非表示]のチェックを入れる`
 - 外部からのsshを許可する
   - `[システム設定]` -> `[共有]` -> `[リモートログイン]のチェックを入れる`
 - スクリーンセーバーを無効にする
   - `[システム設定]` -> `[デスクトップとスクリーンセーバー]` -> `[開始までの時間]` -> `開始しない,を選択`
   - `[システム設定]` -> `[省エネルギー]` -> `[ディスプレイをオフにするまでの時間]を, しないに設定`
 - ホットコーナーからMission Controlを起動する
   - `[システム設定]` -> `[Mission Control]` -> `[ホットコーナー]` -> `Mission Controlを割り当て`
 - Mission Controlの自動並び替えをOFFにする
   - `[システム設定]` -> `[Mission Control]` -> `最新の使用業況に基づいて操作スペースを自動的に並び替えを行う`をOFFにする
 - カーソルを大きくする
   - `[システム設定]` -> `[アクセシビリティ]` -> `[ディスプレイ]` -> `[カーソル]` -> `カーソルサイズを大きくする`
 - apple watchでPCのセキュリティを解除
   - `[システム設定]` -> `[セキュリティとプライバシー]` -> `[Apple Watchを使って...]にチェックを入れ、iPhoneとApple Watchをアクティブにする`
 - Bluetoothのアイコンをメニューバーに表示する
   - `[システム設定]` -> `[Bluetooth]` -> `[メニューバーにBluetoothを表示]にチェックを入れる`
 - 入力ソースを限定する
   - `[システム設定]` -> `[キーボード]` -> `[入力ソース]から必要がないキーボードを削除する`
 - launchpadの起動ショートカットを変更する
   - `[システム設定]` -> `[キーボード]` -> `[Launchpad]` -> `[Launchpadを表示]に(alt+d)等を割当`
 - windowの切り替えショートカットを`command + @`から変更する
   - chrome等を複数window開いているとき、windowの切り替えができると嬉しい
   - `[システム設定]` -> `[キーボード]` -> `[ショートカット]` -> `[キーボード]から[次のウィンドウを捜査対象にする]に(alt+tab)等を割り当てる` 
 - ctrl2回で音声入力になるのを変更する
   - `[システム設定]` -> `[キーボード]` -> `[音声入力]` -> `[ショートカット]` -> `衝突しにくいショートカットに変更`

---

## インストールするべきソフトウェア
 - `brew`: パッケージマネージャ
 - `iterm2`: ターミナル
 - `google chrome`: ブラウザ
 - `google日本語入力`: 日本語入力
 - `karabiner elements`: ショートカット変更
 - `wireguard`: VPNソフトウェア
 - `easyres`: 解像度のクイック変更
 - `magnet`: ショートカットでウィンドウ操作
 - `snap camera`: リモートワークに必要
 - `iriun webcam`: リモートワークに必要
 - `dropbox`: [DEPRECATED]
 - `alfred`: Spotlightを強化したアプリ
 - `haze over`: アクティブなウインドウ以外暗くする

---

## セキュリティ

### sudo時のパスワードを省略する
 - `sudo visudo`して以下の内容を末尾に書き込む

```config
%admin          ALL=(ALL) NOPASSWD:ALL
```

---

## ネットワーク

### インターフェースに複数のIPアドレスを設定する

**en0に192.168.3.129を追加**  
```console
$ sudo ifconfig en0 alias 192.168.3.129/24 up
```

**en0から192.168.3.129を削除**  
```console
$ sudo ifconfig en0 -alias 192.168.3.129
```

### routeの確認

```console
$ netstat -rn | less
```

### routeの変更

**defaultの変更**  
```console
$ route delete default
$ route add default 192.168.3.1
```

**特定のIPを違うgwへ**  
```console
$ route add -host <ip-addr> 192.168.3.1
```

---

## sshdでパスワード認証を無効化する

`/etc/ssh/sshd_config`に以下を追加

```
PasswordAuthentication no
UsePAM no
```

sshdを再起動する

```console
$ sudo launchctl stop com.openssh.sshd
$ sudo launchctl start com.openssh.sshd
```

---

## バッテリーの状態をCUIで取得する

```console
$ pmset -g batt
Now drawing from 'AC Power'
 -InternalBattery-0 (id=5767267)        61%; AC attached; not charging present: true
```

---

## windowsファイル共有(smb)をマウントする
 - CUI
   - 安定動作しない
   - `# mount -t smbfs -o nosuid,-D=777 //${USERNAME}:${PASSWORD}@{HOSTNAME}/$PATH $LOCAL_PATH`
   - `man mount`でもそれらしい項目がない
 - GUI
   - `Finder` -> `$K` -> リモートパスを入力して実行

## linuxのnfsをマウントする
 - CUI
   - マウント
     - `# mount -t nfs mount -t nfs -o resvport ${HOSTNAME}:${PATH} ${LOCAL_PATH}`
   - アンマウント
     - `# diskutil unmount force ${LOCAL_PATH}`
 - サーバサイドに期待する設定
   - `/etc/exports`のファイルにて`anonuid=1000,anongid=1000,insecure,all_squash`がパラメータとして入っている必要がある

---

## finder

### ターミナルの特定のpathからfinderを開く

```console
$ open .
```

### ターミナルの特定のファイルをosxのアプリで開く

```console
$ open <filename>
```
 - デフォルトで開くアプリを設定するには`ファイルを右クリック` -> `このアプリケーションで開く` -> `その他` -> `常にこのアプリケーションで開く`を選ぶ

---

## シェルスクリプトなどをosxの`app`にする
 - 特定のdockerやjupyterなどを起動するときのスクリプトとしてダブルクリックで開けるものを用意したい時など

### アプリ化するスクリプト

```shell
#!/usr/bin/env bash

APPNAME=${2:-$(basename "${1}" '.sh')};
DIR="${APPNAME}.app/Contents/MacOS";

if [ -a "${APPNAME}.app" ]; then
	echo "${PWD}/${APPNAME}.app already exists :(";
	exit 1;
fi;

mkdir -p "${DIR}";
cp "${1}" "${DIR}/${APPNAME}";
chmod +x "${DIR}/${APPNAME}";

echo "${PWD}/$APPNAME.app";
```

これをappifyという名前で保存し、以下のコマンドで作成できる

```console
$ appify script-name.sh "app-name"
```
 - [参考](https://mathiasbynens.be/notes/shell-script-mac-apps)
 

---

## トラブルシューティング

### google日本語入力の切り替えが遅い場合
 - 権限が適切にアサインされていない可能性がある
 - [参考](https://www.ytyng.com/blog/mac-os-big-sur-google-japanese-input-full-disk-access/)

{'fraction_non_alphanumeric': 0.19471324050035402, 'fraction_numerical': 0.02242152466367713, 'mean_word_length': 3.9648506151142353, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 93, 'https://': 3, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 12, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4417719', 'n_tokens_mistral': 5511, 'n_tokens_neox': 5188, 'n_words': 570}