20211124のMacに関する記事は4件です。

最新のmacOSをインストールしたくない時の対処法・過去のOSのインストール方法

はじめに 業務で使用しているPCはセキュリティの関係上すぐに最新のOSにしてはいけないが、1つ前のバージョンなら出来るのになーという時がある。 結論を言うと希望のOSをインストールする為のページが準備されていた。 以前のバージョンの macOS を入手する このページのMac で Safari を使って macOS をダウンロードするからAppSotre経由でダウンロード可能。 ちなみに、Xcode13を使いたいが、Montereyは会社的にまだNGということでBig Surに移行。 最小要件とサポートされるSDKについてはこちら。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

findコマンドで一部のディレクトリを除外した際に得た理解

findコマンドで一部のディレクトリを除外するためにpruneというオプションを利用した。このときに得た理解をメモしておく。 「find ディレクトリ 除外」で検索するとfindコマンドとpruneオプションを利用したテクニックが手に入る Googleで「find ディレクトリ 除外」などで検索するとpruneオプションを利用したコマンド例が挙がってくる。 #「test-」から始まるディレクトリを除外し、一覧する find . -type d -name "test-*" -prune -o -print 実行例を検証 実行は前提としてこのようなディレクトリ構成を想定し実行している そして、findコマンドを実行してみる。 $ find . -type d -name "test-*" -prune -o -print . ./file2.txt ./file1.txt ./hoge-dir1 ./hoge-dir1/file2.txt ./hoge-dir1/file1.txt ./hoge-dir2 ./hoge-dir2/file2.txt ./hoge-dir2/file1.txt ./hoge-dir3 ./hoge-dir3/file2.txt ./hoge-dir3/file1.txt 確かに、test-*から始まるディレクトリが除外された一覧が取得出来る。 新しい疑問 「-o -print」って何だ このとき、「findコマンドでpruneオプションを利用すれば、特定のディレクトリが除外できるんだ!」と理解したのだが、新しい疑問が生まれ混乱した。「-o -printオプション」はなんで必要なんだ。 prune オプションは除外するオプションではない 結果的にはpruneオプションを利用することで要求を解決出来るのだが、この時に「pruneオプションは、除外するためのオプション」という理解をするのは混乱を招く。 前提 以下のような構成のディレクトリを前提に話を進めている。 $ tree . ├── file1.txt ├── file2.txt ├── hoge-dir1 │   ├── file1.txt │   └── file2.txt ├── hoge-dir2 │   ├── file1.txt │   └── file2.txt ├── hoge-dir3 │   ├── file1.txt │   └── file2.txt ├── test-dir1 │   ├── file1.txt │   ├── file2.txt │   ├── test-dir1 │   │   ├── file1.txt │   │   ├── file2.txt │   │   ├── test-file1.txt │   │   └── test-file2.txt │   ├── test-file1.txt │   └── test-file2.txt ├── test-dir2 │   ├── file1.txt │   ├── file2.txt │   └── test-dir │   ├── file1.txt │   ├── file2.txt │   ├── test-file1.txt │   └── test-file2.txt └── test-dir3 ├── file1.txt ├── file2.txt └── test-dir3 ├── file1.txt ├── file2.txt ├── test-file1.txt └── test-file2.txt pruneオプションは真を返す findコマンドでpruneオプションを付加した場合、条件に該当するモノを見つけ結果として真を返す。 それがディレクトリだった場合は、そのディレクトリのより下の階層の検索は行わない。この動作を枝刈り、枝切り、枝探し、切り取りと表現していて、pruneの動詞的な意味なんだと理解出来る。 実行例 実際にコマンドを実行してみると、以下のような結果が得られる。 $ find . -type d -name "test-*" -prune ./test-dir1 ./test-dir2 ./test-dir3 findは結果が真だった場合、その対象を標準出力にパス付きで表示するようになっているらしい。そのため、「test-」から始まる3つのディレクトリは結果が真となり出力される。さらにこれらのディレクトリの中には「test-」から始まるディレクトリが含まれているが、pruneオプションによって真となったディレクトリより下のディレクトリは検索しないという動作になる為それらは出力(検査)されない。 -o はORの意味 findコマンドを利用する際に複数の条件を論理和として評価したい場合に使う。 はい、でしょうね。知ってました。で、何故それが必要なのか。そして右辺で-printする理由。その結果特定のディレクトリを除外した結果が得られるのか。 -print は標準出力への結果出力 findでは結果が真となったファイルやディレクトリをパス付きで標準出力に出力すると説明は実は言葉足らず。この動作は−printなどのオプションがfindコマンドに指定されていない場合の話。 今回のコマンド構成の場合、-oオプションの右辺に-printが指定されているため、左辺の結果に対する出力が行われないことになる。右辺の真に対してのみ出力が行われる。 -pruneオプションによって結果が除外されるのはなぜ 今回のコマンドの構成を改めて確認して見る。 #「test-」から始まるディレクトリを除外し、一覧する find . -type d -name "test-*" -prune -o -print # ~~~~~~左辺の条件~~~~~~ ~~~~~~右辺の条件~~~~~~ 左辺の条件  -type d -name "test-*"この条件を満たしたファイルは真となる。 右辺の条件 何もない、要は無条件。 短絡評価ってことか ORで繋がれた二つの条件がある場合、一つ目の条件が真である場合二つ目の評価をする必要がない。だから二つ目を評価しない 要するに、左辺の条件を満たファイルはpruneオプションによって真となる。その為、右辺の処理がされないことになる。printオプションは右辺にあるため、右辺を評価しない場合は出力されないことになる。 左辺の条件を満たさなかった場合はどうなるかというと、右辺の条件が評価される。 しかし、右辺には条件がない->要するに無条件。無条件で-printされることになる。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macにインストールしたアプリ一覧を取得する

