feat: use hexo

This commit is contained in:
2021-01-21 21:45:05 +09:00
parent 2d93c3d6ca
commit 039bac5e09
185 changed files with 2400 additions and 2575 deletions

View File

@@ -0,0 +1,40 @@
---
title: EARIN M-2 所見
date: 2018-03-24 12:56:00 +09:00
redirect_from: "/blog/2018/03/24/earin-m2-first-look"
---
EARIN M-2 は全体的に見て EARIN の正統進化系と言って良い。
タッチ操作による再生コントロールや通話中のアクティブノイズリダクション、イヤホンの左右を区別しないインターフェースは洗練されており使いやすい。
一方で欠点が無いわけでは無い。EARIN M-2 は初代同様いくつかの点においてストイックな使い方をユーザーに要求する。
特にペアリングと、ペアリング後の内部挙動を理解することがスムーズな操作のために必要になってくる。そこで、バグ報告のついでに EARIN 社から聞いた情報を書き留めておく。
# EARIN M-2 の接続フロー
EARIN M-2 の接続フローは以下の通りである。
1. ケースから EARIN(単体)が取り出されると電源が入り、デバイスを探して接続する
2. デバイスとの接続が完了すると、デバイスに他の EARIN が既に接続されているかを確認する
3. 既に他の EARIN が接続されていた場合、自身の接続を解除し、既に接続されている EARIN に NFMI(近距離磁界誘導)で接続し直し、以後クライアントとして振る舞う
4. 他の EARIN が接続されていなかった場合、マスターとして振る舞う。デバイスから送られてくる音声信号を、(もしクライアントが存在する場合)クライアントに NFMI 経由でリレーする
以上のフローを最初に実行するため、ケースから取り出したイヤホンを素早く両耳に装着した際に、最初片耳からしか音楽が聞こえないのは仕様である。NFMI 接続が確立すると両耳から流れるようになる。
ちなみに左右のイヤホンのどちらがマスターか知りたければ、音楽を再生しながら片方のイヤホンを耳から外すことでわかる。もし、まだつけている方のイヤホンの音楽が止まれば外した方がマスターであり、音楽が鳴り続けていたら耳につけている方がマスターである。
# イヤーチップ
EARIN M-2 付属のイヤーチップが耳に合わず、遮音性が低かったため替わりのチップを探した。
内筒の直径を測ると 5mm だったので、同じ内径の Comply Ts-500 を装着したところ、遮音性もフィット感も最高になった。
# バッテリー
電力消費量が左右非対称なので、マスターのバッテリーが先に無くなる。その結果音楽が途切れるが、今までクライアントだったもう片方のイヤホンがすぐさまマスターとして振る舞うようになるので、片耳で音楽を聞き続ける猶予が少しだけある。
# ノイズ
現行品の不具合で、クライアント側に微細なホワイトノイズが乗っていることがある。
今週末に Android 向けのファームウェアアップデートが出るらしい。iOS 向けは 2 週間後になるようだ。
アップデートでこの問題が修正されるかわからないが、もし問題が続く場合、本社に送れば修理してくれるそうなので気になっている人はサポートに連絡を取ろう。

View File

