20200830のMacに関する記事は7件です。

Macで右クリックを使用して新規テキストファイルを作成する

背景と目的

WindowsからMacに乗り換えて「Mac良いぞ!」と思う今日この頃。しかしながらWindowsでやっていたあの操作をMacでもやりたいと思うこともなくはない。そう、右クリックで新規テキストファイルを作成したいのだ。

調査が足りないのかもしれないが、Macの標準機能に欲しい機能がなかったのでAutomatorを使用して作成する。

使用したもの

  • macOS Catalina バージョン 10.15.6
  • Automator
  • Bash

機能作成

元となるシェルスクリプトを作成する

まずはシェルスクリプトでカレントディレクトリに「newTextFile_N.txt」(Nは整数)と言う名前のテキストファイルを作成できるようにしよう。ここでカレントディレクトリにファイル「newTextFile_N.txt」が存在するときはファイル「newTextFile_N+1.txt」を作成することにし、Nの上限として100を指定した。下記「createNewFile.sh」を実行するとカレントディレクトリに「newTextFile_1.txt」などのファイルが生成される。なおwhileループの行に書かれているコロンはヌルコマンドである。

createNewFile.sh
#!/bin/bash

# ファイル名の基本部分と拡張子
file_name_stem="newTextFile_"
file_extension=".txt"

# 新規テキストファイルの上限の指定
max_num=100

# 初期値を設定して無限ループを開始
i=1
while :; do
  # テキストファイルのファイル名の指定
  file_name="${file_name_stem}${i}${file_extension}"
  # 上記ファイル名が存在しない場合、空ファイルを作成し終了
  if [ ! -e "${file_name}" ]; then
    touch ${file_name}
    exit 0
  fi
  # 上記ファイル名が存在する場合、iをインクリメント
  i=$((i+1))
  # iが上限を超えたらエラーを表示して終了
  if [ ${i} -gt ${max_num} ]; then
    echo "Error: The new text files are too many." 1>&2
    exit 1
  fi
done

Automatorで新規クイックアクションを作成する

Finderでディレクトリを右クリックして選択できるサービスのメニューの中に新しくテキストファイルを追加するメニューを作成しよう。以下の手順で作成することができる。手順番号と図中の丸で囲まれた番号は対応しているので適宜図を参照してほしい。
1. Automatorを開いて新規作成でクイックアクションを選択する。
2. 左カラムの検索窓からアクション「シェルスクリプトを実行」を検索する。
3. 左カラムにあるアクション「シェルスクリプトを実行」を右カラムにドラッグする。
4. 右カラム上部にある「ワークフローが受け取る現在の項目」欄を「フォルダ」にする。
5. 右カラム上部にある「検索対象」を「Finder.app」にする。
6. 右カラムの「シェルスクリプト実行」欄にある「シェル」を「/bin/bash」にする。
7. 右カラムの「シェルスクリプト実行」欄にある「入力の引き渡し方法」を「引数として」にする。
8. 右カラムの「シェルスクリプト実行」欄内のスクリプト記述欄を右クリックして自動変換の全てのオプションのチェックを外す。
9. 右カラムの「シェルスクリプト実行」欄内のスクリプト記述欄にスクリプトを記述する(次節参照)。
10. 適当な名称で保存する(例えば「create a new text file」)。
select_quick_action.png
edit_script.png

この後Finderで適当なフォルダを右クリックしてサービス欄を見ると先程保存した名称があるはずだ。これをクリックすれば選択したフォルダに新規テキストファイル「newTextFile_1.txt」が作成される。もし「newTextFile_1.txt」が既に存在すれば「newTextFile_2.txt」が作成される。

Automatorに記述するスクリプトについて

Automatorには先述したシェルスクリプトを少し改変した以下のものを記述する。具体的にはまず$1で選択したディレクトリのパスを取得する。それに伴いファイル名の先頭にディレクトリのパスを追加。また作成ファイル数が上限を超えた場合に通知する場所を標準エラー出力からFinderのポップアップに変更。

