Ubuntu 13.04 にインストールしたものメモ(1)

[備忘録]
以前、Ubuntuを使っていたときは、8.04とかそんな頃だったと思う。あちこち変わっているので、自分の為にメモ。

開発関係のプログラムをインストールするために、Synaptic Package Manager を使おうと思ったのだが、見当たらない。UbuntuソフトウェアセンターというMac App Storeみたいなものが入っていて、一般的なアプリはここからインストール出来るようになっている。そこで、まずは、Synaptic Package Manager を探してインストール。次に、Cairo-Dockをインストール。これはMacライクなドックを提供するもの。デフォルトのドックが画面左端にあるのだが、あまり使い易くない。これだったら、以前のメニュー形式の方がましだったなあと。ということで、Cairo-Dockなのであるが、OpenGLをオンにすると挙動が少しおかしい気がする。OpenGLはオフにして使うことにした。特に反応が遅いということもないし。

それから、定番のTeX 一式をTeX Liveで入れる。2012版だけど。Dropboxはちょっと迷ったのだが、TeX入れるのであれば、仕事するかもだから。EvernoteはUbuntu Software Center で探した限りではなかった。あと、チェスプログラムとか適当に。

  • Synaptic Package Manager (グラフィカルなパッケージ管理ツール)
  • GLX-Dock(Cairo-Dock with OpenGL)
  • TeX Live 2012
  • Dropbox
  • PyChess (チェス・プログラム)
  • Shutter (スクリーンショットを撮るアプリ)

ソフトウェアセンターを終了させて、Synapticを起動する。ここから以下をインストール。

  • build-essential (GNU C コンパイラーを始めとする基本ツール類。これがないと始まらない。)
  • opencv関係 (python-opencvを含めて)
  • asymptote (MetaPostを拡張した描画ソフト)
  • nkf (ネットワーク漢字コード変換フィルター)
  • p7zip (=7zip) (7-zip アーカイバーのUNIXコマンドラインへの移植版)

とりあえず今回はこんなところ。

Dell Inspiron 14z 5423 に Ubuntu 13.04 をインストール

ちょっと手こずったので、メモ。

買ったばかりのWindowsマシンなのだが、せっかくなので(?) Ubuntu (Linuxの一種) をインストールすることにした。準備として既にハードディスクの領域を縮小させて、100GBほどを未使用領域にしていた。ここにUbuntuをインストールして、デュアル・ブートにしようというもの。

今回購入したのはWindows7がプレインストールされた機種なので、Windows8になってからのUEFIによるSecure Bootがらみのトラブルはなかった。その代わりというわけじゃないが、キャッシュ用32GBのmSATA SSDのRAIDによるトラブルを経験した。

まずは最新のUbuntu 13.04の日本語Remix版のISOファイルをダウンロード。Windows7では特別なプログラムを使わなくても、ISOファイルを右クリックすれば、ディスクに焼くというメニューが既にあるので、DVD-Rに焼く。このDVD-RからUbuntuを起動する。DVDから起動するには、F12を押しながら電源を入れればよい。

とりあえずUbuntuをお試しで使うというのを選択。無線LANもマウスも普通に使えた。そこで、インストールしようとするのだが、インストールの種類の選択肢がまったく出ずにブランクのまま。あれこれ調べると、どうも32GBのSSDとHDDがRAID0になっていて、それをUbuntuが認識できないらしい。

解決策は幾つかあるようだが、今回行ったのは、Windowsに戻ってIntel Smart Responce Technology (ISRT) というのをオフにすること。要するにRAIDを解除したわけだ。そうすると、普通にHDDが認識された。あとは手順通り。HDDのパーティションは、4Gほどをswap用にして、残りはext4でフォーマットしてマウント位置はルートの / に設定。あとはしばらく待つのみ。

再起動させると、ブートローダーのGrub2が起動。何もしないとUbuntuが起動する。これで、UbuntuとWindows7のデュアル・ブート環境が出来た。

さっそくUbuntu上のFirefoxでこれを書いているが、日本語の変換もまずまずだし、日本語と欧文の切り替えキーのカスタマイズなども自由にできて、快適である。

ImageMagickのmogrifyコマンドを使う

