年中アイス

いろいろつらつら

Kindle voyageが動かなくなった(交換品受領済)

12/7 交換品受領と、時系列、リセット後の操作一部追記

時系列
  • 11/21 kindle voyage到着
  • 11/30頃? スリープから復帰しなくなる
  • 12/3 サポートと電話連絡
  • 12/7 交換品到着
発生した事象

11月に少し遅れて注文したKindle voyage(WiFi、キャンペーン情報なし版)が11/21頃に届いて少し。最初は使えていましたが、途中からスリープすると復帰しなくなりました。最初は、フリーズもあるよねと思いながら、再起動したのですが、繰り返す。

状況としては

  • 手動でも自動でも、スリープ(絵の状態)になって10分ぐらい経つと、正常復帰できなくなる。手動スリープした直後は正常に戻る。
  • この状態に陥ってから電源を押すと、いくつかパターンがある。
    • スリープ前の画面がそのまま表示される。画面ロックのパスワードが設定されているにも関わらず聞かれない。ただ、そこから他のことはできない。
    • 本を開こうとしたり、メニューを押すと、アプリケーションが起動できませんでした。と出る。この記事と同じ。Kindle Voyage 初期不良で交換になった
    • 画面が暗転を繰り返すだけ
  • 画面の中の一部文字が欠けて表示される(これはこのスリープ復帰しない以前に本の一部が欠けていて、本のミスかと思いましたが不具合の様子)
  • 電源ボタンを数秒押して出る再起動メニューは、選択しても反応しない。
  • 電源ボタンを押しっぱなし40秒再起動は動き、正常な状態に戻る。

毎回40秒再起動して本を読むのは我慢できないので、サポートに連絡しなきゃーとしてたら、状況をつぶやいてたTwitterにサポートから返信が。本当にTwitter便利です。
リセットのやり方を教えてもらって、2回試すも改善せず。残念。

リセット後の動きは以下

  • リセットする
  • 本をダウンロードする
  • バックライトをオフ
  • フォントサイズを下から5番目に
  • 画面ロックパスを設定する
  • なんかフォントのアップデートがかかる

再度Twitterに返信して、問い合わせ窓口から電話番号を伝えて、翌日連絡がきて、

  • 実機を手元において電話でいくつか確認
  • シリアル番号、ファームバージョンの確認
  • 上記事象の説明
  • 交換対応を進める旨と、在庫がないため即時対応ができないお詫び
  • ファームが1つ古いのでバージョンアップのお願い(結果は、5.6.1(2531760037)にアップデートするも、残念ながら改善されず)

電話サポートは丁寧で良かったです。
とりあえず、改善に生かしてもらいたい のと、不良引き当て在庫は一定数確保しておいてほしいですね。*1
kindleiOSでも読めるので、何も見れないことはないんですが、電池の消費が違うので早く新しいのがきてほしいなー。

交換品到着

12/7(日)に交換品到着。あとは壊れてるkindleの返送作業を1ヶ月以内に行います。
交換品到着は連絡してから4日ぐらいなので、個人的には対応早かったなと思ってます。あとは再発しないことを祈る。

*1:時期が読めないと回答されていましたが、結果早かったので修正

homebrewで自作のバイナリを配布する。

rnzooのインストールを簡略化するために、homebrew経由で、インストールできるようにしたのでその時のメモ。
rnzooがhomebrewで入れられるようになりました。 - 年中アイス

※2014/11/5 versionの指定をミスしていたので修正

homebrewとは

homebrewはmac向けのパッケージ管理ツールです。最近Linuxにも対応?fork?したようです。*1
Formulaという単位で、ツールとインストール情報を定義し、それを指定して、インストールや依存の解決を行っています。

通常、homebrewでインストールできるようにするためには、公式のリポジトリに、Formulaをプルリクする必要があります。ただ、これを行わなくても、自分で作ったリポジトリにFormulaを置いて、brew tapというコマンドで、取り込むことができます。yum/aptに追加リポジトリを登録するのと同じ感じです。

作ってみた

pecoで使われていて、簡単だということだったので、やってみました。日本語での情報は少ないものの、Formulaの書き方自体は公式のリポジトリ*2にいっぱいあるので参考にはなると思います。
私はだいぶpecoのFormulaを参考にしました。
https://github.com/peco/homebrew-peco/blob/master/peco.rb

出来上がったrnzooがこちら。
homebrew-rnzoo/rnzoo.rb at master · reiki4040/homebrew-rnzoo · GitHub

作り方

※2020/02/22 追記
Goのツールをhomebrewで配布する場合は、以下の記事の方が簡単に行えます。

reiki4040.hatenablog.com

追記ここまで

  • brew createでひな形作成
  • 必要な手順を加える
  • インストール確認
  • 自分のリポジトリを作ってpush
  • tapしてインストール確認
brew createでひな形作成

brew createするとFormula用のrubyファイルが作られます。

brew create http://example.com/foo-0.1.tar.gz

自動でエディタが立ち上がりますが、ファイルの作成先は、/usr/local/Library/Formula/以下、ファイル名は、url末尾のファイル名の先頭部分?が自動で切りだされます。この例だとfoo.rbです。

必要な手順を加える

作成されたひな形には、いろいろなコメントやブロックがありますが、一旦使わないのは無視して、今回使うものだけにしぼります。以下がrnzooのformulaです。

require "formula"

