UTF-8のBOMの確認、追加、削除

SQLiteからエクスポートしたUTF-8のCSVファイルをExcelで読み込むと文字化けするのでこれまではShift-JISに変換していたがもしかしたら何らかの方法で読み込めるのではないかと思い、検索するとBOMを付加すればよいことが分かった。なお、確認した環境はmacOS 10.15.3 Catalinaです。

確認方法

fileコマンドを使う。対象ファイルを行こうhogehoge.csvとします。

file hogehoge.csv
hogehoge.csv: UTF-8 Unicode text <-- BOMなし
hogehoge.csv: UTF-8 Unicode (with BOM) text <-- BOMあり

BOMの追加

nkfコマンド

nkfコマンドを利用する。nkfコマンドはmacOS標準のコマンドではないので何らかの方法でインストールする。私はbrewでインストールしてある。

追加のオプションは–oc=UTF-8-BOM、対象ファイルを上書きするにはオプション–overwriteを追加する。

ocオプションは出力のエンコードの指定

nkf --overwrite --oc=UTF-8-BOM hogehoge.csv

emacsを利用する場合

普段Emacsを使っているのでこちらも調べた。出力ファイルのエンコードを指定すればよい。

  1. 該当ファイルを開く
  2. Ctrl+X,Return,F
  3. 次のいずれかのエンコードを指定する
    1. utf-8-with-signature
    2. utf-8-with-signature-dos
    3. utf-8-with-signature-mac
    4. utf-8-with-signature-unix
  4. ファイルを保存する

BOMの削除

nkfコマンド

nkfコマンドの–oc=UTF-8を使う。

nkf --overwite --oc=UTF-8 hogehoge.csv

emacsを理由する場合

普段Emacsを使っているのでこちらも調べた。出力ファイルのエンコードを指定すればよい。

  1. 該当ファイルを開く
  2. Ctrl+X,Return,F
  3. 次のいずれかのエンコードを指定する
    1. utf-8
    2. utf-8-dos
    3. utf-8-mac
    4. utf-8-unix
  4. ファイルを保存する

参考にしたページ

下記のページを参考にしました。ありがとうございます。

macOS 10.15.3 CatalinaでISOイメージをDVDに焼く方法

古いMacBookPro 15インチ mid 2009にUbuntuをインストールするためにダウンロードしたISOイメージをDVDに焼こうとしたら自分の知っているファイルを右クリックしてディスクへの書き込みがうまく動作しなかったので色々検索したらコマンド一発でできることが分かり、試すとあっさり成功した。

参考にしたのは「Mac CatalinaでISOイメージファイルから書き込みできないとき

hdiutil burn ubuntu-18.04.4-desktop-amd64.iso 
ディスクに書き込むデータを準備中
セッションを開いています
トラックを開いています
トラックを書き込み中
...................................................................................................
トラックを閉じています
...................................................................................................
セッションを閉じています
...................................................................................................
ディスクの作成を終了中
ディスク作成の検証中…
検証中
...................................................................................................
ディスク作成が完了しました
...................................................................................................
hdiutil: burn: completed

macOS High Sierra(10.13)でのERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?への対処

macOS High Sierra(10.13)でpyenvを使い、Python 3.5.3や2.7.14をインストールしようとすると成功したように見えて次のエラーがでて正しくインストールされない現象に遭遇。macOS High Sierra: ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib? #993などを参考に正しくインストールする方法を探った際の記録。

インストール時のエラーメッセージ

$ pyenv install 3.6.3
Downloading Python-3.6.3.tar.xz...
-> https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
Installing Python-3.6.3...
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems


BUILD FAILED (OS X 10.13 using python-build 20160602)

Inspect or clean up the working tree at /var/folders/yf/79cdmmgx74s6z0_9yf_tz1fw0000gq/T/python-build.20171022085825.57793
Results logged to /var/folders/yf/79cdmmgx74s6z0_9yf_tz1fw0000gq/T/python-build.20171022085825.57793.log

Last 10 log lines:
            upgrade) ensurepip="--upgrade" ;; \
            install|*) ensurepip="" ;; \
        esac; \
         ./python.exe -E -m ensurepip \
            $ensurepip --root=/ ; \
    fi
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-9.0.1 setuptools-28.8.0

最終行でSuccessfullyと出るのでうまくいっているように見えるが赤字で示す行の通りOpenSSlのライブラリが見つからないと出ている。

正しくインストールする操作手順

色々試した結果、次の操作でエラーを回避した。

  1. homebrewでHigh Sierra以前でインストールしたopensslパッケージを強制的にアンインストール
  2. homebrewで再度opensslパッケージをインストール
  3. openssl再インストール時に表示されたコマンドを実行
  4. bashの環境変数PATHを修正
  5. 再度pyenvコマンドでpythonのインストール

実行したコマンドなど

