Android tablet N80RK

Vido N80RK

買いました。一ヶ月くらい前に。
Android カメラアプリの開発用にしようとしたのですが、
200万画素の背面カメラにはオートフォーカス機能がありませんでした。
OCR とか到底無理じゃないか……orz
しょうが無いので OCR の前処理のテストとか読書用に使っております。

Mac の adb に認識させる

USB で Mac に接続して adb devices を実行してみたら N80RK が認識されていませんでした。
以下のように USB の Vendor ID を調べ、 adb_usb.ini に追記すると認識されるようになりました。 Mac には lsusb コマンドが無いんですね。

$ /usr/sbin/system_profiler SPUSBDataType
                (略)
            N80RK:

              Product ID: 0x0010
              Vendor ID: 0x2207  (Fuzhou Rockchip Electronics Co., Ltd.)
              Version: 2.22
                (略)
$ echo "0x2207" >> ~/.android/adb_usb.ini && adb kill-server

それで、 adb で何をやりたかったというと、
たとえばスクリーンショット。

$ adb shell screencap /sdcard/001.png
$ adb pull /sdcard/001.png ./

…… pull コマンドとかってワイルドカード使えないのが困りますよね。
あるいはページめくりのためにタップするのが面倒臭いので、コマンドで周期的にタップ。

$ for i in {001..317}; do
    adb shell input tap 100 600 && sleep 60
done

うーん、やっぱりちゃんとしたタブレット用スタンド欲しいなあ。


参考

PDFファイルをKobo Glo向けのCBZファイルに変換する

Kobo Glo で PDF を読もうとしたら異様に動作が重かったです。その PDF ファイルだけかも知れませんが。

仕方が無いので CBZ ファイル(画像ファイルを ZIP でかためたもの)に変換するスクリプトを作成しました。文字情報は失われますが、検索とかコピペとかしない文書なので軽さ最優先です。

pdftocbz.sh hogehoge.pdf

と実行すると、同じ場所に最適化されたCBZファイルが出来ます。元のPDFファイルにタイトルや著者名が埋めこまれていると、それを使って「[著者名] タイトル.cbz」みたいなファイル名になります。

tdtds/kindlizer · GitHub を手本に作りました。やっと convert コマンドの使い方が分かってきた気がします、今さら。

PDFを画像ファイルに

「pdfを画像ファイル」で検索してる方がいるらしいので、PDFファイルから画像を取り出す方法をちょっと調べてみました。主に Mac か Linux 環境向けです。Windows の場合は……「かんたんPDFダイエット」とか使えばいいんじゃないですかね。

Poppler (または Xpdf) を使う

Poppler に “pdftoppm” というコマンドがありますのでそれを使います。

pdftoppm hoge.pdf output

と実行すると、hoge.pdf をファイル名の先頭に output をつけた画像ファイルに出力します。
主に以下のようなオプションがあります。

-png, -jpeg  :PNG, JPEGファイルを生成
-gray    :グレースケールのPGMファイルを生成
-r 数字    :解像度 (DPI) を指定
-o      :奇数ページのみ
-e      :偶数ページのみ

-png, -jpeg, -tiff, -gray などのオプションが無いと PPM ファイルを生成するはず。その場合は ImageMagick の mogrify で変換しましょう。

mogrify -format png output*.ppm

以下、ヘルプのコピペです。

% pdftoppm --help
pdftoppm version 0.22.0
Copyright 2005-2012 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2011 Glyph & Cog, LLC
Usage: pdftoppm [options] [PDF-file [PPM-file-prefix]]
  -f <int>                 : first page to print
  -l <int>                 : last page to print
  -o                       : print only odd pages
  -e                       : print only even pages
  -singlefile              : write only the first page and do not add digits
  -r <fp>                  : resolution, in DPI (default is 150)
  -rx <fp>                 : X resolution, in DPI (default is 150)
  -ry <fp>                 : Y resolution, in DPI (default is 150)
  -scale-to <int>          : scales each page to fit within scale-to*scale-to pixel box
  -scale-to-x <int>        : scales each page horizontally to fit in scale-to-x pixels
  -scale-to-y <int>        : scales each page vertically to fit in scale-to-y pixels
  -x <int>                 : x-coordinate of the crop area top left corner
  -y <int>                 : y-coordinate of the crop area top left corner
  -W <int>                 : width of crop area in pixels (default is 0)
  -H <int>                 : height of crop area in pixels (default is 0)
  -sz <int>                : size of crop square in pixels (sets W and H)
  -cropbox                 : use the crop box rather than media box
  -mono                    : generate a monochrome PBM file
  -gray                    : generate a grayscale PGM file
  -png                     : generate a PNG file
  -jpeg                    : generate a JPEG file
  -tiff                    : generate a TIFF file
  -tiffcompression <string>: set TIFF compression: none, packbits, jpeg, lzw, deflate
  -freetype <string>       : enable FreeType font rasterizer: yes, no
  -aa <string>             : enable font anti-aliasing: yes, no
  -aaVector <string>       : enable vector anti-aliasing: yes, no
  -opw <string>            : owner password (for encrypted files)
  -upw <string>            : user password (for encrypted files)
  -q                       : don't print any messages or errors
  -v                       : print copyright and version info
  -h                       : print usage information
  -help                    : print usage information
  --help                   : print usage information
  -?                       : print usage information

