Good UX Life

人生のUXを高めるための知見

MacからWindowsにSSH接続する方法

Macでの準備

ターミナルを開きssh-keygen -t rsaを実行します。~/.sshフォルダがない場合は事前に作ってください。
次にssh-keygen -t rsaを実行し設定したいパスワードを入力します。これで~/.ssh/id_rsa_pubというファイルが作られます。

Windowsでの準備

qiita.com

とても分かりやすい記事がありましたのでこちらの手順にしたがって設定してください。
この記事の中の"4.Linuxサーバーの公開鍵を設定する"の部分で必要なid_rsa.pubは先ほどの手順で作ったものを利用してください。

SSH接続

SSH接続はssh <Windowsユーザ名>@<IPアドレス>を実行しパスワードを入力することができます。
Windows機のIPアドレスがわからない場合はコマンドプロンプトPowerShellipconfigを実行するとIPv4アドレスを確認できます。

MacとWindowsでフォルダ共有をする方法

MacWindowsでフォルダ共有の設定をしたのでまとめます。

Mac側の設定

support.apple.com

この記事の通りに設定すれば大丈夫です。

Windows側の設定

ファイルエクスプローラを開きコントロール パネル¥システムとセキュリティ¥システムをコピペして移動して、ワークグループ名が"WORKGROUP"になっているのを確認してください。なっていなければMac側で設定するワークグループ名をその名前にしてください。

MacからWindowsへアクセス

Finderを開き、移動 > サーバへ接続をクリックしてsmb://<Windows PCのIPアドレス>を入力しマウントするボリュームを選択します。

WindowsIPアドレスを調べる方法

コマンドプロンプトPowerShellを開きipconfigを実行するとIPv4アドレスを確認することができます。

目的のフォルダをマウントできない

私が設定した時、Dドライブしかマウントすることができませんでした。
ファイルエクスプローラからPCを開きローカルディスク(C:)を右クリックして、プロパティ > 共有 > 詳細な共有を開きこのフォルダーを共有するにチェックをいれることでマウントできるようになります。

WindowsからMacへアクセス

WindowsからMacへのアクセスは簡単でネットワークフォルダの中にMacのフォルダがあるのでそこからアクセスできます。 しかしこのままではネットワークドライブとして認識されていないため、右クリックしてドライブ名を決めてネットワークドライブに割り当てをクリックします。

それぞれのパス

Macでの共有フォルダのパスは /Volumes/<共有フォルダ名>で、Windowsでの共有フォルダのパスは<自分で設定したドライブ名>:¥です。

Nushellのソースコードを軽く読んだまとめ

Nushellのソースコードを読んだので少しだけまとめます。

実行時引数

➜ nu -help
nushell 0.5.0

