20201019のMacに関する記事は9件です。

Macのメモアプリで検索できなくなった時の対処法

環境

macOS 10.14.5 Mojave
-> 10.15.7 Catalina

メモアプリのバグ

いつ頃からか覚えていないが、メモの中身には書いてあるのに検索してもでてこなくなった。

iphoneでの同様のバグ

iPhoneメモアプリの検索機能で検索できない見つからない時の対処法

iOSの方はiOS 13.2.3で修正された模様
Apple、iOS13.2.3 リリース。メール・ファイル・メモ検索ができない問題を修正

動くようになるまでにやったこと

手動で見つけたが検索にヒットしないメモの内容を更新する
=> 更新された記事が検索にヒットするようになる。

このことから、キャッシュが原因であることが予想できる。

メモの再起動
=> 治らない

OSのアップデート
macOS 10.14.5 Mojave -> 10.15.7 Catalina
=> 治らない

検索条件の一部を古いメモに記述 (Timelineと検索してたのでtimeと入力した)
=> 治った(全てのメモから検索できるようになったっぽい)

考察

メモの検索対象のキャッシュに問題があったと仮定する。

その時以下の対応のどれかで治ったのではないかと予想する。

予想1 OSをCatalinaにアップデートした上で、なんらかのメモを更新する

OSのアップデートでは治らなかった。
更新したら治ったというところから、以下が考えられる。

  • OSをアップデートすることによってキャッシュの作り方が更新されるが、キャッシュそのものは更新されない
  • メモの更新を行ったことでキャッシュの更新が走った

予想2 古いメモを更新すると治る

  • OSのアップデート更新関係なく、古いメモを更新すると治る?

予想3 検索条件をいれたまま更新すると治る

  • 検索条件を入れたままにするとキャッシュの更新が走る?

まとめ

どうしてなおったのかが確定せずにすっきりしないが、動くようになった。
私と同様のバグに遭遇したら是非上記の対応を試してみてください。

何かわかったらコメントいただけると幸いです。

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

【 情報圧縮ノート002 】$PATHを通さないと $conda で Anacondaが使えない

#1j1k  PATH.jpg

なぜか英語を使ってますが、理由は、まぁその、早い話が自分のインスタグラムの使い回しの画像だからです。
*情報圧縮ノートは、今まで文章で説明されたいた概念(Knowledge)を1枚のjpegで表現するものです。

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

【 情報圧縮ノート001 】TerminalとShell(石原さとみ)とKernel(おじさん)の関係性

#1j1k What is Shell.jpg

わざわざShellに石油会社の画像を使う理由は、
こないだ東京証券取引所を破壊した「石原さとみショック」の原因たる
<< GS社員 >> というTwitterのトレンドを見たとき、
小学5年から石原さとみを追っかけてきた自分ももれなく「ガソリンスタンド」を思い浮かべたからです。

*情報圧縮ノートは、今まで文字で説明されていた概念(Knowledge)を1枚のjpegで表現するものです。

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

Dockerのコンテナとホストとの関係の条件付け

はじめに

Dockerは多くのIT開発企業で導入されている環境構築を楽にする技術です。
Dockerで作成したコンテナはホスト(自身のPCやAWSなどのクラウド)に対して、ファイルを読み込んだり、また、ホストのサーバーからコンテナへ接続したり、というような関係を持ちます。
それらの関係の条件を指定するために、docker runにオプションを付けて、実行します。
今回はコンテナとホストとの関係の条件付けのためのオプションを紹介します。

今回紹介する内容(docker runコマンドとオプション)

  • コンテナからホストのファイルに接続できるようにする (docker run -v)
  • ユーザーIDやグループIDの指定する (docker run -u)
  • ホストのポートとコンテナのポートをつなげる (docker run -p)
  • コンテナがアクセスできるCPUやメモリの上限を設定する(docker run --cpus)(docker run --memory)

コンテナからホストのファイルに接続できるようにする (docker run -v)

