ファイラー比較 2022年7月

MacとWindows11のファイラーを比較してみました。

複数タブを同時に表示する機能があればかなり便利です。

XtraFinderはM1 Mac, Big Surの環境ではうまくインストールできませんでした。Intel版で使用していたときの評価になります。

秀丸ファイラーClassicは今回比較した中では最も多機能かと思います。ただClassicと銘打つだけあって見た目は古風です。

Macでサブディスプレイにファイラーを表示するのであれば、今のところCommander One 3つとFinder 1つ(アプリ起動&マウント解除用)の組み合わせがベストでしょうか。

Commander Oneは横縞模様とテキストの色をFinderに合わせて統一感を持たせました。Cocoa風に色付けできるところが高評価です。今のところ無料の機能制限版で問題なく設定できています。

Commander Oneの色設定
横縞1 RGB(31, 31, 31)、横縞2 RGB(38, 38, 38)、テキスト RGB(223, 223, 223)

一つ難点は日本語訳が小慣れていないところです(ディレクトリ→ディレクトリィ,フォルダ→ホルダー,コピー→コピィなど)。頑張って訳してくれていますが、これだったら英語表記の方がいいように感じました。なおこのアプリはSwiftで書かれており、サイズは57.1MBと大きめです。

Windows11の場合は秀丸×3とExplorer×1にします。

Commander One ×3 & Finder ×1

Mac FinderとWindows ExplorerのGUI比較

久しぶりにWindows11でプログラムを書こうと起動したはいいものの、見るからに生産性の低いExplorerのGUIでやる気が削がれました。

MacのFinderと比べると一目瞭然です。以下、デフォルト設定の評価になります。

1.上部に無駄な空間が多い
2.フォルダやファイルの間隔がコンパクトビューにしても微妙に広い
3.フォントサイズが微妙に小さい
4.上部とファイル表示部を隔てるやけに目立つ白い横線(細い灰色にすべきでは) など

Window11になってどうしようもなく劣化しました。フルHDではなく4K画面であれば多少は見やすくなるのでしょうか。

かつての卓駆のようなファイラーを作ろうかと本気で考えましたが、秀丸ファイラーClassicというシェアウェアを見つけたので試してみることにしました。

Windows11 Explorer(コンパクトビュー)
Mac Finder

[C++] 作業ディレクトリの確認・変更

#define DATA_DIR "/dir" // 変更後の作業ディレクトリ
#define PATH_SIZE 512

#include <iostream>
#include <unistd.h>

using std::cout; using std::endl;

// 変更前の作業ディレクトリ確認
char tmp[256];
getcwd(tmp, 256);
cout << "Current working directory: " << tmp << endl;

// 作業ディレクトリ変更
chdir(DATA_DIR);

// 変更後の作業ディレクトリ確認
getcwd(tmp, 256);
cout << "Current working directory: " << tmp << endl;

[C++] const char* とconst wchar_t*の相互変換

Python/C APIでよく使うため関数をリサーチしました。2011年のStackOverflow英語版等にいい関数がありましたので拝借します。なおサロゲートペアには対応していません。

サロゲートペア:1つの文字に対して2つの文字コードを使って表される文字。𠀋 𡈽 𡌛 𡑮 𡢽 𠮟 𡚴 𡸴 𣇄 𣗄など。

const wchar_t* GetWC(const char* c) {
    const size_t cSize = strlen(c)+1;
    wchar_t* wc = new wchar_t[cSize];
    mbstowcs (wc, c, cSize);

    return wc;
    delete [] wc;
}

--------------------------------------------------
// stringへの変換(charは"string.c_str()")

std::string GetStr(const wchar_t* c) {

  std::string tmps;

  if (c == nullptr)
    return tmps;

  size_t sz = wcslen(c);

  tmps.reserve(sz*2);

  const size_t CNT_MAX = 50;
  char tmpc[CNT_MAX];
  wchar_t tmpw[CNT_MAX];

  const wchar_t* p = c;
  while (*p) {
    wcsncpy(tmpw, p, 1);
    tmpw[1] = L'\0';
    p += 1;
    
    wcstombs(tmpc, tmpw, CNT_MAX);
    tmps += tmpc;
  }
  
  return tmps;
}