[備忘録] 以前 The Internet Archive からダウンロードしておいた E. Cahen の Theorie des nombre, tome 2 (整数論,第2巻)。サイズも小さくで良いのだが,何故かMacのプレビュー.appで見ると,ものすごく動作が遅くてスクロールもままならないという状況だった。それで,放っておいたのだった。そのときは対処法など分からなかったのだが,業者に依頼した自炊(?)PDFが時々同じようにスクロールが重たいという経験を経て,どうすれば良いかが自分なりに少し分かってきたので,それを試してみることにした。

処理対象は,thoriedesnombr02caheuoft_bw.pdf というファイル。サイズは27.2MBほど。このままでも良いが,これを cahen2.pdf として保存。Acrobatで開き,jpegにバラして保存。cahen2_Page_001.jpg から cahen2_Page_762.jpg までの762個のjpegファイルが出来る。これらはモノクロの画像なのだが,サイズは500KBないし900KBもあり,かなり大きい。762個で520MBくらいになっている。グレースケールなのかもだが,拡大した様子では,文字部分は2値のようにも感じる。ともかく,これが27MBに圧縮されていたのだから,すごい圧縮率ではある。

さて,これを ImageMagick で白黒2値のtiffに変換して,CCITT Group4の圧縮をかけることにする。ついでに,広すぎる余白を少し削ってみた。iPhoneで見るときは余白ないほうが見やすいから。

ImageMagickのconvertでは多数のファイルを処理させると,ウソみたいに大量のメモリーを消費してしまうので,今回は mogrify というコマンドを使ってみた。convertとほとんど同じ処理が出来る。

mogrify -shave 100x200 -threshold 80% -compress Group4 -format tiff cahen*.jpg
mogrify -format pdf cahen*.tiff
pdftk cahen*.pdf cat output cahen2mono.pdf

作業内容は次の通り。mogrify コマンドで,まず, -shave 100×200 として,左右100ピクセル,上下200ピクセルずつを削除。次に,-threshold 80% で2値化。さらに, -compress Group4 でFAX G4での圧縮,最後に -format tiff でファイル・フォーマットをTIFFにする。これらを cahen*.jpg すべてに適用する。次に,生成されたtiffファイルをpdfに変換し,pdftkによって,これらのpdfを結合して,cahen2mono.pdf にする。最終的なファイルサイズは,25MBくらいになり,Macのプレビューでも,iPhone4Sの i文庫S でも,スムーズにスクロールして,すこぶる快適になった。

最初のページは次のような感じ。

Cahen "Theorie des Nombres" tome 2

iPhone 4Sでのスクリーンショットは大体こんな感じ。

Cahen "Theorie des nombres" on iPhone4S

iPhoneではさすがに文字が小さく,老眼にはつらいのだが,メガネ外すと,それでも何とか読める。何よりも,750ページもあるのに25MBに収まり,動作も軽くなったので,大満足である。

スキャンした書籍の後処理など

自炊した(業者さんに依頼しているから厳密には違うかもだが)書籍のPDFの後処理についてのメモ。

数学関係の本は,ほとんどが白黒なので,最終的にはモノクロ2値にすることにした。PDFをページ毎の画像にばらして,処理したあと,最終的にFAX Group4圧縮でモノクロ2値のTiffにする。こうすると,1頁あたり50KBないしは100KB程度に収まる。

PDFをベージ毎の画像にばらすには,Acrobatあるいは,Xpdf付属のpdfimagesを使う。ただし,pdfimagesはjpeg指定なのにppmを吐き出すことがあって,信頼性にやや欠ける。でも,シェルから呼び出せるので,バッチ処理には便利。

画像の変換には,最初GIMPを使っていた。GIMPをシェルから使うために,Script-Fuというスキーム(Lispの方言)によるスクリプトをいくつか書いた。それはそれで良かったのだが,スピードがいまいち遅いので,ImageMagickに鞍替えした。ImageMagickはびっくりするくらい多機能(たとえば,傾き補正を自動でやってくれる)で,自炊本の後処理くらいなら,これで十分かなと思う。