ホストのファイルをコンテナの中にも存在するように振舞わせることをマウントと言います。
コンテナは誰かに使ってもらったり、手軽に実行させたりできるように、サイズが小さいことが望ましいので、可能な限りコンテナ自体にファイルを設置しないようにします。
例えば、コードのファイルはホストに置いておき、コンテナからホストのコードのファイルを読み込ませるという場合、コードのファイルをコンテナにマウントさせる、と言います。

docker run -it -v (ホストのパス):(コンテナのパス) (DockerImageの名前 or ID) bash

例) docker run -it -v /Desktop/sample_dir:/new_dir (DockerImageのID) bash
=> コンテナのnew_dirというディレクトリにホストのDesktopに存在するsample_dirというディレクトリがマウントされます。
(コンテナにnew_dirというディレクトリが存在しない場合は、コンテナにnew_dirというディレクトリが自動で作成されます。)

ユーザーIDやグループIDの指定する (docker run -u)

ホストのファイルをコンテナでマウントさせる場合、ユーザーIDやグループIDを指定しないと、コンテナがルート権限を持ってアクセスすることができてしまいます。
ルート権限がコンテナ側にあると、コンテナからホストのファイルを作成したり、編集したり、様々なことができてしまいます。
ルート権限を持たせたくない場合には、ユーザーIDやグループIDを指定して、マウントさせます。

docker run -it -u (ユーザーID):(グループID)

例) docker run -it -u $(id -u):$(id -g) -v /Desktop/sample_dir:/new_dir (DockerImageのID) bash
=> ユーザーIDとグループIDが指定して、ホストのファイルをマウントしたコンテナが作成される。

ホストのポートとコンテナのポートをつなげる (docker run -p)

ポートとはサーバーの中の特定の場所です。
例えば、サーバーに複数のサービスがあった場合、IPアドレスだけではどのサービスに接続するか分からないため、ポートを指定します。
作成したコンテナを一つのWebサービスとする場合、コンテナのポートとホストのポートをつなげる必要があります。

docker run -it -p (ホストのポート):(コンテナのポート)

例) docker run -it -p 3000:3000 rails bash
=> railsというDockerImageからコンテナが作成され、railsのデフォルトのポート3000に繋がるため、ホスト側でlocalhost:3000にアクセスするとrailsにアクセスすることができます。

コンテナがアクセスできるCPUやメモリの上限を設定する(docker run --cpus)(docker run --memory)

コンテナが動く時、ホストのCPUやメモリを使います。
例えば、一つのコンテナが限界までCPUやメモリを使ってしまった場合、メモリが枯渇してシステム全体が落ちてしまう可能性があります。
そのようなリスクを避けるために、それぞれのコンテナに対して、CPUやメモリの上限設定をします。

docker run -it --cpus (論理コア数) --memory (メモリ容量)

例) docker run -it --cpus 4 --memory 2g ubuntu bash
=> ubuntuというDockerImageからコンテナが作成され、このコンテナが使えるCPUの論理コアの上限は4つで、メモリの上限は2ギガとなります。
(コンテナのCPUやメモリを確認したい時は、"docker inspect (コンテナID)"を入力します。)

※自身のPCのCPUやメモリが知りたい場合はターミナルに以下の入力をすると確認できます。

  • sysctl -n hw.logicalcpu_max => CPU(論理コア数)
  • sysctl hw.memsize => メモリ(byte)

参考

Udemy

かめれおん講師 「米国AI開発者がゼロから教えるDocker講座」

https://www.udemy.com/share/103aTRAEAdd1pTTHoC/

有料ですが、初学者の私にも非常に理解しやすかったです。

最後に

本投稿が初学者の復習の一助となればと幸いです。

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

MacでExcelのファイルを編集するには、OneDriveを使う。

久しぶりですが、新しい就職先での書類のやりとりにハマったので記事にします。
会社から送られてきたExcelのファイルを編集して、上司に送り返しました。
ですが、Excelのソフトでうまくファイルが開けないとのこと。

MacでExcelのファイルを開こうとすると、「Keynote」のアプリを使って開かれるのですが、
編集しようとすると拡張子が変わってしまうため、Excelで開けなくなってしまったことが原因。