HOMEBREW_RNZOO_VERSION="0.2.0"
class Rnzoo < Formula
  homepage 'https://github.com/reiki4040/rnzoo'

  if OS.mac?
    url "https://github.com/reiki4040/rnzoo/releases/download/#{HOMEBREW_RNZOO_VERSION}/rnzoo-#{HOMEBREW_RNZOO_VERSION}-darwin-amd64.zip"
    sha1 '203853d469537d925d90a25bdb9112e7e395b0ec'
  end

  version HOMEBREW_RNZOO_VERSION

  depends_on 'peco'
  
  def install
    # rnssh, ec2list, ltsv_pipe
    bin.install Dir['bin/*']
  end
 
  # show message after installation.
  def caveats
    msg = <<-EOF.undent
    # rnzoo need AWS access key for working.
    # Please set environment variable for AWS connection.
    # (~/.bashrc, ~/.zshrc or other.)

    export AWS_ACCESS_KEY_ID="YOUR AWS ACCESS KEY"
    export AWS_SECRET_ACCESS_KEY="YOUR AWS SECRET ACCESS KEY"
    
    # Option: you can set default aws region.

    export AWS_REGION="ap-northeast-1"

EOF
  end
end
  • クラス名

自分のツールの名称に合わせるのが良さそうです。

  • homepage

brew homeで開かれるURLを指定します。
rnzooはgithubリポジトリを指定しています。github.ioやwiki等、他に紹介ページ等あればそれを指定しても良いと思います。

アーカイブの指定。sha1でハッシュのチェックができます。(md5もあります)
バージョンによって異なるURLを用意しているので、peco同様変数で分けます。また、この部分に限らずですが、MacLinux、32/64bit等の判断ができるようです。

  • version

バージョン指定、ここを見てhomebrewはアップデートの判断をします。

※2014/11/5間違っていたので修正
version=HOMEBREW_RNZOO_VERSION
version HOMEBREW_RNZOO_VERSION

間の=は不要でした。

  • depends_on

依存のあるFormulaがあれば、名称を指定。rnzooの場合は、pecoが必要なので記述しています。

  • install method

インストール手順です。標準でDSLが用意されており、それを利用しています。ここでは、urlに指定したアーカイブがダウンロード、解凍され、そのディレクトリ内に移動した状態になるようです。

bin.installは、homebrewが使っているパスに、symlinkを張るDSLです。

Dir['bin/*']は、対象ディレクトリ内の指定なので、bin以下のファイルすべてのsymlinkを作り、PATHが通っているようにさせます。

rnzooのアーカイブ内は以下のような感じなので、'bin/*'で、rnssh, ec2list, ltsv_pipeの3つがsymlink対象になります。

rnzoo-darwin-amd64 <- 解凍時に作成されるディレクトリ
  |- bin
  |   |- rnssh
  |   |- ec2list
  |   -- ltsv_pipe
  |
  |- README.md
  -- LICENSE
  • caveats method

インストール後に表示したいメッセージがあればここに記述します。これは、brew infoでもcaveatsという項目で後で確認することができます。
rnzooの場合は、AWSの接続に必要な環境設定があるので、それを書いています。

  • その他

pecoにあるbuild.head?は、brew installの--headオプションへの対応で、pecoの場合は、最新のマスタをcloneして、go buildしたpecoを入れるようになっているようです。rnzooは、特にまだ対応はしていません。

インストール確認

brew createで作っていたら、ローカルではbrew installできるので、デバッグオプション付きで実行して確認してみます。

brew install --verbose --debug foo

やり直す時は一旦削除。今回の内容は、アーカイブからsymlink張るだけなので以下で大丈夫そうです。

brew uninstall foo
自分のリポジトリを作ってpush

tap用のリポジトリを作ります。homebrew-fooというようにhomebrew-というprefixが必要です。この後に続けた文字列がtapする時の名称になります。
rnzooの場合だと、以下です。

https://github.com/reiki4040/homebrew-rnzoobrew tap reiki4040/rnzoo

これをcloneしてきて、brew createで作られた、/usr/local/Library/Formula/以下にあるファイルを持ってきます。
ファイル名がbrew install等で指定するFormulaの名称になるようです。

あとは、commitしてpushします。

tapしてインストール確認

実際に、tapして確認。

brew tap you/foo
brew install foo

もし、失敗したら、エラー見て修正しましょう。私は、urlをシングルクオートで囲むように変更してしまって、変数展開されないバグが起きてました。

まとめ

実行できる状態のファイルの配布と、PATHが通った状態にするのは、簡単にできるので、golangや、shellで作られたツールは使わない手はないと思います。linux版のhomebrewもできたようなので、簡単に配布できそうです。もちろん、そのプラットフォームに対応していればの話ですが。

rnzooがhomebrewで入れられるようになりました。

rnzooの導入をより簡単にするために、homebrew経由でのインストールに対応しました。以下のコマンドでインストール可能です。

brew tap peco/peco
brew tap reiki4040/rnzoo
brew install rnzoo

pecoもtap使っているので、pecoをまだhomebrew経由で入れてない人はtapが必要です。

これで、アーカイブをダウンロードしてPATHに通す、pecoを入れるところが、自動で完了するようになりました。とりあえずMacではうまく行きます。

現状、Linuxのhomebrew向けにはなっていないので、Linuxから上記実行されるとFailすると思います。