#!/bin/bash

file_name_stem="newTextFile_"
file_extension=".txt"
# 選択したディレクトリのパスを取得
selected_directory="${1}"

max_num=100

i=1
while :; do
  # ファイル名の先頭に選択したディレクトリのパスを追加
  file_name="${selected_directory}/${file_name_stem}${i}${file_extension}"
  if [ ! -e "${file_name}" ]; then
    touch ${file_name}
    exit 0
  fi
  i=$((i+1))
  if [ ${i} -gt ${max_num} ]; then
    # ファイル数の上限を超えた場合はポップアップで通知
    osascript -e 'tell app "Finder" to display dialog "Error: The new text files are too many."'
    exit 1
  fi
done

参考

自動変換のオフについてはこのページを見た。

理解不足な点

Finderで選択したディレクトリのパスを取得する方法として$1を利用する方法はこのページを見て思いついた。意図通りの動作をしているが理解しているわけではない。この辺の仕様がわかる人がいれば是非教えて欲しい。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

最近(2020/08)のDocker for Macのファイルアクセス遅い問題事情メモ

調べたことまとめる。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

yvmでyarnの複数バージョンを管理する

yvmでyarnの複数バージョンを管理する

概略

Yarnのバージョン管理マネージャー「yvm」を通して、.yvmrcでyarnのバージョン情報を共有しつつ、自動で切り替わるように設定します。

Xcode→Homebrew→yvm→yarnの順番でインストールの手順で実施します。

自動切り替え最高。

リリース情報確認URL

動作確認済みバージョン

  • Homebrew(v 2.4.13)
  • yvm(v3.6.7)
  • macOS Catalina(v10.15.6)
  • terminal(zsh)

更新履歴

  • 2020/8/30 初稿

xcodeのインストール

インストール済みかどうか、ターミナルから確認します。

terminal
% xcode-select --version
↓
xcode-select version xxxx.

もし、インストールをしていない場合は、Xcodeのダウンロードページからインストールしてください。(時間かかります。)

すでにyarnインストール済みの場合は削除する

はじめに…yarn -vを実行して、yarnがインストール済みか確認します。

terminal
% yarn -v
↓
1.xx.x

インストール済みの場合は削除しておきます。本記事を見る方のほとんどはHomebrewを利用していると思いますが、各々のインストール方法に合わせて削除してください。

terminal
// Homebrewでインストールしている場合
↓
% brew uninstall yarn

// homebrew以外でインストールしたしている場合は、該当の方法で削除してください。
↓
- tarball:rm -rf "$HOME/.yarn"
- npm:npm uninstall -g yarn
- ubuntu:Sudo apt-get remove yarn && Sudo apt-get purge yarn
- centos:yum remove yarn
- windows:choco uninstall yarn

Homebrewをインストールする

Homebrewがインストール済みか確認します。昨日の自分は赤の他人です。
インストール済みの人は次の項へ移動してください。

terminal
// インストール済みか確認のために、Homebrewのバージョンを表示する
% brew -v

公式ドキュメントを参考にHomebrewをインストールします。
途中インストールユーザのパスワード入力を求められるので記載してEnterキーを押します。

terminal
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
↓
% Password:鍵マーク
↓
==> Next steps:
- Run `brew help` to get started
- Further documentation: 
    https://docs.brew.sh

インストール完了時に出てくるNext stepsに従って、Homebrewの動作を確認します。

terminal
% brew help
↓
Example usage:
  brew search [TEXT|/REGEX/]
  brew info [FORMULA...]
  brew install FORMULA...
...

色々と出てきたら、Homebrewのインストール完了です。

yvmのインストール

公式ドキュメントを参考に、Homebrewのbrewコマンドを使ってインストールを行います。

terminal
% brew install tophat/bar/yvm
% curl -s https://raw.githubusercontent.com/tophat/yvm/master/scripts/install.js | node

インストール完了後、一度ターミナルを再起動して、yvmのバージョンを確認します。