互換性があるという記事を見かけたので勘違いしてましたが、閲覧する際には
互換性が保てても編集する際には拡張子がかわって互換性が保てなくなるようです。

https://www.stay-minimal.com/entry/introduceonedrive

こちらの記事を参考に、MacでもOneDriveというオンラインストレージを使えば、
Excelのファイルを編集することができることをしりました。

使用するには、MicroSoftのアカウントを作成する必要があります。
有料プランもありますが、無料でも簡単な編集ならできるので問題ありません。

ただ、ルビをふるボタンが実装されておらず、ふりがなを記入することができませんでした。
振り仮名は会社でお願いして記入してもらう形に。

いくら調べても出てこなかったので、おそらくOneDriveではふりがなをふることはできないようです。

とても使いやすく感じたのですが、そこだけ少し残念でした。

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

【GitHub】GitHub入門<10/19作成中>

はじめに

(参考①) 【超入門】初心者のためのGitとGitHubの使い方
↑本記事の執筆にあたって参考とした記事1
(参考②) サル先生のGit入門
↑本記事の執筆にあたって参考とした記事2
(参考③) よく使う基本Gitコマンド集【厳選19選】
↑本記事の執筆にあたって参考とした記事3
(参考④) Git - Book
↑Gitを隅々まで理解したい方へ
(参考④) Markdown記法 チートシート
↑Qiitaでの記事投稿を検討している方へ

目次

作成中

GitHub入門

GitHubとは

Git(バージョン管理を行うためのシステム)のHubと書いてGitHub(ギットハブ)と読みます。
その名の通り、Gitで人同士を繋ぐためのWebサービスです。自身の書いたソースコードを世界中に公開することができます。
バージョン管理の必要性については、参考①を参照してください。

多くの記事で「駆け出しエンジニアはGitHubを使え」と推奨されていますが、これには以下のような理由があります。

・開発現場で一般に用いられている
 → チーム開発では使えることが必須
・就職/転職活動の武器になる
 → 自分自身のポートフォリオとしてアピール材料にできる

なお、GitHubはCUI(Character User Interface; コマンドによる操作)で行いましょう。この理由は以下の通りです。

・OS(Windows/macOS(Linux))のコマンドを覚えられる
 → cd, mkdirといった基本的な操作コマンドを使えるようになる
 → 異なる開発環境でも普遍的に操作することができる
GUI(Graphical User Interface; マウスやボタンによる操作)よりも難しい
 → CUIで管理ファイルの流れを知っておくことで、GUIによるGitHub連携ツールの仕組みを理解できるようになる

GitHubの仕組み

GitHubで管理するファイルの流れは、以下のようになります。
スクリーンショット 2020-10-19 15.44.54.png
図における各要素の説明は、下記の通りです。

Repository(リポジトリ) ・・・ファイルやディレクトリ(フォルダ)の保管場所
Local Repository(ローカルリポジトリ) ・・・ローカル環境(=自身のPC)上に存在するリポジトリ。リモートリポジトリにアップロードする際は、必ずローカルリポジトリ上にファイルをコミットしておかなければならない。
Remote Repository(リモートリポジトリ) ・・・GitHubのサーバー上に存在するリポジトリ。

Index/Stage(インデックス/ステージ) ・・・変更後ファイルの一時的な保管場所

Working Tree(ワークツリー) ・・・実際に作業するディレクトリ(フォルダ)

ファイルの移動コマンド(ローカル→リモート)
add(登録) ・・・ワークツリー上のファイルを一時的にインデックスに保存する
commit(コミット) ・・・インデックス上のファイルをローカルリポジトリに保存する
push(プッシュ) ・・・ローカルリポジトリ上のファイルをリモートリポジトリにアップロードする

ファイルの移動コマンド(リモート→ローカル)
clone(クローン) ・・・リモートリポジトリにあってローカルリポジトリにないファイルをコピーする
pull(プル) ・・・リモートリポジトリ上にあるファイルの変更箇所をローカル上にダウンロード(fetch)し、その変更をワークツリー上のファイルに適用(merge)する

