2014/02/09

自炊環境構築

自炊

漫画やら小説やらを少しずつ買い続けた結果、本棚に入らない本が平積みになってしまっている。
ただでさえ狭い部屋なのにこれ以上狭くなるのはつらいので、電子化を考えることにした。

手持ちの本を電子化する場合の選択肢はこの3種類。

  • 代行業者
  • 自炊機材レンタル
  • 自炊機材を購入

代行業者

自炊代行

一冊100〜200円程度(+送料)で裁断〜スキャンまでやってもらえるサービス。
スキャンは300dpi&一冊のページ数が多い場合は追加料金になる業者が多い。

裁断代行


本の裁断のみの代行サービス。
一冊数十円程度(+送料)。

(参考)

自炊機材レンタル

裁断機とスキャナのセットを一週間数千円や一ヶ月一万円程度でレンタルが可能。
一日あたり何冊程度処理できるかよくわからないので、費用面で代行業者や機材購入と比べるのが難しいところ。

(参考)

自炊機材を購入


自炊に必要なのは裁断機とスキャナ。
それぞれについていろいろ調べてみた。

裁断機

いろいろ調べたところ、裁断機は全体的に大きい。狭い部屋なことを考えると、少しでも場所をとらない方がありがたい。

という観点で調べると、それなりの枚数を裁断できるものであればハンドルをおろした状態で収納できるDurodex 200DX(\37,800-)がよさそう。
もしくは、一度に裁断できる枚数は少ないが圧倒的に安いCARL DC-210N(約\9,500-)か。

上記裁断代行の値段を考えると、Durodex 200DXなら400冊、CARL DC-210Nなら100冊以上裁断するなら買ったほうが安そう。


スキャナ

メインで使っているマシンがUbuntuなことを考えると、Linuxで使えるスキャナなことが望ましい。
Linuxでスキャナを使う場合、SANEを使ってスキャナにアクセスするのが一般的らしい。

自炊用で使われているスキャナについて調べたところ、候補がいくつかに絞られた。

  • 富士通 ScanSnapシリーズ(特に2009/02発売のS1500や2012/11発売のiX500)
    SANE対応済(S1500:complete, iX500:good)。
    一番メジャーなシリーズ。価格は3万円台後半〜4万円台前半。
  • Canon DR-C125 (2011/07発売)
    SANEではuntestedになっているが、Canon EuropeのサポートページにLinux用ドライバ(SANE backend用)があるのを発見。
    価格は2万円台後半。
  • EPSON ES-D350 (2012/05発売)
    SANE対応済(good)。
    2013/11に後継モデルのDS-510が発売された。さすがにこちらはドライバがないかと思ったが、セイコーエプソン株式会社が提供するLinuxドライバの中にDS-510も含まれていた。
    価格はES-D350、DS-510ともに3万円台前半〜中盤。
  • ブラザー ADS-2500W (2012/10発売)
    公式のLinuxドライバがある。
    Webの設定管理機能があったりPCを介さずクラウド上に保存する機能があったりと他社とは少々毛色が違う感じ。
    価格は3万円台前半。

400冊程度スキャンするなら自炊代行より買ったほうが安くなりそう。

ScansnapはLinuxで使った/使えたというblog等々見つかるので問題なく使えそう。
それ以外はそういった記事が見つからず、ドライバはあるもののホントに使えるのかが微妙によくわからない。

(参考)

ではどうするか?


家にある本は350〜400冊程度、これからも増えるんだろうな〜 ということを考えて一式揃えることに。
ということで下記2点を購入。
特にスキャナはUbuntuでどこまで使えるか半分博打なところはあるけど、それはそれで楽しめそう。

2014/01/11

SONY WALKMANでのAAC再生

SONY WALKMAN NW-A850


通勤中などに音楽を聞く用途の場合、ノイズキャンセリング対応&そこそこ小型、というのが重要。

ということで、普段はNW-A850を使用している。


こいつを使用する上で、不満だった点がいくつかあった。
  • 24h使用しないとスタンバイモードから電源OFFになるが、電源OFFになると再生していた場所を忘れる
  • Vorbisに対応していない
  • AACに対応と書いてあるが再生できない?

