寒い朝

コンピュータ系のことを書きます

秘境、土合駅に行く

土合駅は地下深くにホームがあり、下りホームへたどり着くまで462段の階段があります。停車する電車が著しく少なく、人里離れた場所にあることから秘境駅とも言われています。今回は9月初頭に行ってきました。

地上ホーム(上り)

f:id:microwaver17:20161202143724j:plain f:id:microwaver17:20161202143842j:plain 山に囲まれている

f:id:microwaver17:20161202143901j:plain 改札口

f:id:microwaver17:20161202143910j:plain 一時間に一本もない。時間待ちには歩いて2~3分のところにある「谷川岳ドライブイン」に行くのがいい。というかそこしかない。

f:id:microwaver17:20161202143917j:plain 登山客への注意書きと掲示板

f:id:microwaver17:20161202143926j:plain 想像してた以上に大きい駅

f:id:microwaver17:20161202143934j:plain ここから下りホームへ降りていく

続きを読む

Huawei P9 Lite のブートローダのアンロック

http://prtimes.jp/i/2531/140/resize/d2531-140-993680-3.jpg

『HUAWEI P9』の絶大な人気がファーウェイの大幅な成長に貢献|華為技術日本株式会社のプレスリリースより

アンロックコードコードが入手できない

Rootを取るにはブートローダをアンロック(OSを書き換えれるようにする)しなければいけない。前回の Ascend G620S の時はHuaweiの公式サイトでアンロックコードを入手できたが、現在は申請ページにログインするとトップページに飛ばされてしまい、アンロックコードが手に入れられない。中国語のページでやったりしてもできない。xdaの書き込みにもそのようなものがあった。Huawei公式のカスタムROM系のページが最近リニューアルされているようで、こちらのブログ記事、HUAWEI honor8のroot化が成功したので手順まとめ - k1r Blog に載ってる画像と現在のサイトが違う。そのせいかもしれない。

どうもこのようなことはよくあることらしく、「(ヨーロッパで)HUAWEIのページから直接アンロックコードを手に入れようとすると問題が起きる事があるが、DC-unlockerでは問題はない。」という書き込みもあった。もっとも、この書き込みは DC-unlocker のステマの可能性もあるが。

ということで、仕方なくDC-unlockerを使うことにしました。

注意:以下の方法は一歩間違えればスマホを壊す可能性があります。もし実際にやる場合は自己責任で行ってください。特に今回はお金がかかっているので、何をしてるかわからない場合はやらないでください。

DC-unlockerでアンロック

DC-unlockerは端末をいろいろアンロックしたりする有料サービスです。今回はブートローダのアンロックコードを取得するのに使いました。xdaのフォーラムを見ているとたまに出てくるので信頼して使ってみたところ、「本当にアンロックできるのか」という点では詐欺ではありませんでした。

対応機種・値段

DC-unlocker features for Huawei Android phones によると、P9 Lite VNS-L02 の欄に Read bootloader code とあるので、対応機種です。

また、Credits for users who don't have a DC-unlocker dongle needed for one operation の Huawei HiSilicon Read Bootloader Code の行を見ると、4クレジットとあります。4クレジットを手に入れるには涙をのんで4ユーロを払う必要があります。

アンロックコードの取得方法

  1. HiSuite をインストール(ドライバがインストールされる)
  2. P9 Lite を接続し、manufacture mode にする
    • 電話アプリで「*#*#2846579#*#*」 を入力 → Background settings → USB ports settings にある
  3. DC-unlocker clientを起動
  4. 「Select manufacturer」を「Huawei Phones」にして、虫眼鏡マーク(Detect Phone)をクリック
  5. きちんと認識されたのを確認
  6. DC-unlocker の Webサイトで4ユーロ払う(Paypalが安心)
  7. DC-unlocker client の Server タブに、発行されたユーザIDとパスワードを入力してログイン
  8. Unlocking タブの Read bootloader code をクリックすると、アンロックコードが表示される
    • 間違ったのを選択すると4ユーロがパーになるので気をつけて

f:id:microwaver17:20161201181350p:plain

アンロックの実行

  1. 開発者向けオプションの中の「OEMロック解除を有効にする」を有効にする
  2. USBデバッグを有効にしてadb reboot bootloaderを実行
  3. 白いFastbootの画面になったらfastboot oem unlock <アンロックコード>を実行
  4. バイスが初期化され、アンロックが完了する