terminal
% exec $SHELL -l
% yvm version 
↓
v3.x.x

yvmのインストール完了です。

yvmを使ってyarnのインストール

はじめに、yvmを最新へアップデートします。

terminal
% yvm update-self

installコマンドでyvmでyarnの最新版をインストールします。

terminal
% yvm install latest

yarnのバージョンを確認します。

terminal
% yarn -v
↓
1.22.x

バージョンが表示されたら、yarnのインストール完了です。

yvmでyarnの他のバージョンをインストールしてみる

試しに、yvm v1.22.4をインストールしてみます。

terminal
% yvm install 1.22.4

listコマンドで、yvmへインストール済みのyarnのバージョンを表示します。

terminal
% yvm list 
↓
Installed yarn versions:
 - 1.22.4
 ✓ 1.xx.x (Global Default)

チェックマークがついているバージョンが、現在利用中のyarnバージョンです。

yvmでyarnの他のバージョンへ切り替えてみる

useコマンドで、先ほどインストールしたv1.22.4へ切り替えてみます。

terminal
% yvm use 1.22.4
↓
Now using yarn version 1.22.4

listコマンドで、チェックマークが移動していることを確認します。

terminal
% yvm list
↓
Installed yarn versions:
 ✓ 1.22.4
 - 1.xx.x (Global Default)

念のため、yarnのバージョンも確認。

terminal
% yarn -v
↓
1.22.4

OK。

.yvmrcファイルでyarnバージョンを共有する

yarnのバージョンを指定したいプロジェクトルートに、バージョンを書いた.yvmrcファイルを置きます。

.yvmrc
// .yvmrcファイル
1.22.2

プロジェクトルート(.yvmrcファイルをおいたディレクトリ)で、yarn -vを実行してみます。

terminal
% yarn -v
↓
Installing yarn v1.22.2 in /Users/.../.yvm
Downloading...
...
Installation successful
1.22.2

自動で指定バージョンのyarnがインストールされ、無事、yarnのバージョン情報が表示されました。

これで、yarn生活もシンプルに。やったね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

久しぶりにmac向けXAMPPをインストールしたら一味違っていた件

結論

  1. VMになっていた
  2. http://localhost~じゃなくhttp://{IPアドレス}~でアクセスする

XAMPPのインストールをする

XAMPP

2020/08/30時点のバージョンは7.4.9

スクリーンショット 2020-08-30 16.05.11.png

finderにできるはずのXAMPPフォルダがなくなっていることに気づく

とりあえずXAMPPをスタートさせてみた

するとなんだかローカルIPアドレスが割り振られたように見える

スクリーンショット 2020-08-30 16.12.26.png

ApacheとMySQLもスタートさせておく

スクリーンショット 2020-08-30 16.16.32.png

80ポートをenableにする

スクリーンショット 2020-08-30 16.17.23.png

mountをクリックする

スクリーンショット 2020-08-30 16.19.59.png

このopt/lamppの中にあるhtdocsがドキュメントルートになるようだ。

ここまでいくとfinderの"場所"にVMのIPアドレスが表示されていてフォルダが操作できるようになる

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

macOS Catalina が bash から zsh に変わるとお知らせがあったので今更移行して環境を整えた話

私の手元の Mac ではターミナル起動時に随分前から下記のような警告が表示されていました。

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

様々な Qiita 記事を参考にしつつ、自分用の備忘録として bash から zsh に乗り換えたついでに色々ターミナル環境をカスタムしようと決意したので、作業内容を残しておこうと思いました。

個人的にはサーバオペレーションが多いので、 bash にそろえておきたい気持ちがとてもあります(Tab 補完の感覚とか Completion の感覚)が、仕方ないので。

カスタム結果

スクリーンショット 2020-08-30 13.38.03.png

フォントも見やすいし、色も柔らかくて個人的にはイイ感じです。

要約

  1. ターミナルのスタイルは iceberg
  2. フォントは「白源(HackGen)」
  3. プロンプトに Starship を採用
  4. zsh の設定管理に oh-my-zsh を採用