これらのうち、最後のAACの件について少しだけ進展したのでメモ。

aacの再生できなかった状況


NW-A850の仕様一覧を見ると、音声圧縮形式としてAACにも対応、と書いてある。

しかし、*.aacなファイルを入れても再生リストに出てこない。

実は再生不可能なフォーマットになっていて、そういったものはリストに出てこないのかと思って*.wmaで48kHzなファイルを入れてみた。

しかし、再生リストには出てくるが未対応のフォーマットです、と怒られる。ということで再生可能かどうかはあまり関係ないらしい。


aacが再生リストに表示されない原因


WALKMAN用のファイル転送ソフトであるx-アプリに関するWikipediaのページを見ると、aacに関するコンテナフォーマットとしてMP4(*.3gp,*.mp4,*.m4a)と書かれていた。

つまり、拡張子が*.aacで再生リストに表示されなかった理由はコンテナだった。

AACといえば拡張子はaac、と思っていたので、まさかコンテナの問題とは思わなかった…



aac→m4aの変換方法


aacからm4aへの変換はffmpegでできる。

ffmpegで音声変換を行う際の基本的な書式はffmpeg -i <input_filename> -acodec copy <output_filename>だが、どうやらffmpegでは出力ファイル名として*.aacが指定された場合には素のAAC、*.m4aが指定された場合にはMPEG4コンテナに格納されたAACを出力するらしい。

そのため、<input_filename>に*.aacを、<output_filename>に*.m4aを指定することでAACファイルをMPEG4コンテナに入れることができる。
今回は下記のようなシェルスクリプトを作って一括で変換。

#!/bin/bash

IFS=$'\n'

for input_file in $*
do
/usr/bin/ffmpeg -i ${input_file} -acodec copy ${input_file%.*}.m4a
done

変換した後にWALKMANへコピーすることでリストにも表示されるようになった。

しかし、再生してみると再生はされてるようだけど音が出ない…
詳細情報を見るとビットレートが0kbpsと表示されているのでまだ何かがおかしいらしい。
原因はなんだろうなぁ…


(追記)
いろいろ試してみたところ0kbpsと表示されても再生できるものもある。
  • ダメだったもの: 48kHz / 49kbps
  • 再生できたもの: 44.1kHz / 49kbps, 98kbps, 194kbps

ちなみにNW-A850の仕様には下記のように書いてある。
本体で再生可能なAACファイル形式フォーマット:AAC-LC
ビットレート:16-320kbps(VBR)(サンプリング周波数によっては規格外および保証外の数値も含みます)
サンプリング周波数:8/11.025/12/16/22.05/24/32/44.1/48kHz

サンプリング周波数によっては規格外および保証外の数値も含みますに引っかかってしまっているのかもしれない。


(追記 その2)
先日スペインへ行った際に、WALKMAN本体を紛失してしまった。
そのため試行錯誤も終了。


参考

2013/10/26

Ubuntu 13.10へのアップグレード

Ubuntuのアップグレード実施


13.10へのアップグレード通知がきていたのでアップグレードしてみたところ、いくつかトラブルがあったのでメモ。
  • GUIでログインすると操作不能
  • IBusの仕様変更
  • Chromiumでの拡張機能動作不良
  • ディスプレイのスリープ不可

GUIでログインすると操作不能

ログイン画面でパスワードを入力すると13.04で使用していたユーザでログインはできる。
しかし、その後は背景画像とマウスカーソルが表示されているだけでそれ以外には何も表示されない。

マウスをクリックしても特に何も起きない。
もちろんキーボード入力も意味がない。(NumLock On/OffでLEDは点灯消灯するので、生きてはいる) 

また、Ctrl-Alt-F2 で別のコンソールに切り替えても、ディスプレイ上の表示は変わらない。
ただ操作自体はできているようで、(目隠し状態で)ログインして shutdown -h now 等実行することは可能だった。 