Root化

自分は元のROMでのRoot化が上手くできなかったので CyanogenMod 13 を入れてしまいました。

参考文献

TSをBDMVにしてBD-RやBD-REに焼くときに気づいたこと

事前準備

検証機種

  • BH10NS30 LG製 PCブルーレイドライブ
  • PS3 第2世代
  • LCD-40MDR1 三菱製 レコーダー付きテレビ 2010年発売
  • DMR-BZT710 パナソニック製 レコーダー 2011年発売

ソフトウェア

  • BonTsDemux: TSファイルをm2vとwavに分割する。5.1chのダウンミックス、不要なサービスの削除もできる
  • tsMuxeR: ひとつの動画をBlu-rayに書き込める形に整形する
  • multiAVCHD: 複数の動画をBlu-rayに書き込める形に変換・整形する
  • ImgBurn: Blu-rayディスクに書き込む

大まかな手順の流れ

Blu-rayに記録するためのフォーマットは、レコーダーで録画するときに使うBDAVと、映画などの製品に用いられているBDMVがある。自分でBDAVで書き込むには何個もツールを使うようで面倒くさいと思い、BDMVにした。再生互換性はBDAVのほうが良いそうだが、結果的にBDMVでもだいたい見れた(自分の環境では)。

ファイルが一つの場合だけ

工程: TSファイル → BonTsDemux(m2v+wav) → tsMuxeR(Blu-ray folder) → ImgBurn

ファイルが複数の場合

工程: TSファイル → BonTsDemux(m2v+wav) → multiAVCHD(Blu-ray disc) → ImgBurn

  • multiAVCHDでは先にm2vだけを読み込み、Propertyを開いてWAVを追加する
  • LPCM(WAV)でBDMVを作成したいときは"Subtitles & Audio"タブの"Convert LPCM to AC3"のチェックを外す
  • エンコードは起こらない

分かったこと

BD-R と BD-RE のプレイヤー側での差異

TSファイルを、BonTsDemuxで映像と音声に分離し、tsMuxeRでBDMVに整形し、それをBD-REに記録した。しかし、それを再生しようとしても上手く行かなかった。試行錯誤した結果、BD-RBD-REにそれぞれ同一のイメージを記録したとしても、見れる機種と見れない機種が出てくることがわかった。

機種 BD-R BD-RE
PS3 ×
LCD-40MDR1
DMR-BZT710 ×

BDMV(BD-Video)とBDAVの違いBlue-rayの概要、豆知識というページで、機種が対応している規格のバージョンによって、再生できるフォーマットとディスクの組み合わせが異なるとのことが書かれており、その通りの結果だったようだ。

音声の形式はどうするのか

音声がAACBDMVは規格違反なのだが、tsMuxeRを使った場合は作れてしまう(エラーメッセージは出る)。その場合にも、見れる機種と見れない機種が存在するようだ。

機種 BD-R
PS3 ×
LCD-40MDR1
DMR-BZT710

音声はAC-3形式に変換するのが定石かも知れないが、BonTsDemuxで出力された非圧縮のLPCM(WAV)のままでも上手く行った。下の画像のように、音声がLPCMオンリーのBD-ROMも存在するので、規格に違反することはないだろう。

f:id:microwaver17:20161123105525p:plain

非圧縮のLPCMによる容量の増加は、それほど悩まなくていいと思う。DVD時代と比べて動画の情報量は格段に増えたが、音声の情報量はそれほど上がっていない。なので全体に占める音声のサイズの割合は落ちているはずだ。下の表に参考値を書く。

Blu-ray
形式 サイズ 動画(19.5GB)と合わせたサイズ 全体での音声の割合
LPCM 1577MB 21.0GB 7.5%
AC-3 328MB 19.8GB 1.6%
DVD
形式 サイズ 動画(3.18GB)と合わせたサイズ 全体での音声の割合
LPCM 1280MB 4.46GB 28.7%
AC-3 274MB 3.45GB 7.9%

大事な点

  • 同じファイル構成のBDMVでも、BD-Rに書き込んだ場合とBD-REに書き込んだ場合とでは、見れる機種が異なる
    • →最新の機種やアップデートならば規格が対応していて見れる可能性がある
  • 音声がAACBDMVは規格違反だが、機種によっては見れる場合があるが、基本的に見れない
  • 音声がLPCM(WAV)のBDMVは規格違反ではないし、再生もできる