※横文字が並んで見づらい方は、上の図を参照していただければ結構です。

「ターミナル」で使用するコマンド

Macを使っている方は、「ターミナル」というプリインストールされたアプリを使用してGitHubでのバージョン管理を行います。
私が購入した「iMac (Retina 5K, 27-inch, 2020)」にはGitが標準でインストールされていましたが、お持ちのMacに標準搭載されていない場合はこちらを参照してインストールしてみてください。

よく用いるGitコマンドは、以下の通りです。
ターミナルで使うコマンドについて詳しく知りたい方は、「UNIXコマンド」と検索してみてください。

ローカルリポジトリの作成

Gitを使う前に、ローカルリポジトリを作成する必要があります。
ここで使用するコマンドについての説明は以下の通りです。

% cd (change directory) ・・・現在のディレクトリから移動
% git init (initialize) ・・・ローカルリポジトリ(.gitディレクトリ)の作成

% cd <ローカルリポジトリを作成したいディレクトリのパス>
% git init   // ローカルリポジトリ(.gitディレクトリ)の作成

インデックスへのステージング

ファイルを作成・編集した際は、コミットする前にインデックスに一時保存しておきましょう。
インデックスを利用することで、コミットするファイルをコミット前に確認することができます。

% git add <ファイル名1> <ファイル名2> <ファイル名3> ...  // ファイル名を指定して登録
% git add .  // 全てのファイルを登録

ローカルリポジトリへのコミット

インデックスに登録したファイルをローカルリポジトリにコミットします。

% git commit -m "<コミットメッセージ>"

リモートリポジトリからローカルリポジトリへの複製

リモートリポジトリにある「他人が作成・編集したファイル」をローカルリポジトリにコピーします。
一度コピーすれば、作業する前に差分だけリモートリポジトリから引っ張ってくればよいため、このコマンドを実行するのは初回だけで構いません。

% cd <ローカルリポジトリを作成したいディレクトリのパス>
% git clone <複製したいリモートリポジトリのURL>
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Mac]外部GPUを追加したが使われてなさそうだったときの対処法

img
https://www.amazon.co.jp/gp/product/B07CQG2K5K/

背景

ちょっと前に外付けGPUを購入したのですが、GPU使う系の処理をしてもなんか早くなってない気がする、、、と思ったら、アプリケーション側で下記の設定が必要なケースだったようで、備忘録。

対処方法

  1. 変更したいアプリケーションを右クリックでGet Info(日本語だと、「情報を見る」)
    Screen Shot 2020-10-19 at 15.01.29.png

  2. Prefer External GPU(日本語だと「外部 GPU を優先」)のチェックを入れる
    Screen Shot 2020-10-19 at 15.01.19.png

以上です。

参考

https://support.apple.com/ja-jp/HT208544

※ というか下記にかいてるのをほぼそのまま書いてます

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

Node.jsのインストール

概要

  • MacにNode.jsをインストールする。
  • ターミナルでHomebrewを使ってインストールする。

前提

  • Homebrewをインストール済
  • ログインシェルがzsh

手順

  1. nodebrewをインストールする
  2. Node.jsをインストールする
  3. パスを通す

1. nodebrewをインストールする

下記を実行する

terminal
brew install nodebrew

※補足:nodebrewのバージョン確認

terminal
nodebrew -v

2. Node.jsをインストールする

2.1 nodebrewでNode.js(安定版)をインストールする

下記を実行する

terminal
nodebrew install-binary stable

※補足:下記のような結果が出て、インストールができなかった場合

terminal(結果)
Fetching: https://nodejs.org/dist/v14.14.0/node-v14.14.0-darwin-x64.tar.gz
Warning: Failed to create the file
Warning: /Users/[username]/.nodebrew/src/v14.14.0/node-v14.14.0-darwin-x64.tar
Warning: .gz: No such file or directory

curl: (23) Failed writing body (0 != 980)
download failed: https://nodejs.org/dist/v14.14.0/node-v14.14.0-darwin-x64.tar.gz

下記を実行する(.nodebrewディレクトリがない場合、-pオプションをつける)