具体的にはImageMagickのconvertというコマンドを用いて,赤チャンネル抽出(-channel Red -separate), 2倍拡大(-filter Lanczos -resize 200%), レベル補正(たとえば -level 20%,90%,0.6 とか), 傾き補正(-deskew 40%), モノクロ2値(たとえば -threshold 70% とか), 圧縮(-compress Group 4), TIFFで保存(出力先を hoge.tif などと), といった処理を行う。

これをすべてのページに施すのだが,Perlを使って一括処理することを試みた。実のところ,Perlの勉強も兼ねているという泥縄。まあしかし,入門書は本棚にあるし,ネットで適当に調べながら,Getopt::Long という便利なモジュールを利用して,なんとか動作するものが書けた。

しばらく実験していると,プログラムの設計に柔軟性がないことに気付く。もう少し汎用的なツールになっていると良いのにと思う。あるいは,Cコンパイラーのmakeみたいな構造にしても良いなあ,とも思う。このあたりは,思案中。

ともあれ,現時点では次のような感じで,一括変換を行なっている。

% pdf2mono hoge.pdf -level 40 240 0.7 -threshold 180

GIMPを使って自炊PDFを加工してみた

XNView付属(?)のnconvertでのバッチ処理の手順は大体わかったのだが、より細かい加工をしようとすると、やや物足りない感じもする。そこで、GIMPを試してみた。PhotoShopのGNU版である。使ったのは、Mac用にアプリ化した Gimp.app のバージョン2.6.11 である。Lionでも問題なく起動した。

いろいろ試した結果、nconvertの処理でも大差ないことがわかった 😉 。ならば、わざわざGIMP使う必要もないのだが、せっかく試したので、とりあえずメモ。

まずは、PDFからバラした画像(TIFF形式)を2倍に拡大する。コントラストと明るさを変更する。オートでの修正というのがあり、これでも悪くない。こうすると、文字がくっきりし、文字のまわりのモヤモヤしたノイズっぽいのも目立たなくなる。これであきたらないときは、レベルの修正を手動で、さらに物足りない場合は、トーンカーブを使うとよい。トーンカーブをあれこれいじって実験すると、これはこれで面白いのだが、写真ならともかく、スキャンした書籍の場合、ここで凝っても大差ないように思う。

次は減色(ポスタリゼーション)あるいは、グレースケール化、あるいはモノクロ2値化。ここは本によって変えると良いが、数学の本の場合は、モノクロ2値で良いだろう。threshold(しきい値)を変えると微妙に結果が変わるが、大体200前後で問題ないと思う。オートもある。

このままPDFにしても良いし、半分のサイズに戻しても良い。解像度を半分にして元のサイズに戻してみたが、普通に見る分にはさほど劣化を感じなかった。最初に2倍に拡大して処理したのが効いていると思う。

ということで、GIMPもなかなかに使えるのである。あとは、バッチ処理のために、script-fuというの書けるようにならないと。なんとscript-fuの使用言語はLispの方言であるSchemeですよ。スキームでプログラム書いたことなどないのだが、この位なら、お手本参考になんとかなると思う。

しかしなあ、いまさらcarとかcdrとかやるとは思わなかったな(笑)。Lisp 1.5 以来ですよ。

PDF関係のツール

MacBook Air (mid 2011) にもPDF関係のツールを入れたいところだが,なかなか上手く行かない。UNIXのツールはHomebrewにて入れることにしたのだが(以前は,MacPorts, もっと以前はFinkを使っていた),インストールできたのは imagemagick のみ。xpdf は途中でエラーが出たし,pdftk はそもそもリストに入っていなかった。

pdftkはご本尊のサイトから Snow Leopard 用のバイナリーパッケージを持ってきた。そのうち Lion 用が出るだろうから,それまでの繋ぎのつもり。xpdfは,あちこち探して,こちらから Snow Leopard用にビルドされた Xpdf.app というX11アプリを頂いてインストール。パスを通せばターミナルからも使えるようだ。パスの通し方は,

export PATH=/Applications/Xpdf.app:/Applications/Xpdf.app/bin:$PATH

とすればよい。これを恒久的にするのは考えものだから,使うときだけ。

あとは,PDFsam をインストール。こちらは,単独のアプリ。JAVA Virtual Machine上で動くようになっているから,前もってJAVAを入れておく必要あり。