はじめに Macを初期化する前にインストールしているアプリ一覧を確認しておきたかったのでその方法を残しておく 確認 拡張子に .app をつくもの全て rootディレクトリから検索していくので少し時間かかる sudo find / -iname *.app /Applications 以下 基本的にインストールされたアプリは /Applications にインストールされるのでここを確認すれば良い ls -1 /Applications | sed -e "s/'//g" -e 's/.app//'
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

FluffyDisplay が便利だった話

FluffyDisplay が便利だったけど少し改造した話 FluffyDisplay は仮想ディスプレイを作成するツール。 少し改変すればソフトウェア制御で好きな解像度の画面共有を使えるようになります。 便利だったけど使ってる人が少なそうだったので宣伝。 結論 mac内蔵ディスプレイだけでは不可能な、メインマシンの解像度と同じ4Kな仮想ディスプレイを作りました。 背景 古いmacを画面共有で使ってます。 Profileで分けるにもChrome君がメモリ馬鹿喰いなのと、 趣味用と仕事用でPCを分けておきたいのと、で、余ったPCに仕事をさせようと考えた時。 何枚もモニタを用意して表示させておくのも首が保たないので、画面共有を使うという発想になりました。 これが意外と快適なので、win機もParallelsを使ってたんですが、物理PCでRemoteDesktopを使うようになりました。 M1でwinが動かせないな。っていうので実機を使うように移行していた、 昨今のリモートワーク情勢においてwinを仮想環境として持ち歩かなくても大丈夫になった、という背景もあります。 問題 ただメインPCには4kなモニタがあり、そこにリモートmacを全画面で表示させたい。と思うのですが。 クラムシェルにしてるmacには別にモニタを繋がずな状態だと、内臓ディスプレイの解像度に依存した画面しか出力できません。 DisplyaMenu(alt: QuickRes) などを使って内部解像度を上げて共有したとしても、 画面比率を誤魔化すことができず横に黒帯ができてしまいます。 一応の解決 環境としてはよくあるUSB-C 2portを HDMI / USB-A / SDカード / USB-C(PD) / USB-C 。。。 etc なハブを使って そこにHDMIのダミープラグを差し、4K HDMI プラグに出力しているように見せかけていると、4K解像度の画面共有ができるという寸法です。 別の問題 しかしながら。ひょんなことで ハブをLAN付きな製品にアップデートしましたところ、 相性問題でしょうか、ダミープラグに出力できませんでした。 探す 困ったな。ということで、少し調査してみる。 発想としては Sidecar などの実現方法はどうなってるのかな。 内部的には仮想モニタを作ってそう。みたいな形で、APIを探したりしてました。 そんな調査の折 FluffyDisplay を見つけました。 少し違う 対応している解像度がずらっと出るので4Kを選択 したものの作られたディスプレイはFHD解像度 HiDPIな設定なりが影響してそう? じゃ、8Kを設定できれば?と思ったけど、6Kまでしか設定がない、 new on peer も少しだけ違う。 複数PCで FluffyDisplay を起動しておくと別PCのモニタの解像度に合わせて仮想ディスプレイを作成できる。 作成するとその仮想ディスプレイを自動的に画面共有にしてくれる。 これでいいじゃん。と思わなくもないのだけど、 状況としては画面共有下で操作してるのに、作成と同時に画面共有のセッションがスタートする混乱を招いた。 あと、別PCで起動しなくて済むならそれがいいなと。 改造 ソースを読ませてもらったら単純にいくつかの解像度&HiDPIな定義などのパターンを用意しているだけ。 cloneして、Xcodeでちょちょっと書き換えて いまのところ手元で動けばいいので Code Signing は [Sign to Run Locally] でビルド(実際のところよくは理解してない) diff --git a/FluffyDisplay/AppDelegate.swift b/FluffyDisplay/AppDelegate.swift index a15806b..83d746b 100644 --- a/FluffyDisplay/AppDelegate.swift +++ b/FluffyDisplay/AppDelegate.swift @@ -43,6 +43,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NetServiceDelegate, NetServi Resolution(4096, 2304, 219, true, "21.5-inch iMac with Retina 4K display"), Resolution(3840, 2400, 200, true, "WQUXGA"), Resolution(3840, 2160, 200, true, "UHD"), + Resolution(3840, 2160, 200, false, "UHD LowDPI"), Resolution(3840, 1600, 200, true, "WQHD+, UW-QHD+"), Resolution(3840, 1080, 200, true, "DFHD"), Resolution(3072, 1920, 226, true, "16-inch MacBook Pro with Retina display"), 実行してみたのが最初のスクショ。 上記解像度のPRを投げるかは検討中。 ここまでの総括 カスタム解像度をUIから設定できるようなのもissueがあったりするので、それがあればローカルビルドもいらなくなるので期待。 UI用意されるならPR要らないなーという感じです。 備考 macの画面共有を快適に使うには有線LANが必須だな。と個人的に思ってます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む