Automator を使う (Mac OS X 限定)

Mac OS X の自動化ツール Automator に PDF 関連のアクションが結構あります。
「PDF ページをイメージとしてレンダリング」というアクションが今回の目的にあいそうです。
「奇数ページと偶数ページを抽出」というアクションもありますね。

スクリーンショット 2013-02-07 4.58.09

響 – Hibiki Radio Station – 録音スクリプト修正

Hibiki Radio Station の番組詳細ページの Windows Media Player ファイルを保存するためのスクリプトです。
本当はTOPページで rtmpdump するのがいいんでしょうけど手っ取り早いので。
asx ファイルが変わったみたいので対応しました。

02/05追記:なんだか頻繁に録音失敗するので、一回リトライするようにしました。っていうか mimms にレジュームオプションなんてあったんですね……。

02/13追記:mimmsは途中終了してもエラーにならないらしいので ”||” 演算子の意味が無い……。どんな場合でも二回mimmsするようにしました。

#!/bin/sh -e
# hibiki.sh ver.0.5.6 (2013-02-13)
# require wget, ruby, and mimms
TMPFILE="/var/tmp/tmp.$$"
trap 'rm -f ${TMPFILE}' EXIT

if [ $# -eq 1 ]; then
  STR=$1

  # save asx file
  wget -q -O - http://hibiki-radio.jp/description/${STR} | grep WMV | ruby -ruri -e 'puts URI.extract(ARGF.read, "http")' | head -1 | xargs wget -q -O ${TMPFILE}
  if [ -z ${TMPFILE} ]; then
    echo "download ERROR"
    exit 1
  fi
  TITLE=`cat ${TMPFILE} | ruby -rrexml/document -e 'puts REXML::Document.new(ARGF).elements["ASX/entry/title"].text'`
  WMVFILE=`cat ${TMPFILE} | ruby -rrexml/document -e 'puts REXML::Document.new(ARGF).elements["ASX/entry/Ref"].attributes["href"]'`
  if test a"$TITLE" = a"" ; then
    echo "asx detection failed."
    exit 1
  fi

  mimms -r ${WMVFILE} "${TITLE}.asf"
  mimms -r ${WMVFILE} "${TITLE}.asf"

else
  echo "usage: `basename $0` STRING"
fi

WebRadioRecorder/hibiki.sh at master · unot/WebRadioRecorder · GitHub

Upgrade Windows XP to 8 in VMware Fusion

Windows 8 Pro のアップグレード版が今月末まで安いというので、何となく買ってなかった VMware Fusion 5 と一緒に買ってアップグレードしようとしました。

VMware Fusion 5 につつがなくアップグレードし、ゲストOSとしてWindows XPが正常に動作していることを確認しました。続いてWindows XPから8にアップグレードしようとし……、そこで2点ほど引っ掛かったのでここに記します。

Windows XP からアップグレード出来ない

HDDの仮想SCSIコントローラーの互換性が無いとかでアップグレードが進められません。
解決方法は、

  1. 共有設定をオフにしてWindows XPを終了。(スナップショットがあればそれも消す)
  2. メニュー→仮想マシン→設定→ハードディスクを開く
  3. ハードディスクを削除。その際「ファイルの保持」を選択する
  4. Finderで仮想マシンファイルを右クリックし、「パッケージの内容を表示」
  5. vmdkファイル(で、連番の付いていないもの)を右クリックし、テキストエディットで開く
  6. “buslogic” の文字列を探して “ide” に置換し、保存する
  7. Fusionのメニュー→仮想マシン→設定で「デバイスを追加」
  8. 「既存のハードディスク」を選択する
  9. 「この仮想ディスクを作成した仮想マシンと仮想ディスクを共有する」をチェック
  10. 上で編集したvmdkファイルを選択して開く

以上です。要するに、既存のハードディスクの設定をIDEに変更して開き直せばいいのです。

ネットワークが繋がらない

めでたく Windows 8 にアップグレードできましたが、インターネットに接続できません。
これの解決方法は、

  1. Windows 8 を終了
  2. Finderで仮想マシンファイルを右クリックし、「パッケージの内容を表示」
  3. vmx ファイルを右クリックし、テキストエディットで開く
  4. ethernet0.virtualDev = "e1000e" を追記し、保存する

これで Windows 8 を起動すると、しばらくしてネットワークが認識されました。めでたしめでたし。

ちなみに今だけ無料という Media Center Pack は導入していません。Windows のコントロールセンターから辿っていくと800円になっていて面倒くさくなりました。


参考:

自炊スキャンデータをKobo Gloに最適化

Kobo Glo 買いました。Kindle Paperwhite と比較したんですが、やっぱり microSD が挿せないのは不便ですから。あと Kindle のコンテンツそんなに持ってませんし。

で、自炊した小説(JPEGファイルをZIPでかためたもの)を Kobo Glo で表示してみたんですが、文字がかすれ気味でちょっと読み辛いです。

そこで電子ペーパーに最適化する方法を検索。見つけたのは以下の記事。

Kindle Paperwhiteで自炊した本を読む手順と便利なツール | ごりゅご.com

calibre というオープンソースのアプリがあるんですね。WindowsでもMacでもLinuxでも動くそうです。

という訳で早速Macにインストールして変換してみたんですが……、あんまり綺麗じゃないですね。原稿とディスプレイの縦横比が違うと悲惨なことに。それにも増して厭だったのが、日本語ファイル名がアルファベットになることです。設定で変えられるとは思うんですが。

他の手は無いかと更に検索。

ScanSnap後の画像処理 – \ay diary

なるほど、ImageMagick の convert コマンドでトリミング出来るんですね。私はZIPを展開したあと、以下のようにターミナルで実行しました。

for i in *.jpg; do
    convert ${i} -type grayscale -sharpen 5 -fuzz 50% -trim -linear-stretch 2%x2% -bordercolor white -border 2%x2% png:- | convert - -depth 4 -resize 758x1024 ${i%.jpg}.png
done

"-type grayscale" でグレースケールに、
"-sharpen 5" で鮮鋭化、
"-fuzz 50% -trim" でファジーにトリミング、
"-linear-stretch 2%x2%" でヒストグラムを引き伸ばしてコントラストを上げ、
"-bordercolor white -border 2%x2%" で白枠を付け(ギリギリにトリミングすると読み辛いので)、
"-depth 4" で 4-bit 化(ファイルサイズが小さくなりますが、ImageMagickのバージョンによっては対応してないかも)、
"-resize 758x1024" で Kobo Glo 用に解像度変換しています。

ライトノベル一冊当たり6分程度かかります。GNU Parallel が使えるようでしたら、

ls *.jpg | parallel -j4 "convert {} -type grayscale -sharpen 5 -fuzz 50% -trim -linear-stretch 2%x2% -bordercolor white -border 2%x2% png:- | convert - -depth 4 -resize 758x1024 {.}.png"

みたいにすると速くなるかも知れません。更にファイルサイズを小さくしたい場合は、以下のように OptiPNG を実行すると5%くらい小さくなるでしょう。

optipng *.png

元ファイルが PDF の場合は kindlizer を使うといいかも。ImageMagick の他に Poppler, sam2p, PDFtk, Rake が必要になります。

Kindlizerの使い方 – はてなの鴨澤

あ、ImageMagick も Parallel も OptiPNG も Homebrew で一発インストールしました。


追記

シェルスクリプトにしてみました。ZIPでかためたJPEGファイルをKobo Gloに最適なCBZファイルにします。→ Zipped jpeg files to CBZ file for Kobo Glo.

crontabで隔週実行

今宵は会社の忘年会でした。自分ひとりだけ別部署に派遣されているので、普段会えない人に会えるのが嬉しいですね。

それはさておき、隔週放送のwebラジオを録音したくなりました。crontabで設定しようとしたのですが、どうもひと工夫必要なようです。曜日の項で “wed/2″ とか記述すると変なタイミングで実行されてしまいました。
で、Google先生にお伺いをたてて出てきたのがこの記事。

crontabで隔週実行 – jarp,

「年末年始で破綻しそう」とありますが、どうせ盆と正月は放送日程が乱れるので結局以下のようにしました。
‘%’ はエスケープすることに注意しましょう。

59 20 * * wed expr `date +\%V` \% 2 && /path/to/aandgplus.sh 60

これで「隔週水曜日20時59分」にコマンドが実行出来るようになりました。

フォロー

新しい投稿をメールで受信しましょう。

現在318人フォロワーがいます。