terminal
mkdir -p ~/.nodebrew/src

その後、再度2.1を実行

2.2 インストールしたバージョンを使用するようにする

2.2.1 インストールしたバージョンを確認する

下記を実行する

terminal
nodebrew ls
terminal(結果)
v14.14.0

current: none

※「current: none」は、現在使用に指定しているバージョンはないという意味

2.2.2 インストールしたバージョンを使用するようにする

下記を実行する

terminal
nodebrew use v14.14.0

再度下記を実行

terminal
nodebrew ls

下記の通り、インストールしたバージョンが使用に指定されていることを確認

terminal(結果)
v14.14.0

current: v14.14.0

3. パスを通す

3.1 Node.jsを使えるように、下記を実行しパスを通す

terminal
echo "export PATH=$HOME/.nodebrew/current/bin:$PATH" >> ~/.zshrc

下記を実行し、ファイルを読み直す

terminal
source ~/.zshrc

3.2 使用可能かを確認する

下記を実行する

terminal
node -v

下記のような結果が出れば完了

terminal(結果)
v14.14.0
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ラズパイにSSHするときに毎回パスワードを入力するのが面倒くさいので鍵認証の設定をしてみた。(mac/Windows)

やってみると意外と簡単。
パスワード入力が不要になるので、やって見る価値はあるかと。

SSHされる側(ホスト側のRaspberry Pi)での設定

SSHサーバーの設定変更

デフォルトでは鍵認証が有効になっていないので、設定を変更します。

RaspberryPi
sudo sed -i 's/#PubkeyAuthentication/PubkeyAuthentication/g' /etc/ssh/sshd_config
sudo sed -i 's/#AuthorizedKeysFile/AuthorizedKeysFile/g' /etc/ssh/sshd_config

sudo systemctl restart sshd.service

SSHで使用する鍵の作成

RaspberryPi
pi@raspberrypi4:~ $ ssh-keygen -t rsa -b 4096 -C "moritalous"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/pi/.ssh/id_rsa.
Your public key has been saved in /home/pi/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxx
The key's randomart image is:
+---[RSA 4096]----+
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxx|
+----[SHA256]-----+
pi@raspberrypi4:~ $ 

~/.ssh/にid_rsa(秘密鍵)とid_rsa.pub(公開鍵)が作成されます。

公開鍵の方をauthorized_keysに登録します。

RaspberryPi
cat .ssh/id_rsa.pub >>  ~/.ssh/authorized_keys

SSHする側(クライアント側のmac/Windows)での設定

秘密鍵の配置と権限変更

ホスト側で作成したid_rsa(秘密鍵)を持ってきます。
私は~/.ssh/raspberrypi4/の配下(Windowsの場合は%USERPROFILE%\.ssh\raspberrypi4)に保存しました。

権限変更はmacの場合のみ。Windowsの場合は不要でした。

macのみ
chmod 600 ~/.ssh/raspberrypi4/id_rsa

設定ファイルの作成

macの場合もWindowsの場合も、IdentityFileの指定は同じです。Windowsだからといって%USERPROFILE%と書いたり、エスケープ文字が\(円)になったりしません。

~/.ssh/config
Host raspberrypi4.local
  HostName raspberrypi4.local
  User pi
  IdentityFile ~/.ssh/raspberrypi4/id_rsa

Host raspberrypi3.local
  HostName raspberrypi3.local
  User pi
  IdentityFile ~/.ssh/raspberrypi3/id_rsa

これで、パスワードなしでSSH接続できます。

mac/Windows
$ ssh pi@raspberrypi4.local
Linux raspberrypi4 5.4.51-v8+ #1333 SMP PREEMPT Mon Aug 10 16:58:35 BST 2020 aarch64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have new mail.
Last login: Sun Oct 18 16:26:01 2020 from 192.168.0.8

pi@raspberrypi4:~ $ 

VSCodeのSSH接続の拡張機能(Remote - SSH)を使った場合もパスワード無しで、接続されます。
わーい
EC2の接続に必要な鍵もこうやって管理すればいいんですね。

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