情報収集

まずは情報収集をしました

お前らのターミナルはダサい

iTerm2とstarshipでterminalとshellをお洒落にしました!

プロンプトを超絶おしゃれにする Starship を紹介

【文字幅 半角3:全角5 も追加】Ricty を神フォントだと崇める僕が、フリーライセンスのプログラミングフォント「白源」を作った話

これだけ集まれば、そこそこ便利なターミナル + zsh 環境が整うだろう、とのことでセットアップスタートです

端末のスタイルを変更

お前らのターミナルはダサい から得た情報として、 iceberg というスタイルがあるため、そちらを使うことにしました。

スクリーンショット 2020-08-30 13.19.29.png

http://cocopon.github.io/iceberg.vim/

こちらからファイルをダウンロードして、スタイルを適用しました。手順は引用元の記事に記載されています。

starship インストール前に必要なフォントをインストール

starship の公式サイト には「Powerline フォント がターミナルにインストールされて有効になっている必要があります」との記述があるので、Fira Code フォントを試したのですが、個人的には Ricty を採用したかったので、Powerline フォントに対応している RictyDiminished with FiraCode というものを使います

... と言いたいところなのですが、RictyDiminished with FiraCode を starship で利用しようとすると、ブランチ記号の大きさが意図したものと異なるため、「白源 (HackGen)」を利用することにしました。

【文字幅 半角3:全角5 も追加】Ricty を神フォントだと崇める僕が、フリーライセンスのプログラミングフォント「白源」を作った話

こちらもターミナルのフォントの設定から、「HackGen35Nerd Console Regular 14pt」を選択して設定をしました

starship をインストール

starship は公式サイトにある通り「シェル用の最小限の、非常に高速で、無限にカスタマイズ可能なプロンプト」です。Cross-Shell Prompt という言葉もある通り、zsh だけでなく bash でも対応しています。

こちらは日本語訳もありますので、公式サイトの手順で問題ないと思います。brew もありますのでお好みで。

curl -fsSL https://starship.rs/install.sh | bash

これは git で管理しているディレクトリの状態をサッと確認するために導入しました。他にも拡張が増えると良いですね。

oh-my-zsh をインストール

oh-my-zsh は zsh の設定管理フレームワークです。

と、いう位置づけですが、コミュニティが開発した様々な拡張機能の恩恵を受けることができます。

prezto と悩んだのですが、私はよく使う docker , docker-compose コマンドの completion の公式手順が oh-my-zsh の手順だったため、prezto は諦めました。

Command-line completion | Docker Documentation

あと、こういった話もあるようです。(bash のときには docker exec -it ... で補完できていましたが、 zsh では docker exec -i -t ... としなければならなそうです)

"docker exec" doesn't do container name autocompletion if used with options · Issue #5568 · ohmyzsh/ohmyzsh

.zshrc をカスタマイズ

### ここから上は oh-my-zsh のデフォルトのままなので、カスタムした内容だけ記載してます。

# tab による Auto Completion をしないように NO_AUTO_MENU を指定
setopt NO_AUTO_MENU

# oh-my-zsh から取ってきた適当な LSCOLORS を採用
export LSCOLORS="exfxcxdxbxegedabagacad"

eval "$(starship init zsh)"

export PATH="/usr/local/sbin:$PATH"

# Load rbenv
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

# Load NVM, if you are using it
[[ -s $HOME/.nvm/nvm.sh ]] && source $HOME/.nvm/nvm.sh

https://github.com/ohmyzsh/ohmyzsh/issues/5568

最後に

使いたてもいいところですし、個人的に zsh は補完が親切すぎた節があったので食わず嫌いでしたが、これなら bash と遜色ない感じで生活していけそうです。

zsh ならではの便利機能もぜひに活用していきたいですね ◝( ⁰▿⁰)◜ :sparkles:

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

macOSで初めてGitを使おうとした時に出るエラーの対処法