@@ -0,0 +1,139 @@
---
title: 普段使いしているもの
date: 2018-03-29 22:33:00 +09:00
redirect_from: "/blog/2018/03/29/products-guide"
updated: 2018-08-03 09:00:00 +09:00
---
普段使いしているプロダクトを紹介する。
「20XX 年に買ってよかったもの」を毎年書くのではなく、この記事を定期的に更新しようと思う。
# ハードウェア
## [MacBook 12"](http://www.apple.com/jp/shop/buy-mac/macbook/%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%89-512gb)
スペックを犠牲にして持ち運びに極振りした超コンパクトな MacBook。
## [EARIN M-2](https://earin.com)
EARIN M-1 から買い替えた。
コンパクトさに極振りした完全無線イヤホン。万人受けしないプロダクトではあるが、その特性を理解して使えば手放せないギアになる。
[レビュー記事](https://uechi.io/blog/2018/03/24/earin-m2-first-look)
## [Bose QuietControl 30](https://www.bose.co.jp/ja_jp/products/headphones/earphones/quietcontrol-30.html)
ノイズキャンセラーイヤホン QuietComfort 20 の後継機種。ワイヤレス化して、取り回しがよくなった。QuietControl の名の通り、ノイズキャンセリングの度合いを調整するボタンが搭載されている。しかし、実際のところ最大と最小しか使わないので、ボタンを押す手間がかえって不便に感じる。
ノイズ除去能は随一なので、旅行には必ず持っていく。
## [Apple Watch series 2 Nike+](http://www.apple.com/jp/shop/buy-watch/apple-watch-nike/%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%82%B0%E3%83%AC%E3%82%A4-%E3%82%A2%E3%83%AB%E3%83%9F%E3%83%8B%E3%82%A6%E3%83%A0-%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF-%E3%83%9C%E3%83%AB%E3%83%88-%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%84%E3%83%90%E3%83%B3%E3%83%89?preSelect=false&product=MP0J2J/A&step=detail#)
最終的に以下の機能しか使わなくなった。
- 時計
- タイマー
- 運動中の心拍数や歩数の計測
- Suica
- メッセージの閲覧・返信
## [M-Audio Keystation 88](http://m-audio.com/products/view/keystation-88)
88 鍵 MIDI キーボード。Oxygen 88 が壊れたので同じメーカーの別製品に買い替えた。Oxygen 88 の重さ(21kg)に懲り、持ち運びが容易な鍵盤を選んだ。
## [BALMUDA The Pot](https://www.balmuda.com/jp/pot/)
トースターで有名な BALMUDA が 11 月に出した電気ケトル。お茶やコーヒーを飲むときしか使わないので 0.6L でも十分だと感じた。注ぎ口の切れが良く、気に入っている。
最近は Stagg EKG のような温度調整機能付きケトルが気になっている。
## [Nature Remo](https://nature.global/)
スマートな赤外線リモコン。
Google Home や Alexa、IFTTT と連携して使っている。
## [Knirps Big Duomatic Safety](http://www.knirps.jp/product.html)
知りうる中で最も大きなサイズの自動開閉折りたたみ傘。コンビニで売っている傘よりも大きいので安心感が違う。
## [Shure MOTIV MV88](https://www.shure.co.jp/go/motiv-mic/jp/mv88/)
非常にコンパクトなコンデンサーマイク。Lightning 端子を備えており、iPhone/iPad に繋いで録音ができる。
## [LEZYNE CNC Floor Drive ABS2](http://www.wiggle.jp/lezyne-cnc-floor-drive-abs2-%E3%83%95%E3%83%AD%E3%82%A2%E3%83%9D%E3%83%B3%E3%83%97/)
デザインと機能性が両立した自転車の空気入れ。仏式と米式バルブに対応している。回転するねじ込みノズルが特徴的で、BROMPTON のような小口径タイヤを持つ自転車でも問題なく使える。
## [iPad Pro 10.5 インチ](http://www.apple.com/jp/ipad-pro/)
[Apple Pencil](http://www.apple.com/jp/shop/product/MK0C2J/A/ipad-pro%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEapple-pencil)との組み合わせがとても良い。ノートを書いたり、絵を描くのに使っている。
スタンドは、Twelve South の[Compass 2](http://www.apple.com/jp/shop/product/HF022ZM/B/twelve-south-compass-2-stand-for-ipad)を使っている。折りたたむと Apple Pencil2 本分くらいに小さくなる。
# サブスクリプションサービス
## G Suite
月 540 円。
好きなドメインで Google サービスを利用出来るので使っている。Gmail にも y@uechi.io でログイン出来る。
## Apple Music
学割で月 480 円。普段の音楽ソースはこれに統一している。
## iTunes Match
CD からインポートした曲をクラウド同期するために有効化。
## iCloud Drive
写真やクラウド同期のために容量を購入した。
## Dropbox Pro
あらゆる作業データを保存しているため容量を増やした。
## Amazon Student
Prime の学割版。年間 1400 円。
## Sketch
コンピューター 1 台ごとに課金されるため非常に割高。やめたい。
## Adobe Creative Cloud
学割で月 3000 円。
## Apple Developer Program
税金。
## MoneyForward
オンライン家計簿。電子決済縛りプレイと相性が良い。
## [Namecheap](https://www.namecheap.com/)
ドメインレジストラ。お名前.com から iwantmyname、そして Namecheap へと移行してきた。この手のサービスにしては良くデザインされており、使いやすい。
一度転送でトラブルがあり、カスタマーサポートのお世話になったことがあったが、しっかりとした仕事をしてくれた。
## [Netflix](https://www.netflix.com/jp/)
既存コンテンツの配信だけに留まらず、オリジナル作品の制作にも意欲的に取り組んでいる。
観たい作品が無くなったら購読をキャンセルし、必要に応じて再購読している。
## 珈琲きゃろっと
珈琲豆の定期宅配サービス。配送日の直前に焙煎をするため豆が新鮮なのが特徴。他にも土井珈琲が同様のサービスを提供しているので比べてみて自分に合った方を選ぼう。
## TastyTable
使い切りの食材とレシピを定期的に、または都度注文で宅配してくれるサービス。
普段なら絶対に作らないような献立が提案されてくるので、週末に普段とは一風変わった食事を楽しみたい人にオススメのサービス。
## TENTAL
テントや焚き火グッズのようなキャンプ用品をレンタル出来るサービス。
テントは高価な上にほとんど買い換えないタイプの製品なので、このようなサービスを通じて様々な種類のテントを借りて実地で試して、眼を肥やしてから購入した方が良いと感じた。
3 シーズン用を買い揃えて、やる頻度の低い冬用の装備だけレンタルするという戦術もある。

View File

@@ -0,0 +1,41 @@
---
title: Building TensorFlow from Source
date: 2018-04-10 09:41:00 +09:00
redirect_from: "/blog/2018/04/10/building-tensorflow-from-source"
---
As you may notice lines of snippet showed on [dockerfile-machinelearning](https://github.com/uetchy/dockerfile-machinelearning/blob/ffc2cadaf192b19509df0f4b87bc9d427aa30966/Dockerfile#L54-L86), TensorFlow can be non-interactively installed from source.
The code here are hugely depend on [PatWie's gist](https://gist.github.com/PatWie/0c915d5be59a518f934392219ca65c3d). I just added some build options for a newer version of TensorFlow and remove options that affect nothing.
```
PYTHON_BIN_PATH=$(which python) \
CUDA_TOOLKIT_PATH=/usr/local/cuda \
CUDNN_INSTALL_PATH=/usr/local/cuda \
PYTHON_LIB_PATH="$($PYTHON_BIN_PATH -c 'import site; print(site.getsitepackages()[0])')" \
TF_NEED_GCP=0 \
TF_NEED_CUDA=1 \
TF_CUDA_VERSION="$($CUDA_TOOLKIT_PATH/bin/nvcc --version | sed -n 's/^.*release \(.*\),.*/\1/p')" \
TF_CUDA_COMPUTE_CAPABILITIES=6.1,5.2,3.5 \
TF_NEED_HDFS=0 \
TF_NEED_OPENCL=0 \
TF_NEED_JEMALLOC=1 \
TF_ENABLE_XLA=0 \
TF_NEED_VERBS=0 \
TF_CUDA_CLANG=0 \
TF_CUDNN_VERSION="$(sed -n 's/^#define CUDNN_MAJOR\s*\(.*\).*/\1/p' $CUDNN_INSTALL_PATH/include/cudnn.h)" \
TF_NEED_MKL=0 \
TF_DOWNLOAD_MKL=0 \
TF_NEED_MPI=0 \
TF_NEED_OPENCL_SYCL=0 \
TF_NEED_S3=0 \
TF_NEED_KAFKA=0 \
TF_NEED_TENSORRT=0 \
TF_NEED_GDR=0 \
TF_SET_ANDROID_WORKSPACE=0 \
GCC_HOST_COMPILER_PATH=$(which gcc) \
CC_OPT_FLAGS="-march=native" ./configure
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package && \
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg && \
pip install /tmp/tensorflow_pkg/tensorflow-1.7.0-cp36-cp36m-linux_x86_64.whl
```

View File

@@ -0,0 +1,51 @@
---
title: 初キャンプに必要な機材
date: 2018-04-13 14:26:00 +09:00
redirect_from:
- "/blog/2018/04/13/camping"
---
先月、大洗で初めてのキャンプ泊をした。
初めてのテント泊を経験した上で得た反省点、ポイントをいくつか残しておく。
# 道具のレンタル
キャンプ道具を一度に買い揃えるのが難しかったため、テントと椅子と焚き火グリルを TENTAL でレンタルした。
6 万円以上するテントを購入前に実地で試用できるという点で、キャンプ初心者はむしろレンタルから始めることで銭失いの後悔を最小化できそうだ。
逆に、1 万円を切る道具は熟慮した上で購入した方が良い。
# 焚き火とバーベキュー
キャンプをするからにはアウトドアでしか出来ないことをするべきである。そこで焚き火とバーベキューのどちらもこなせるピコグリル 398 を持って行った。
ピコグリル 398 は重さが 400g 程度であり、厚さ 5mm 程に折りたたむことが出来る。このサイズ感で焚き火とバーベキュー両方をこなせるギアは他に無い。
バーベキュー用の炭として、ヤシガラ炭に着火剤を混ぜ込んだ形成炭を使用した。備長炭と違って簡単に火が付くため、重い着火用の風防や追加の着火剤を持って行かずに済む。
2 人で 1-2 時間程度のバーベキューであれば形成炭 4 個で十分足りた。
着火剤込みと言えどマッチで火をつけるのは難しかったので、コンパクトトーチを持って行くべきである。
また、グリルには厚手のアルミホイルを 2 枚ほど敷いておくと、バーベキューの最中に網から垂れた油を洗う手間が省ける。
ただし、焚き火を始める前にアルミホイルを取り除くべきである。そのまま焚き火を始めると、アルミホイルが溶け出し洗い物がかえって困難になる。
焚き火を熾す際は、バーベキューで使った炭を着火剤として用いると薪に自然に火がついてくれる。
干草を着火剤にする場合は薪の下に敷くべきである。着火した干草は火の粉となり周囲に広く拡散する。
# 風呂
キャンプ場のコインシャワーが壊れていた。さらに銭湯が遠く離れていたため、結局帰宅するまでお風呂に入ることが出来なかった。
次回以降はそのような状況にも備える必要がある。そこでいくつか最低限の清潔さを保つための方策を考えた。
コンパクトな折りたたみバケットに水を半分張り、沸かしたお湯を注いでぬるま湯を作る。これで洗顔が出来る。さらにドライシャンプーで髪の油脂を取り除き、ぬるま湯で洗い流す。
身体は、デオドラントシャワーシートで汚れを拭き取る。歯の汚れは歯磨きシートで拭き取る。これで最低限の身嗜みを整えることが出来るはずだ。
# 就寝時の防音
キャンプをしている人々は皆素晴らしい人なのだが、規範意識の薄い人は一定の割合で必ず存在すると考えたほうが自然である。
モルデックスのような遮音性が非常に高い耳栓を一つ持っていくと良い。
# 就寝時の防寒
当日の最低気温は 3 度と予報されたが、快適下限が 3 度のダウンシュラフでは到底太刀打ち出来ないほど凍えた。
緊急の対策としてヒートテック、靴下、ネックウォーマーを装着し、さらに貼るカイロ x4 を身体中の血管が集中している場所に配置することでなんとか耐え凌いだ。
寒すぎて困ることはあれど、暖かすぎて困ることは無い。シュラフにはお金をかけるべきである。

View File

@@ -0,0 +1,21 @@
---
title: 随伴行列あるいはエルミート共軛
date: 2018-08-03 00:00:00 +09:00
redirect_from: "/blog/2018/08/03/hermitian-conjugate"
---
$m\times n$の複素行列の転置を取り、複素共軛をとった$n\times m$行列を随伴行列$A^\*$あるいはエルミート共軛という。
$$
\begin{align}
A &=\begin{pmatrix} 1 & -1-i \\ 1+i & i \end{pmatrix} \\
A^{\_} &=\begin{pmatrix} 1 & 1-i \\ -1+i & -i \end{pmatrix} \\
A^{\_} &= \bar{A}^T
\end{align}
$$
表記には方言があり$A^\*, A^H, A^\dagger$などのバリエーションがある。
# エルミート行列
複素数を成分に持つ正方行列$A$があったとして、その行列 A の随伴行列$A^\*$が$A$と等しい場合、行列$A$をエルミート行列という。

View File

@@ -0,0 +1,83 @@
---
title: 生活の自動化
date: 2018-08-05 00:00:00 +09:00
redirect_from: "/blog/2018/08/05/life-automation"
---
生活にオートメーションを上手く取り入れ、本当にやりたいことや、やるべきことに集中できる環境をつくろう。
# 洗濯の自動化
Panasonic のドラム洗濯乾燥機を使っている。威力を最大限に享受するため、タンブラー乾燥向けの普段着を揃えておくことも重要だ。
洗剤は粉と液体とが一体化したジェルボール洗剤が便利。ドラムの底にひとつ置くだけでよく、計量する必要がない。
# 食器洗いの自動化
Panasonic NC-TCR2 という一人暮らし用のコンパクト食洗乾燥機が便利。
洗濯機と同じく食洗機専用のジェルボール洗剤を使えば計量する手間を省ける。
# 照明の自動化
Hue はインターネット経由で明るさや色相をコントロールすることができる電球である。
- 「家から離れたら消灯」
- 「家に近付いたら点灯」
- 「日が暮れたら暖色系に切り替える」
- 「23 時になったら消灯」
など多様なルールを作ることができる。
家では外の明るさに合わせて照明の明るさを調整して、概日リズムが崩れにくいようにルールを決めている。
# 空調の自動化
Nature Remo でエアコンの操作を自動化した。
- 「湿度が高ければドライに変更」
- 「家から離れたら電源オフ」
- 「朝になったら冷房へ切り替え」
など多様なルールを作ることができる。
Nature Remo 自体はエアコン専用ではなく、赤外線で操作出来るデバイスであればなんでも操作できる。家ではテレビもこれで操作している。
ちなみに[Nature Remo を NodeJS で操作することができるライブラリ](https://github.com/uetchy/nature-remo)を作ったので、是非使ってみて欲しい。ライブラリ経由で温度・湿度・明度のセンサー値を取得したり、指定したモードにエアコンを切り替えることができる。
# 自動施錠・自動開錠
Qrio Lock をドアに取り付けることでオートロックとオートアンロックができるようになった。
# 睡眠記録の自動化
Withings 改め Nokia の Sleep を使っている。
睡眠を計測する際、身体にウェアラブルデバイスを身につける必要がないという点で、Nokia Sleep は Apple Watch や Fitbit よりも優れている。
機能としては、入眠・起床検知、心拍数記録、睡眠深度解析、いびき検出、IFTTT 連携がある。
# 体重記録の自動化
Withings の Wi-Fi Scale を使っている。体重と体脂肪率、心拍数、BMI を Wi-Fi 経由でクラウドに自動記録し、Apple Health などで推移を確認できる。
Wi-Fi Scale には CO2 センサーもついており、部屋の二酸化炭素濃度を記録してくれる。
# コーヒー豆のサブスクリプション
珈琲きゃろっとのサブスクリプションを利用している。
# オンラインスーパー
イトーヨーカドーのオンラインスーパーを使っている。お気に入りリストへ牛乳、オレンジ、ベーコン、卵など毎回買うものを登録しておくことで、慣れれば 5 分程度で注文が完了する。あとは指定した時間に家へ商品を届けてくれる。
# 自動家計簿
MoneyForward を使っている。支出を自動で食費、趣味、日用品などに仕分けてくれる。
無現金縛りプレイと相性が良い。
# 自炊の効率化
最近 COMP で食事を置き換え始めた。まだ評価は出来ないが少なくとも味は悪くなく(薄いきな粉のような味)、不足しがちなビタミンや鉄分を補える点では良い製品だと思う。
# 気になる製品
## ルンバ
ルンバは気になるが、絨毯を取り除くわけにもいかないので二の足を踏んでいる。ルンバについては[KainokiKaede's diary](http://kainokikaede.hatenablog.com/entry/2018/07/24/185452)の素晴らしい記事を読んで欲しい。

View File

@@ -0,0 +1,21 @@
---
title: Know your deps on package.json in seconds
date: 2018-09-02 03:23:00 +09:00
---
How do you know what packages that project/library depend on and what exactly are that packages doing for?
You'll want to quickly survey on them. So [npm-deps-list](https://github.com/uetchy/npm-deps-list) is here for.
![screen-1.png.jpeg](/uploads/screen-1.png.jpeg)
You can install them using `npm` or `yarn`.
```bash
npm install -g npm-deps-list
```
Running `ndl`, you will get a detailed list of dependencies for the package on the current directory.
If you are using iTerm2, you can also `Command + Click` on a package name to jump to their homepage.
If you have any idea on it, please consider submitting an issue or a pull request!

View File

@@ -0,0 +1,35 @@
---
title: Comparing OSS on GitHub
date: 2018-09-23 03:21:00 +09:00
---
You are making a decision on which open source project you would adopt for your newly developing application.
This time it is a little bit difficult for you because the candidates are seemingly almost the same in a functional perspective.
So let's delve into this from a different perspective: contributors and users activities.
- More stars, forks, and watchers are the good vital sign of a vibrant project, which indicates many users getting involved with the project.
- More issues stand for both good and bad sign but basically it indicates their activeness.
- Organization owned projects are, in most cases, more stable and robust than user owned projects.
- Size of the repository have complexed meanings but in practice, simpler code is better than the massive one if both are trying to achieve the same goal.
I made a simple tool to get you covered with the above guidelines.
# gh-compare
![screencast.gif](/uploads/screencast.gif)
[gh-compare](https://github.com/uetchy/gh-compare) is a simple terminal app to explore your candidates and aggregate a result into a nice-looking report.
```bash
npm install -g gh-compare
gh-compare facebook/react vuejs/vue riot/riot
```
![1xfd1gcrfntpft5bbu5s.png.jpeg](/uploads/1xfd1gcrfntpft5bbu5s.png.jpeg)
You will see the GitHub activities for each candidate at once.
It could help you to decide which library you would adopt!
Warmly welcome to any comments/ideas to improve `gh-compare`!

View File

@@ -0,0 +1,47 @@
---
title: 'Math API: LaTeX Math as SVG image'
date: 2018-10-23 03:19:00 +09:00
---
I've always wanted to put LaTeX Math equations on a web page where MathJax is not allowed to run inside it.
Spending some time, I made [Math API](https://math.now.sh), that renders LaTeX Math markup into an SVG image.
So you can place your equation on almost everywhere on which you could put `<img>` or Markdown (`![]()`), such as GitHub, Jupyter Notebook or dev.to (here!).
```markdown
![](https://math.now.sh?from=\LaTeX)
```
![Equation](https://math.now.sh?from=%5CLaTeX)
```markdown
![](https://math.now.sh?from=\log\prod^N_{i}x_{i}=\sum^N_i\log{x_i})
```
![Equation](https://math.now.sh?from=%5Clog%5Cprod%5EN_%7Bi%7Dx_%7Bi%7D%3D%5Csum%5EN_i%5Clog%7Bx_i%7D)
# Inline image
![fqea9nq2wv9in15lqlf3.png.jpeg](/uploads/fqea9nq2wv9in15lqlf3.png.jpeg)
![43slt0h6dfhox1xwmuti.png.jpeg](/uploads/43slt0h6dfhox1xwmuti.png.jpeg)
It is possible to generate an inline equation by changing the query from `from` to `inline`.
```markdown
<img src="https://math.now.sh?inline=\\LaTeX" />
```
# Online Editor
Also, there is the online editor available at https://math.now.sh.
![gg2wil3exu9lyj7ppuoy.png](/uploads/gg2wil3exu9lyj7ppuoy.png)
# Conclusion
The source code is available on [GitHub](https://github.com/uetchy/math-api).
Give it a try and leave a comment/idea for a new feature.

View File

@@ -0,0 +1,52 @@
---
title: Guide to recover data from damaged HDD
date: 2018-02-15 12:45:00 +09:00
redirect_from: "/blog/2018/02/15/data-recovery"
---
This is a complete guide describes how to rescue your data from old and wrecked HDD.
Suppose you are using macOS and your endangered disk is formatted with HFS+.
# Beforehand
## Inspect
Use `diskutil list` to verify that which drive is damaged.
This article assumes that `disk2` is the damaged AND a partition `disk2s2` is what you expected to be rescued. You don't want to save `disk2s1` that is usually EFI partition.
## Damage Control
To prevent extra load, unmount the damaged disk: `diskutil unmountDisk disk2`.
# Rescue
If you never been `ddrescue`, `brew install ddrescue` to install them on your machine.
```bash
cd /Volumes/AnotherDriveLargerThanDamagedDrive
sudo ddrescue -n -v /dev/disk2s2 ./hdimage.dmg ./mapfile
```
So this command will start rescuing your data from `/dev/disk2s2` partition to `hdimage.dmg` while writing log to `mapfile`.
You might want to rescue data as fast as possible. option `-n` is here for. This will skip scraping phase that causes aggressive disk access.
Option `-v` stand for verbose logging.
```bash
sudo ddrescue -r5 -v /dev/rdisk2s2 ./hdimage.dmg ./mapfile
```
When the first command completed, do it again with different parameters to aggressively scrape bad area failed to access the first time.
Option `-r5` means ddrescue will try rescuing damaged area for 5 times.
And `/dev/disk2s2` become `/dev/rdisk2s2` this time. `r` stand for raw so this will access the disk more direct way.
> Beware: You MUST use same `hdimage.dmg` and `mapfile` between two commands. `mapfile` remains information of which blocks were rescued.
# Aftercare
Mount `hdimage.dmg` and copy files and directories to a new drive. If the image is broken, you can recover it using `testdisk`.