setlocale(LC_ALL, ""); // GetC関数使用の際に必要

マルチバイト文字対策とは言えワイド文字wchar_tの存在は何ともやっかいです。

参考サイト
参考サイト2

[macOS] キーチェーンのパスワードを急に要求しだした

[M1 Mac, Big Sur 11.6.5]

codesignコマンド実行時に急にパスワードを要求するようになりました。

以下の方法で解決しました。

1.macOSのログインパスワードをシステム環境設定”ユーザとグループ”から設定し直す。今回はこれまでと同じパスワードを再設定しました。

2.キーチェーンアクセスを起動し、システムのキーチェーンアクセスを開く。

3.Mac Developer ID Applicationの秘密鍵を右クリックし、”情報を見る”を選択。

4.”アクセス制御”タブをクリックし、”これらのアプリケーションによるアクセスを常に許可”のところに”/usr/bin/codesign”を登録する。

これでうまくいきました。なお解決後、秘密鍵の内容を確認すると登録したはずのcodesignは消えていました。それでも問題ありません。

macOSに関する奇妙な現象は枚挙にいとまがなく、今では怒りもわかず気にならなくなりました。Appleに報告してもまず対応しないので、程よい距離感で付き合っていくことにしました。

[VSCode] PlantUMLのプレビュー表示ができない

[M1 Mac, Big Sur 11.6.5, VSCode 1.67.1]

PlantUMLのプレビュー表示のショートカットキーはoption + Dですが、偏微分記号∂が入力されてしまいます。

macOS Big Surのキーボードビューアを確認すると確かに∂がアサインされています。つまりショートカットキーの設定が不適切です。

VSCodeのキーボードショートカット設定でshift + command + Dに変更しました。

US配列だったらoption + Dで正常にプレビュー表示できるのでしょうか?このキーはWindowsでしか使えない気もします。

キーボードビューア

[VSCode] settings.jsonのファイルパス

[M1 Mac, Big Sur 11.6.5, VSCode 1.67.1]

Macの場合、settings.jsonは以下のパスに配置されています。

使い始めた頃はアプリからの呼び出し方が分からなくて苦労しました。

結構深いところにあるので、やはりアプリから呼び出す方が早いでしょう。左下の管理ギアにある”設定”を選択し、右上に出現する”ページをめくるような”マークをクリックします。

$HOME/Library/Application Support/Code/User/settings.json

[macOS] プログラミング環境の移行 VSCode, Homebrew, PyPI(pip)

TimeMachineなしでMontereyからBig Surに2回目のダウングレード中です。かなキー連打の日本語変換機能をAppleScriptで実装できなかったのとキーボード(Logicool K375s)が不調になったことが主な理由です。

TimeMachineデータは残しておらず、いい機会なので一から構築しています。

今はUSBストレージで作業していますが、iCloudやGitHubを介してスクリプトで自動化もできそうです。ただ今のところiCloudは同期が遅くて正直使えないです。

1.VSCode[エディタ]

ホームディレクトリの.vscodeディレクトリをコピーするだけです。

2.Homebrew[パッケージ管理]

1)移行元でBrewfileを作成する。

brew bundle dump

2)ホームに作成されたBrewfileを移行先のホームにコピーする。


3)移行先にHomebrewをインストール後、以下コマンドでデータを取り込む

# Homebrewのインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# データの取り込み
brew bundle

3.PyPI(Python Package Index) [Pythonパッケージ管理]

1)移行元でrequirements.txtを作成する。テキストファイル名はなんでも可。

pip freeze > requirements.txt

2)移行先のホームにコピーする。

3)移行先でrequirements.txtを取り込む。

pip install -r requirements.txt