Mac のバージョン

Catalina 10.15.6

エラー内容

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

やったこと

以下のコマンドを叩くとポップアップが表示されるため許可をするとGitが使えるようになる

xcode-select --install
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Vimでのpaiza下準備をステップバイステップで丁寧に

この記事の対象読者

  • ドットインストールや入門書で基本の勉強を済ませたのでpaizaで問題を解いてみたい方

  • vimの練習も兼ねてとりあえず最低限+αの準備をしたい方

※AtcoderやICPC等の競技プログラミングコンテストを始めてみたい方にはちょっとレベルの低い話かもしれません。
※今回はPHPで書いていますが、他の言語でも基本同じです。

まずは実行ファイルと標準入力用のファイルを準備

Desktopに移動してaojというディレクトリ(フォルダのこと)を作成しましょう。

$ cd ~/Desktop
$ mkdir aoj

aojディレクトリ下に実行ファイルと標準入力ファイルを作成します。

$ touch main.php input.dat

ちなみに.datファイルのdatはIT用語辞典/e-Wordsで説明されている通り『「データ」(data)の略号で、プログラムなどではなくデータを保存していることを示して』います。

[前半]簡単にvimで実行が出来るようにする

vimを開いているときに + eで設定しているシェルスクリプトが実行されるようにしましょう。

.vimrcを編集しましょう。

//ホームディレクトリに移動
$ cd ~/
//.vimrcを編集
vim .vimrc

.vimrcには下記のように書いてみましょう。

set number
" exec
nnoremap <space>e :wa \| !echo -e '\e[38;5;0m\e[48;5;51m --- exec ---  \e[m';./exec.sh<cr>

これでvimを開いているときに + eでexec.sh(後ほど作っていきます!ご安心を!)に書かれているシェルスクリプトが実行されます。
またset numberのおかげでvimに行番号が自動的に入るようになります。

[後半]簡単にvimで実行が出来るようにする

次にexec.shの中身を編集します。

//aojディレクトリに移動
$ cd ~/Desktop/aoj
//exec.shを編集
$ vim exec.sh

main.phpにinput.datが入力されて実行し、その結果が^aファイルに書き込まれるスクリプトを書いてみましょう。

exec.sh
php main.php < input.dat | tee ^a

では簡単なプログラムを書いて上手く動くか実験してみましょう。

input.dat
1
5
6
main.php
//標準入力を受け取る
$first_data = fgets(STDIN);
echo $first_data . PHP_EOL;

$second_data = fgets(STDIN);
echo $second_data . PHP_EOL;

$third_data = fgets(STDIN);
echo $third_data . PHP_EOL;

main.phpを編集中に+eと押してください。
1,5,6が順番に出力されるはずです。

また同じディレクトリ下に^aファイルが出来ているはずです。中身を確認すると出力結果と同じデータが入っています。

$ ls
exec.sh main.php input.dat ^a
$ view ^a

->^aの中身は下記のようになっているはず!
1
5
6

次はoutput.datというファイルを同じディレクトリの中に作ってみましょう。
まずはoutput.datの中身を^aと同じにします。

output.dat
1
5
6

下記のように^aとoutput.datの中身を比較してみます。
差異がないので何も出ないはずです。

$ cd ~/Desktop/aoj
$ diff ^a output.dat

次にoutput.datの3行目だけ^aと違う数値にすると。。。

output.dat
1
5
7

今回は3行目に差異が教えてくれます!!!

$ diff ^a output.dat
3c3
< 6
---
> 7

お疲れ様です!これでpaizaのスコアアップ問題を解く準備完了です!お疲れ様でした!

[最後に]参考になるかもしれないサイト

  • AOJ-ICPC
    paizaに比べると少しムズカシイ(最低ランクの問題でもBランク以上?)が他の人の解答が見れるのでオススメです。

  • vimtutorでVim力をアップ
    vimの練習をしたい方はまず上記で紹介されているvimチューターから始めるのがオススメです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む