ちなみに、試しに他のマシンからSSHでログインしてみたところ、通常通り操作可能。
SSHでログインして.xsession-errorsを見ると、init: dbus pre-start terminated status 2といったことが書かれていた。(細部はうろ覚え)

 もう他に打つ手が思いつかなかったので、試しに別のユーザを作成してログインしてみた結果…
ふつーに表示できている!(何故?) 
これはどこかの設定がおかしいのだろうと思い、事象が発生しているユーザの設定系を全部renameしてみた。
しかし、状況は変わらず。

手詰まりになってしまったため、新しいユーザに古いユーザの設定をすべて移行してこちらを使うことにした。

IBusの仕様変更

上記のトラブルを乗り越え13.10を使い始めたものの、早速次のトラブルに遭遇。
日本語入力はどうやるの?

IBusの設定を見ても、以前あった日本語入力ON/OFFキーの設定がなくなり、次のインプットメソッドだけになっていた。
ちなみに、この次のインプットメソッドの設定はmozcやAnthyといったインプットメソッドを切り替えるキーの設定で、日本語入力ON/OFFを行うキーではない。

どうやら、Ubuntu 13.10に入っているIBus 1.5は以前と仕様が変わってしまった模様。

当座の解決策としては、インプットメソッドとしてmozcやAnthyを選択した状態のままにしておくこと?
とりあえず、mozcやAnthyが選択されていれば全角半角で日本語入力ON/OFFを切り替えられた。
アイコンは変わらないので入力するまで日本語入力が現在ON/OFFどちらなのかわからず、使いづらいが…

なお、IBusの代わりにFcitxを使うという解決策もあるらしいので、乗り換えようか検討中。

Chromiumでの拡張機能動作不良


Chromiumの拡張機能のうち、表示されている要素を書き換える系のものがうまく動いていない。
例えば、通常Adblock Plusでブロックされた要素は非表示となるハズだが、現在は(画像の読み込みはブロックされているが)要素そのものは残っている。

何かの設定が影響しているのかと思っていじっているが、今のところ原因不明。

このままでは使い勝手が悪いので、メインのブラウザはFirefoxに戻した。
ただ、最近はAndroidからPCへURLを送るphone2chromeという拡張機能をよく使っていたので、Firefoxでそれ相当の拡張機能を探さなきゃいけないのがちょっと面倒…

(追記)
しばらくぶりにchromiumを使ってみたら、Adblock Plus等が問題なく使えるようになっていた。
このときになぜ使えなかったのかは相変わらず不明。

ディスプレイのスリープ不可


ディスプレイがなぜかスリープしない。
原因はなんだろう?

2013/10/07

CEATEC2013

CEATECへ行ったので、感想をつらつらと。

全体的に

数年前からだいぶ元気がない感じだったが、今年もそこまで回復してない印象。
去年/一昨年はHEMSとかのエネルギー関係が多かったけど、今年はそれが少し減った分4Kが増えた感じ。
ブースの数は減ってる気がする。

メーカブース


SONY

  • 4K有機ELディスプレイがとっても綺麗
  • 最近話題のレンズスタイルカメラ(DSC-QX100)は、コンセプトはおもしろいんだけど結構使い勝手が悪い印象 ソフト改善で何とかなるか?

SONYブースの4K有機EL



富士通&三菱

  • 展示内容がバリエーションに富んでて見応えがあった
  • 特に富士通の参考出展エリアがおもしろかった

富士通の参考出展 FingerLink


富士通の参考出展 FingerLinkを実際に操作している様子。
テーブルに置かれた紙をスキャン&指の位置を検出してクリック動作&紙の位置に合わせて情報を表示。



Panasonic

  • 富士通や三菱と対照的に「4K」一本に絞った潔い展示
  • 4K TV、4Kタブレット、4Kカメラ、etc...

Panasonicブースの4K有機EL



SHARP

  • 一部コンセプト展示(コールドモックレベル)はあったけどほぼIGZO一色
  • 通常の液晶ディスプレイ以外にもMEMS IGZOとかもあった
  • あまりにIGZOに偏りすぎていて、「亀山モデル」の失敗を繰り返さなければいいけど… と心配になるレベル