とりあえず,こんなところかなあ。これで,PDFから画像を取り出すことが出来るようになった。

faad2とlameでm4aをmp3に変換する

以前、iTunesでCDから取り込んだaacファイル、拡張子は .m4a、を、MP3 ファイルに変換しようとして、iTunesの取り込み形式をaacからmp3に変更したことがあった。こうすることで、m4aのファイルをiTunes内でmp3形式で書き出すことが可能となる。(ファイルを右クリックすると、メニューに現れる) ところが、元に戻すのを忘れていたため、その後のCDはすべて mp3 で取り込まれることになってしまった。あちゃあ〜。

ということで、iTunesを使わずに m4a を mp3 に変換するツールを探したのだが、Mac用の普通のソフトでフリーのものがなかなか見つからない。仕方なくというわけでもないが、UNIX用のツールならあるだろうと調べた結果、faad2でm4aをwavファイルにして、それをlameでmp3にエンコードすればよいことが分かった。他にも方法はあるかもだが、とりあえず、これが簡単そうなので、やってみた。UNIX/Linuxツールの入れ方は何通りかあるが、MacPorts で入れてみた。以下、備忘録。

インストールは簡単。ターミナルを起動して

sudo port install faad2

sudo port install lame

とするだけ。使い方も簡単。 faad hoge.m4a とすれば hoge.wav が出来るので、続いて lame hoge.wav とすれば、hoge.wav.mp3 が出来て完了。コマンド名はfaad2じゃなくてfaadであることに注意。何故か hoge.mp3じゃなくて hoge.wav.mp3 になってしまうが、気になるなら名前変更すれば良い。

MacPortsでpdftkのビルドに失敗

pdftkというPDFの分割・結合などを行うツール(PDF Tool Kitだろうか?)を Mac OS X 10.6 (Snow Leopard) に入れたいと思い、MacPorts からインストールを試みたのだが、失敗した。よく分からないながら、gcc4.2 がビルドできないというエラーメッセージだった。

検索して PDF Labs でビルド済みのパッケージを見つけて、ダウンロードした。あとはインストーラーを起動するだけで簡単。通常の /usr/local/bin/ 以下にインストールされた。

ということで、目的の pdftk は入手したが、gcc4.2の方がなんか気になる。これも検索してみると、Snow Leopard で gcc4.2 のビルドに失敗したという記述がいろんなサイトにある。エラーメッセージも、うちで出たのと同じだ。まあ、そのうち、何とかなるんだろう。

ImageMagickのconvertでPDFをjpegに変換する

[ 備忘録 ] Asymptoteの出力をjpegにしようとしたが,何故か上手く出力されない。ということで,ImageMagickを用いてPDFからjpegを作るためのメモ。

convertを使う。density を200 x 200にして hoge.pdf から hoge.jpg を作るときは,ターミナルから,

convert -density 200x200 hoge.pdf hoge.jpg

とすればよい。

TeX文書の文字コードを一括してUTF8に変換する(2)

前に書いた

Sukarabe’s Easy Living » TeX文書の文字コードを一括してUTF8に変換する

の改良版。このまま実行したら、まず、ファイルの数が多すぎると文句言われた。そこで、xargs が一度に処理するファイルの数を制限することにした。例えば -n 10 とすれば、一度に10個ずつになる。ところが今度はいくつかのファイルが見つからないというエラーに遭遇。日本語ファイル名の場合、上手く行かないケースがあるようだが、検索するファイル名をSingle quotationではなくDouble quotationで括ることで解決。さらに、空白をファイル名の区切りとしないように設定。僕自身は空白を含むファイル名を使うことはないが、念のため。空白の代わりにヌル文字を区切りと使う。そのために、find に対して、-print0 というオプションで、ファイル名の最後にヌル文字を加える。そして、xargs のオプションとして -0 とすることで、ヌル文字を区切りと解釈する。

最終的には次のようになった。これは、カレント以下の hogehoge.tex たちを一括して UTF8 (BOMなし) に変換するもの。

find . -name "*.tex" -type f -print0 | xargs -n 10 -0 nkf -w -Lu --overwrite

これで、文字コードの変換に関しては一件落着かな。