$ brew uninstall --ignore-dependencies --force openssl
$ brew install openssl
$ /usr/local/opt/openssl/bin/c_rehash

~/.bash_profile内の環境変数PATHの設定を変更

export PATH="/usr/local/opt/openssl/bin:$PATH"

~/.bash_profileの変更反映とインストール

$ source ~/.bash_profile
$ peen install 3.5.3
# 2.7.14では次のコマンドを実行
$ LDFLAGS="-L/usr/local/opt/openssl/lib" CPPFLAGS="-I/usr/local/opt/openssl/include" pyenv install 2.7.14

これでバージョン2と3の最新バージョンが利用できる。

実はHomebrewではバージョン2.7.14と3.6.3がインストールされている

macOS High Sierra(10.13)で大きいファイルを探す

macOS High Sierra(10.13)で大きなファイルを検索し、削除等する機能が搭載されている。次の手順で利用できる。

  1. アップルメニューを開く
  2. 表示されたウィンドウでストレージを選択し、管理ボタンを押す
  3. ファイルの種別ごとの集計が実行され、結果が表示される
  4. 詳細を見たい項目をサイドバーから選択する
  5. 選択した項目(書類など)でファイルがサイズの大きい順で表示される
  6. ファイルを選択すると削除や検索のボタンが表示される
  7. 操作したいファイルを選択し、削除や検索を実行する

 

アップルメニューを開く

 

ストレージを選び、管理ボタンを押す

 

項目ごとの集計結果と操作パネル

 

項目内の大きい順でのファイル表示

ios-11のコントロールセンターからカメラを通常モード以外で起動する

iOS 11で新しくなったコントロールセンターでカメラの起動はアイコンをタップすれば良いが、アイコンを長押し(6 Plus使ってるので)するとカメラのモードを次から選択できるメニューが表示される。

  1. セルフィーを撮る
  2. ビデオ撮影
  3. スローモーション撮影
  4. 写真を撮る

使いたいモードの項目をタップすればそのモードでカメラが起動する。

カメラ以外のミュージック、ネットワーク関連、明るさ、計算機、フラッシュライト、画面ミラーリングにも同様の機能がある。

macOS High Sierraで外付けSSDをAPFSに変換する

macOS 10.13(High Sierra)からSSDのファイルシステムがAPFS(Apple File System)に変更された。10.12(Sierra)からアップデートすると自動的にファイルシステムがAPFSに変換されるが外付けSSDはどう変換するのか調べるとDisk Utilityを使えば良いことがわかった。

フォーマットされるわけではないのでファイルがあっても問題ない。

手順

  1. Disk Utilityを起動
  2. 変換したい外付けSSDドライブのパーディションを右クリック
  3. 表示されたメニューの一番下、APFSに変換を選択
  4. High Sierra以外では使えないがいいかの確認をOKする
  5. しばらく待つと変換完了

変換の詳細を表示するとapfs_hfs_convertコマンドを実行したことがわかる。

以下がDisk Utilityメッセージの内容。

HFSボリュームを、1つのAPFSボリュームを書き出すAPFSコンテナに変換中
ターゲットは、GPTパーティション“disk4s2”でバックアップされているJournaled HFS+ボリューム“JD”です
APFSコンテナにインストールするAPFS EFIドライバ“/usr/standalone/i386/apfs.efi”が見つかりました
“disk4s2”のマウントを解除中
HFSからAPFSへの変換を開始中
apfs_hfs_convert -x –verbose=0x400 –efi /usr/standalone/i386/apfs.efi /dev/disk4s2を実行中
変換前の統計情報の報告
変換後の統計情報の報告
HFSからAPFSへの変換が完了しました
コミットモードでの変換が成功すると、タイプがAPFSに切り替わります
disk4s2のタイプをAPFSに設定中
物理ディスクのパーティションタイプをsharedモードで変更中
パーティション変更の試行回数は1回でした
disk4s2を開いてから閉じる操作により古いコンテンツドライバを終了しています
物理ストアdisk4s2に新しいAPFSコンテナが必要です
暗号化されていない新しいAPFSボリューム“disk5s1”の存在を確認しました
APFSボリューム“disk5s1”をマウント中
APFSボリュームのマウント試行の結果は0でした
変換操作を終了中(エラーコード0)
操作が完了しました。

 

Apple WatchによるMacのロック解除するには有線LANを外す

長年使ってきたMacBook Air Mid 2011をMacBook Pro (13-inch, Late 2016, Two Thunderbolt 3 ports)に変更した。これでContinuity Activation Toolのお世話にならなくてもAirDrop、HandoffできるようになったがApple Watchによるロックの解除が思うように動作してくれなかった。設定は正しく行えている。

しばらく使っていくうち動作しない状態が分かった。それは

Macを有線LANがない状態にする

だった。MacBook Pro Late 2016なので有線LANはアダプタが必要なので無線LANだけで使えば良いことになる。