東芝&NEC

  • 富士通&三菱とPanasonic&SHARPの中間くらい 良く言えば普通、悪く言えば印象に残らない



DoCoMo

  • 今年は端末の展示がほとんどなくてコンセプト展示がメイン
  • コンセプト展示のメガネ型デバイスはおもしろいんだけど 普及はまだまだ先な感じ

メガネ型デバイスを使って紙のノートの上にディスプレイ(というかタブレット端末)があるように見せるコンセプト展示。
ノートを近づけたり遠ざけたりするとそれにあわせてディスプレイの大きさも変わる。



車系メーカ

  • 家電の遠隔制御とかスマートフォンを使った話とか去年よりもCEATECっぽい展示が増えた
  • DENSOのワインセーバーはもうちょっと安かったら欲しいところ

DENSOのワインセーバー



ASKANET

  • 去年出していた空中ディスプレイにセンサをつけて より実用的な展示
  • とてもおもしろい製品なのでぜひマスプロダクトになってほしい

htc One XのOTAアップデート


去年台湾へ行った際に海外旅行時用にと買ってきてあったhtc One X(SIMフリー)を起動してみたら OTAアップデート(4.18.709.5)がきていた。

ということで早速当ててみたが、失敗。

これまで自分がやった作業を思い出しつつ復旧作業を行った。

odexファイルの差し戻し


以前、アンテナピクト問題解消のためにodexファイルのを差し替えていた。
こういったSystemファイルん書き換えはおそらくチェックでひっかかるだろう、ということで戻すことに。

戻す手順は下記の通り。
  1. bootloaderに入り、fastbootを使ってCWMで起動
  2. CWMでの起動後、adb(root権限)で端末へ入り、ファイルを元に戻す
  3. 再起動
しかし、このときにもいくつか問題が発生した。

bootloaderに入れない

Shutdown後Volume down+Power でbootloaderに入れるはずなのだが、通常通り起動してしまう。
 調べたところ、設定の電源メニューにある「高速起動」のチェックが入っているとbootloaderに入れないらしい。
高速起動を外して実行したところ、無事bootloaderに入れた。

fastbootでCWMが書き込めない

fastbootで書き込もうとしても、応答しない。
また、fastboot devicesを実行すると、下記のメッセージが出る。
no permissions fastboot
LinuxなPCで作業する場合、fastbootをroot権限で起動しなければいけなかった。
ということで、sudo fastboot ...と実行。

ちなみに、実際はこの手順は不要だった。(後述)

recovery領域の復旧

odexファイルの差し戻しを行なってもOTAで失敗した。 

しかしここで気づいたのだが、よくよく失敗画面を見てみると、CWMが起動している。
そして、エラー内容はファイルが見つからない、とのこと。

 試しにinstall zip from sdcardでOTAファイルを指定すると、verifyで失敗。 
あまり記憶にはなかったが、どうやらrecovery領域をCWMに書き換えていたらしい。
recovery領域を戻す方法を調べたところ、recovery領域のバイナリを発見したのでそれを適用。

recovery領域を元に戻した後でOTAを適用すると、無事適用完了!

参考

2013/09/23

Ruby & Mechanize を使ったWeb上の情報の自動取得

Webからの情報取得の自動化

昔と違って最近は使用量やら請求額やらいろいろなデータがWeb上で見られるようになったので、便利になった。
けど、ほとんどのものは自分から見に行く必要があるため、じきに面倒になって見に行かなくなってしまう。

ということで、どうせならPush通知させたい! と思った。

Mechanize

最初は全部自前でParser書いて所望の情報を取得しようと思っていたけど、Cookieの処理等々面倒で挫けかけていた。
ところが、調べてみたら便利なシロモノを発見。

どうやら、RubygemsにあるMechanizeを使えば、その辺りを気にせずに作れるらしい。
gem install mechanize
でさくさくとインストールして使ってみた。

参考:
以下、軽く使ってみたところで気づいた嬉しい点と要注意点。

嬉しい点

  • Cookieの処理を気にしなくてもいい
  • Formの処理がとっても楽