AVRとLEDマトリクスで自然な階調表現

f:id:microwaver17:20161113214948j:plain

LEDマトリクスで画像の回転(90度単位ではない回転を含む)をする関係で自然な階調表現ができるプログラムを作りました。明るさに2値しか取れないと各種の補完アルゴリズムが使えず、回転してもまともな画像にならない。

使用した部品

すべて秋月電子で買いました。

  • AVR ATmega326P-PU
  • OSL641501-ARA
    • 8x8ドットのLEDマトリクス 200円
  • SN74HC595N

回路

f:id:microwaver17:20160829001443p:plain:w500

LEDへの電流の流れはシフトレジスタ側からマイコン側になっているので、シフトレジスタ側を1マイコン側を0にすると点灯します。

階調表現の方法

シフトレジスタ側が、ある1列に1を出力している間に、マイコン側でその列の各LEDをPWMで制御する。

PWMのパルスを8分の1に分け、8段階の明るさを作る・・・とやってしまうと不自然になる。物理的な輝度と、心理的な明るさは比例しないので滑らかなグラデーションにならない。

人間の知覚に合わせた色空間であるCIE Labによると、明るさ: L と輝度: Y の関係はザックリといえば下の式とグラフになります。

f:id:microwaver17:20160826000208p:plain:w400

このグラフから、0付近では  Y が少し変化すると  L は大きく変化する、1付近では  Y が大きく変化しても  L の変化は小さい、と読み取れる。言い換えれば、暗部の変化に敏感で、明部の変化に鈍感だ、ということが言えると思います。今回は考慮しなかったが、実際は目の順応や光源によっても変化する。

実装

今回は明るさを8段階、パルス幅を16段階に分けて表現する。どちらも段数が少ないが、あまり多くしても他の処理ができなくなるので。

明るさ パルス幅
0 0
1 1
2 1
3 1
4 3
5 5
6 9
7 15

明るさ 1, 2, 3 は同じパルス幅になっているが、16段階での分解能ではこれ以上分けられないのでしょうがない。

等分割した場合

明るい方の違いがわからず、急に暗くなっていくように見える

f:id:microwaver17:20160829203207j:plain:w400

波形
@grid on bright_7 __~~~~~~~~~~~~~~__ bright_6 __~~~~~~~~~~~~____ bright_5 __~~~~~~~~~~______ bright_4 __~~~~~~~~________ bright_3 __~~~~~~__________ bright_2 __~~~~____________ bright_1 __~~______________ bright_0 __________________
視覚特性を考慮した場合

5番目まではちゃんと階調が見える(カメラ越しでは分かりにくいが、肉眼ではもう少しよく見える)。

f:id:microwaver17:20160829203205j:plain:w400

波形
@grid on bright_7 __~~~~~~~~~~~~~~~__ bright_6 __~~~~~~~~~________ bright_5 __~~~~~____________ bright_4 __~~~______________ bright_3 __~________________ bright_2 __~________________ bright_1 __~________________ bright_0 ___________________
プログラム
char bright_curve[8] = {
    0, 1, 1, 1, 3, 5, 9, 15,
};

void refresh_display()
{  
  for (short line = 0; line < 8; line++){

    // 1列目の時だけシフトレジスタに1を入力
    if (line == 0){
      PORTB |= _BV(PORTB3);
    }else{
      PORTB &= ~_BV(PORTB3);
    }

    // シフトレジスタの内容を一つずらす
    PORTB |= _BV(PORTB1);
    PORTB &= ~_BV(PORTB1);
    PORTB |= _BV(PORTB2);
    PORTB &= ~_BV(PORTB2);

    // LEDのPWM制御
    // forループの周期が一定とみなし、タイマを使わずにPWMを出力する
    // 内蔵タイマを使えば正確な波形が出せるが、他の処理に割ける時間が減ってしまう
    for (short bright = 0; bright < 16; bright++){
      for (short num_led = 0; num_led < 8; num_led++){
        short value = p_frame_buffer[num_led * 8 + line];
        if (bright_curve[value] > bright){
          PORTD &= ~_BV(i);  //点灯
        }else{
          PORTD |= _BV(i);   //消灯
        }
      }
    }
    PORTD = 0xff;  //全消灯
  }
}