USAGE:
    nu [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
        --debug <debug>...        
        --develop <develop>...    
    -l, --loglevel <LEVEL>         [possible values: error, warn, info, debug, trace]

-hでhelp表示、-Vでバージョン表示。オプションとして--developと-loglevelと--debugがありますね。(なぜかVSCodeのターミナルに設定するときは--loglevelがrequiredされてた。)

指定がない場合はWarnが設定され、nu本体が実行されます。

コマンド一覧

コマンド一覧はhelp commandsで確認することができます。

個々の説明はhelp rmといった感じで見ることができます。

history fuzzy search

Ctrl-rで履歴を表示することができます。Enterで実行、tabで編集

Configファイル

configファイルはmacOSでは$HOME/Library/Application Support/nu/config.tomlにあります。他のOSでは分かりませんが、env | get configでconfig.tomlのパスを調べることができます。 path = ["hoge/huga", "huga/hoge"]という形式でPathを設定することができます。 envも設定できるが、tomlの書き方がわからない。。テーブルと配列で書いてみたけどクラッシュした。 ちなみに下記のコマンドで直接パスを追加することもできます。

> echo $nu:path | prepend "/my/new/directory" | config --set_into path

> echo $nu:env | insert GREETING hello_world | config --set_into envでenvに追加できると紹介されているが、insertコマンドがないと怒られてしまう。。 www.jonathanturner.org

いろいろ

プロンプトフォーマット

プロンプトは以下のフォーマットで表示される。 /Users/hoge(master)>といった形ですね。

let prompt = &format!(
            "{}{}> ",
            cwd,
            match current_branch() {
                Some(s) => format!("({})", s),
                None => "".to_string(),
            }
        );

また読んだら追記します。

Rust製ShellのNushellをVSCodeのデフォルトシェルにする

Rustが大好きなのでRust製モダンシェルのNushellを使おうと思い、VSCodeのデフォルトシェルにしようとしたところつまづいたのでメモをのこしておきます。

導入

導入方法は公式ガイドに従いそれぞれインストールしてください。 book.nushell.sh 私はHomebrewを使いました。

brew install nushell

*追記 Homebrewからインストールすると古いバージョンしかダウンロードできなかったため、releaseページからバイナリをインストールしました。

github.com

ターミナルのデフォルトシェルにする

/etc/shellsにパスを追加し、chsh -s /usr/local/bin/nuをすることでデフォルトシェルにすることができます。

VSCodeのデフォルトシェルにする

settings.jsonを開き、"terminal.integrated.shell.osx": "/usr/local/bin/nu"に変更します。
しかし、これだけでは起動時に引数に--loglevel <LEVEL>が無いよ!!と怒られてしまいます。
なので、"terminal.integrated.shellArgs.osx": ["--loglevel", "error"]を追加します。
loglevelは["error", "warn", "info", "debug", "trace"]の5つが用意されていますが、Readmeに説明が書いていないのでソースコード読んでみないとわかんないです。自分はとりあえずerrorにしておきます。

追記

ソースコード見てたらloglevelはlog crateのフィルターってことがわかりました。

docs.rs

cargo-fmt(rustfmt)の設定方法

rustfmt時のタブサイズを2に変更したときにてこづったのでメモしておきます。

rustfmtの設定ファイルのパス

github.com rustfmtのドキュメントにも書いているんですけど、それぞれのOSのグローバルコンフィグディレクトリ以下にrustfmtフォルダを作り、その中にrustfmt.tomlを用意すれば良いようです。

各OSのグローバルコンフィグディレクトリはdirsライブラリのconfig_dir関数で取ってきており値は以下のようになっています。

Platform Value Example
Linux $XDG_CONFIG_HOME or $HOME/.config /home/{{user_name}}/.config
macOs $HOME/Library/Preferences /Users/{{user_name}}/Library/Preferences
Windows {FOLDERID_RoamingAppData} C:\Users{{user_name}}\AppData\Roaming

docs.rs

設定ファイルの作成

私の場合macOsなので下記のコマンドを実行しファイルを作りtab_spaces = 2と書き込みます。

mkdir ~/Library/Preferences/rustfmt
touch ~/Library/Preferences/rustfmt/rustfmt.toml

その他の設定法はドキュメントを参照してください。

ZshでCargo, rustupの補完を有効にする

ZshでCargoとrustupの補完を効かせるようにします。

最低限の補完

.zshrcに以下を追加して補完機能を有効にします。

autoload -Uz compinit

compinit -u

Zsh補完の仕組み

zshは$fpath, $FPATHという環境変数を持っており、このパスに含まれる補完ファイルを読み込みます。
なので自分は~/.zsh/completionsを作りパスを通してここに補完ファイルをおいています。

パスの通し方は.zprofileに下記のコードを追加するとできます。

fpath=(~/.zsh/completions $fpath)

Cargoの補完

Cargoのzsh補完ファイルは

~/.rustup/toolchains/{toolchain名}/share/zsh/site-functions/_cargo

です。これをコピーするなりシンボリックリンク作るなりでパスの通っているディレクトリに移動しましょう。

rustupの補完

rustupは以下のコマンドを実行することで補完ファイルを作成することができます。(> 以下は自分のディレクトリを設定してください)

rustup completions zsh > ~/.zsh/completions/_rustup

以上でCargoとrustupの補完設定完了です。快適なRust Lifeをお送りください。

tips: shellの再起動コマンド

 exec $SHELL -l

Web版のApple Music(ベータ版 )が公開開始!

Apple MusicがWeb上で利用することができるようになりました。

beta.music.apple.com

こちらでログインすればすぐに使うことができます。
なんでもブラウザ上で完結させたい私にとっては最高です。

バグと思われるもの

  • 次に再生、後に再生ができない

しばらく使ってみてアプリ版とWeb版での違いをまとめたいと思います。