要注意点

  • frameを使ったサイトでどちらかのframe内のFormを触る場合などは、まずはそのframeの取得が必要
  • Javascriptの処理までは自動的に処理してくれないので、FormにJavascriptが絡んでいる場合などはソースを解析してJavascriptで処理されている部分の模擬が必要
  • TLSv1のみ対応のサイトの場合、追加でオプションが必要(後述)

ハマったポイント

Javascriptによる自動転送

某サイトが、
リンクをクリック → OTP取得用?のページを表示 → Javascriptで自動的に転送 → メインのページを表示
という手順を踏んでいて、ブラウザで表示した際には間のページの存在に気づかず、次のページをMechanizeで表示させようとしてもエラーページに飛ばされるばかりだった。 一歩一歩調べたところ間のページの存在に気づいたため、Javascriptで処理している箇所をMechanizeに行わせるようにした。

TLSv1のみ対応のサイト

某クレジットカード会社のhttpsなログインページを取得しようとしたところ、
SSL_connect SYSCALL returned=5 errno=0 state=unknown state (OpenSSL::SSL::SSLError)
というエラーが出て取得が失敗した。 どうやらTLSv1にのみ対応なサイトにそのまま取得しようとしたことによるエラーの可能性が高そうだったため、下記のようにTLSv1でhttpsの接続を行うように指定したところ、問題なく接続できるようになった。
agent.ssl_version = 'TLSv1'
参考:

作ってみたもの

以前Nokogiriを使って下記のものをcronで定期的に取得して携帯のメールアドレスに送信するようにしていた。
  • 天気予報
  • 近隣の鉄道の運行状況
今回Mechanizeを使うことで、下記のものを取得できるようになった。
  • IIJmioの利用状況
  • クレジットカードの請求額

いくつかハマりポイントはあったものの、必要な情報のPush通知っぽいことがだいぶできるようになってきた。

2013/05/19

USBに入れたisoファイルからのブート

PCの復旧作業

Linux PC起動不可

数日前、帰宅したら起動しっぱなしにしていた家電(含PC)の電源が落ちた形跡があった。
ひとまず再起動していったものの、メインのデスクトップとして使っていたLinux PCが起動しなくなった。

具体的には、grubまではOKだけどそこからOSを選択して起動しようとしても起動しない感じ。
コンソールでメッセージを追ってみた感じでは、
VFS: unable to mount root fs
と表示されているように見えた。

USB BootできるUSBを作るソフト

とりあえず何かしらの手段でBootしないと何もできないので、USBメモリからBootさせることにした。
そして… どうせなら1CD Linuxいくつか入れたりとかした方がおもしろいかも?と思いついた。そこで、USBメモリに複数のisoファイルを入れてBoot時に選択する方法を探してみた。

結果見つけたのがXBOOT。
使い方も簡単で、さくさくBoot用USBを作れた。

ただ1点課題が。
同じディストリビューションの違うバージョンのisoファイルを入れても、1つしか登録されないっぽい。
これに気づいたのは、Ubuntuの32bit版と64bit版を両方入れてみたのにgrubでは片方し表示されなかったため。

作成後のgrubの設定とか編集すれば複数登録もできそうな気はしたけど、面倒だったのとXBOOTを使ったBoot用USB再作成が簡単だったので、必要に応じて作りなおすことにした。


復旧作業 その1

コンソールで表示されているメッセージで検索すると、initramfsが変になっていると起こることがある、等書いてあった。
そこで、USBから1 CD Linuxを起動し、下記のように半ば無理やりinitramfsを更新してみた。
sudo mount <元のrootが入っていたデバイス> /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
chroot /mnt
mount <元の/bootが入っていたデバイス> /boot
update-initramfs -u -k all
update-grub2
結果は… 状況変わらず。


復旧作業 その2

他に手がかりもなかったので、/etc等のバックアップ → XubuntuのイメージからInstall Xubuntuを起動 → 修復インストールを実施。
一部のサーバ系ソフトウェアの設定が元に戻ったり、ユーザごとのcrontabが消えてしまったりしたものの、無事起動することを確認。
どこか別のファイルが壊れてたのかなぁ…


参考