Conclusion

人間の視覚特性に合った明るさで表示することは少しできたが、PWMの分解能が16段階では不十分で、暗部の表現がかなり限られている。

次回は「AVRとLEDマトリクスで画像を回転」の予定です。

Firefox用ポップアップ辞書アドオン「Light Dict」

お知らせ


  • 2016/11/12
    • 0.3.0から設定内容を変更したので、今までの設定がリセットされます。もとに戻す場合は再設定をお願いします。
  • 2016/8/8
    • 0.2.0とそれ以前のバージョンは Firefox 48 で動作しません。最新版へのアップデートをお願いします。

概要

f:id:microwaver17:20160328000306p:plain:right:w96

Webページ上やFirefox内蔵のPDFビューア内で選択した英単語・成句を辞書サイトで検索し、その場でポップアップ表示されます。検索ボックスに入力しての検索や検索履歴機能もあります。

使える辞書は、 Weblio・goo辞書・コトバンクUrban Dictionary です。

コンセプト

  • 単語の意味を調べることに特化 (翻訳はしない)
  • 何度も検索している単語が何かわかる
  • 例文もわかる
  • インストール・設定が簡単
  • weblioPaneの代替

リンク

使用例

f:id:microwaver17:20160327230545p:plain:w300 f:id:microwaver17:20161125215401p:plain:w300 f:id:microwaver17:20161125215415p:plain:w300 f:id:microwaver17:20161125215418p:plain:w300

よくある (ありそうな) 質問

  • 広告が邪魔だ
    • 元の辞書サイトの広告なので仕方ありません。ちなみにAdblock Plusは使えます。

既知の不具合

  • インラインフレーム・テキストエリア未対応
    • ツールバーのボタンを押すと検索ボックスが出てくるので、そこにコピペして検索してください。
  • 発音ボタンが正しく表示できない
  • キーボードイベントをフックするアドオンとの相性(vimperatorなど)
    • vimperatorであれば、Shift + Esc (またはInsert) で一時的に無効化すれば使えます。
    • ツールバーにボタンを追加したので、それを使ってください。
  • Weblioがで404ページに飛ばされる*2
    • 飛ばされないためにトリッキーなことをしているので、上手く行かない可能性はあるが、再現できなかった
  • コトバンクが表示されない*3
    • 併用する拡張機能によって表示されないらしいが、再現できなかった

お問い合わせ

バグ報告・質問・要望などは下記のメールアドレスやコメントに送ってください。

プロフィール欄のはてなID(「id:」は除く) アットマーク ホットメール ドットコム

バージョン履歴

  • 0.0.1 (2016/3)
    • 最初のバージョン
  • 0.0.3 (2016/3)
    • Weblioに加え、goo辞書・コトバンクを追加
    • 2語以上の単語に対応 (“United States” など)
  • 0.2.0 (2016/4)
    • ロード中にクルクルを表示するようにした
    • 記号を含む単語に対応 (“e.g.” など)
  • 0.2.1 (2016/8)
    • Firefox 48 で動作しない不具合に対応
  • 0.3.0 (2016/11)
    • あの Urban Dictionary に対応
    • 2つのキーにそれぞれ別の辞書を当てて使えるようにした
    • 検索結果パネルの表示位置がおかしくなる現象を修正
    • リロードしないと設定が反映されない現象を修正
  • 0.4.0 (2016/11)
    • 検索履歴機能の追加
    • ツールバーのボタンからの検索機能の追加

補足

以前はweblioPaneが使えたのですがFirefoxのバージョンアップに追従しなくなってしまったので、同様なアドオンを作りました。もうすぐアドオンの推奨SDKがWebExtentionになるので、いま新規にアドオンを作るのは後々二度手間が発生しそう、とはいっても今使えるものが必要であることも、またしかり。 そもそもChromeにある「Weblioエクステンション」がFirefoxにあればいいのに。まあ、とにかく使ってください。

※追記

ついに、2017年11月14日リリース予定のFirefox 57からWebExtentionしか使えなくなる。Light Dictは一応WebExtentionを念頭に置いて開発してきたつもりなので、そんなに難しくなく書き直せるはずだ。