ラベル Application の投稿を表示しています。 すべての投稿を表示
ラベル Application の投稿を表示しています。 すべての投稿を表示

2026/03/15

aerc、notmuch、lieerでGmailを読む

2025/10/02

Linux、MPD、UpmpdcliでQobuzとローカルファイルの鑑賞環境を構築した

音楽鑑賞用のPCはDebian 12を使用しています。
私にしては珍しくPlamo Linuxではありません。
最小インストールにしたためかsudoすら入っていません。

以下が行なえることを目的とします。
  • Debianマシンでマウントしているディスクの音楽ファイルの再生
  • Qobuzのストリーミング再生
最初の項目はMPD単体でも行なえますが、私にはしっくりくるクライアントが見つからなかったです。

MPDとUpmpdcliを組合せると、1つのOpenHomeクライアントで両方の項目を行なえます。

OpenHomeクライアントにはiPad用のfidata Music Appを使用することにしました。

fidata Music Appはお好みのOpenHomeレンダラーとサーバーを使用することができます。
fidataなどは無くも使えます。
I-O DATAさん、太っ腹です。


まずはMPDのインストール。
# apt install mpd

次にUpmpdcliのインストール。
以下を参照してください。
Upmpdcli and associated libraries downloads

記憶を頼りに書きます。

リポジトリキーをダウンロードし、所定の場所に移動します。
# wget https://www.lesbonscomptes.com/pages/lesbonscomptes.gpg
# mv lesbonscomptes.gpg /usr/share/keyrings/


次にupmpdcli-bookworm.listをダウンロードし、所定の場所に移動します。
# wget https://www.lesbonscomptes.com/upmpdcli/pages/upmpdcli-bookworm.list
# mv upmpdcli-bookworm.list /etc/apt/sources.list.d/


# apt update
# apt install upmpdcli upmpdcli-qobuz upmpdcli-uprcl



MPDの設定です。
/etc/mpd.confを編集します。

私の行なった設定の肝は、music_directoryとplaylist_directoryを同じディレクトリにしたことです。

同じディレクトリにしないと、MPDクライアントで作ったプレイリストをOpenHomeクライアント(私の場合はfidata Music App)で使うことができなかったためです。

MPDクライアントによって違うのか分かりませんが、私の使用したMPDクライアントで作成するプレイリストは音楽ファイルのパスを相対パスで記載します。
しかし、相対パスだとOpenHomeクライアントで使用できませんでした。

ちなみに、プレイリストを絶対パスで記載すると、music_directoryとplaylist_directoryが異なっていても問題ありませんでした。

以下は私の環境で変更したmpd.confの設定項目です。

music_directory                 "/music/Music"
playlist_directory              "/music/Music"
bind_to_address                 "any"
audio_output {
        type            "alsa"
        name            "DACの名前"
        device          "環境によって異なります"
}


Upmpdcliの設定です。
/etc/upmpdcli.confを修正します。

気をつけないといけないのは
qobuzformatid = 27
としたところでしょうか。27でハイレゾ再生できるようにしました

以下は私の環境で変更したupmpdcli.confの設定項目です。

upnpiface ="wlp2s0"
upnpav = 1
openhome = 1
mpdhost = localhost
mpdport = 6600
ohmetapersist = 1
plgmicrohttpport = 49149
qobuzuser = QobuzのユーザID
qobuzpass = Qobuzのパスワード
qobuzformatid = 27
uprcluser = activated
uprclmediadirs = /music/Music

プレイリストですが、メインはちょっと面倒ですがMPDクライアントで作成しておくことにしました。
このようにしておくとMPDクライアントでも、他のOpenHomeクライアントでも使うことができます。
ただし、OpenHomeの方に即時反映されないようです。
時間経過で反映されるのかもしれませんが、即時反映させるにはupmpdcliを再起動させる必要があります。
# systemctl restart upmpdcli

ちょっと簡単に保存しておきたいプレイリストはfidata Music Appのローカルプレイリストを使います。

2022/04/16

Emacsにしてみた

 ずっとVim派でしたが、思うところあって(することがないので)Emacsを勉強することにしました。


 

 Emacsは27.2、環境はPlamo Linuxをget_pkginfo -aで2022/04/15時点で最新にしたものです。

 やったことで悩んだのは、

・起動時にエラーになる問題の対応

・twittering-modeを使用できるようにする

くらいでしょうか。


・起動時にエラーになる問題の対応

古いテンプレートを使用しているためか、私の環境では起動時にエラーが発生しました。

--debug-initを付けてEmacsを起動すると下記のように表示されます。

Debugger entered--Lisp error: (void-function set-default-font)
  (set-default-font "Noto Sans Mono-8")
  (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1")))
  (if (>= emacs-major-version 23) (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1"))))
  (progn (global-font-lock-mode 1) (if (>= emacs-major-version 21) (progn (blink-cursor-mode nil) (menu-bar-mode 1) (mouse-wheel-mode) (setq initial-frame-alist (append (list))) (set-frame-size (selected-frame) 97 30))) (if (>= emacs-major-version 23) (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1")))))
  (if window-system (progn (global-font-lock-mode 1) (if (>= emacs-major-version 21) (progn (blink-cursor-mode nil) (menu-bar-mode 1) (mouse-wheel-mode) (setq initial-frame-alist (append (list))) (set-frame-size (selected-frame) 97 30))) (if (>= emacs-major-version 23) (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1"))))) (progn (global-font-lock-mode 1)))
  eval-buffer(#<buffer  *load*-942743> nil "/home/takahiro/.emacs.d/site-start.d/look.el" nil t)  ; Reading at buffer position 2422
  load-with-code-conversion("/home/takahiro/.emacs.d/site-start.d/look.el" "/home/takahiro/.emacs.d/site-start.d/look.el" nil nil)
  load("/home/takahiro/.emacs.d/site-start.d/look")
  (while files (load (car files)) (setq files (cdr files)))
  (let* ((dir "~/.emacs.d/site-start.d") (el-suffix "\\.el\\'") (files (mapcar #'(lambda (path) (replace-regexp-in-string el-suffix "" path)) (directory-files dir t el-suffix)))) (while files (load (car files)) (setq files (cdr files))))
  eval-buffer(#<buffer  *load*> nil "/home/takahiro/.emacs.d/init.el" nil t)  ; Reading at buffer position 316
  load-with-code-conversion("/home/takahiro/.emacs.d/init.el" "/home/takahiro/.emacs.d/init.el" t t)
  load("/home/takahiro/.emacs.d/init" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode 0x32fe55>) #f(compiled-function () #<bytecode 0x32fe6d>) t)
  command-line()
  normal-top-level()

~/.emacs.d/site-start.d/look.elの下記の部分をコメントアウトするとエラーが出なくなりました。

     ;;; Emacs23 以上の設定 (TrueType/OpenType フォントの使用)
;;      (if (>= emacs-major-version 23)
;;          (progn
;;        (set-default-font "Noto Sans Mono-8")
;;        (set-fontset-font
;;         (frame-parameter nil 'font)
;;         'japanese-jisx0208
;;         '("Migu 2M" . "iso10646-1"))
;;        (set-fontset-font
;;         (frame-parameter nil 'font)
;;         'japanese-jisx0212
;;         '("Migu 2M" . "iso10646-1"))
;;            ;; Ascii フォントと日本語フォントの幅を調整する
;;;        (setq face-font-rescale-alist
;;;          '((".*Migu.*" . 1.3)
;;;            (".*VL ゴシック.*" . 1.3)
;;;            ("-cdac$" . 1.3)))
;;        )) ; Emacs23 以上の設定


・twittering-modeを使用できるようにする

github(https://github.com/hayamiz/twittering-mode)から取得し、
~/.emacs.d/package/
以下にgit cloneしました。このあたりはEmacs初心者なのでどこに入れれば良いのか分かりません。適当です。

~/.emacs.d/init.elには下記の記述をしました。
 
;;twittering-mode
(add-to-list 'load-path "~/.emacs.d/package/twittering-mode/")
(require 'twittering-mode)
(setq twittering-use-master-password t)
(defalias 'epa--decode-coding-string 'decode-coding-string)
(setq twittering-icon-mode t)

(setq twittering-use-master-password t)と記述するとPINではなくマスターパスワードを入力して起動できるようになるのですが、twittering-modeが起動しなくなります。
 
そこで、
(defalias 'epa--decode-coding-string 'decode-coding-string)

と記述することにより起動するようになりました。廃止された関数を使っているのかな。 


あと、マスターパスワードの入力がターミナルからになっているため、例えば多くのウィンドウマネージャーのAlt + F2でアプリ起動ダイアログ(?)が開きますが、これを使用してEmacsをウィンドウモードで起動するとパスワードを聞かれずにエラーになってしまいます。

xfce4-terminalからEmacsをウィンドウモードで起動するとxfce4-terminalにパスワード入力画面が表示されます。

これは、~/.gnupg/gpg-agent.confに下記の記述をすることで、GUIのパスワード入力ダイアログにして対応しました。

pinentry-program        /usr/bin/pinentry-gtk-2

この記述をした後、Xを終了してさらにログアウトし、再度ログインしてstartxした後に有効になりました。

多分何かのプロセスを再起動すれば良かったのかと思います。

2020/10/23

NeoMuttでS/MIMEを使用する

試したのはPlamo Linux 7.xです。

mutt の S/MIME 機能の利用法 を参考にしました。

以下はmuttもインストールしている環境で行っています。

まず、NeoMuttのソースに含まれるsmime.rcの記述をNeoMuttの設定ファイルに記述します。

$ cat neomutt-20200925/contrib/smime.rc >> ~/.muttrc


次にmuttに含まれるsmime_keys initを実行します。

$ smime_keys init


証明書を取得します。
私は下記のサイトを参考にしました。
最後に証明書を追加するためのパスワードが表示されますので、必ず控えておきます。
忘れた場合、取得した証明書をREVOKEして再度取得し直す必要があるようです。

取得できるファイルはpfxファイルです。
一応p12にリネームしてから追加します。

$ mv PKCS12_Credential_xxx.pfx PKCS12_Credential_xxx.p12
$ smime_keys add_p12 PKCS12_Credential_xxx.p12

ここで上で控えておいたパスワードが必要になります。
さらに新しいパスワードの追加と、覚えやすいラベルを設定します。

最後に
added private key: /home/takahiro/.smime/keys/12345678.0 for xxx@xxx
のように表示されますので、.0がついた数字部分を覚えておきます。


NeoMuttの設定ファイルでsmime_sign_asを設定します。

$ vim .muttrc
$ cat .muttrc |grep smime_sign_as
set smime_sign_as="12345678.0"


ルート証明書をインポートします。
こちらはNeoMuttのソースには見当たらなかったのでMuttからいただきました。

$ smime_keys add_root mutt-1.14.7/contrib/ca-bundle.crt 


メール送信時にエラーになる場合はunset crypt_use_gpgmeをNeoMuttの設定ファイルに記述します。

$ cat .muttrc |grep crypt_use_gpgme
unset crypt_use_gpgme


以上で私の環境ではNeoMuttでS/MIMEが使えるようになりました。

2020/10/21

Plamo Linux 7.xでsnapper

Plamo Linux 7.xにsnapperをインストールしてみました。

私の環境では他に必要なものは特になくインストールできました。
Plamo Linux 7.xに色々インストールしていますので、他の環境では必要なライブラリなどがあるかもしれません。

/homeにファイルシステムbtrfsを使っています。

# df -Th /home
ファイルシス   タイプ サイズ  使用  残り 使用% マウント位置
/dev/sda10     btrfs    145G   20G  125G   14% /home

/home/takahiro がsubvolumeです。


Arch Linuxのサイトを参考にしました。


まず新しい設定を作成しようとしましたが、失敗します。

# snapper -v -c takahiro create-config /home/takahiro
失敗しました (org.freedesktop.DBus.Error.NoReply) 。
#


/var/log/snapper.logを見ると

# less /var/log/snapper.log 

~省略~

2020-10-21 21:15:37 WAR libsnapper(6499) AsciiFile.cc(AsciiFileReader):66 - open for '/e
tc/sysconfig/snapper' failed
2020-10-21 21:15:37 WAR libsnapper(6499) AsciiFile.cc(AsciiFileReader):67 - THROW: file not found
2020-10-21 21:15:37 WAR libsnapper(6499) Snapper.cc(getConfigs):300 - THROW: sysconfig-file not found

~省略~

よく分からないですが、とりあえずtouchでファイルを作成してみます。

# touch /etc/sysconfig/snapper
# snapper -v -c takahiro create-config /home/takahiro
#

成功しました。


一般ユーザーでもスナップショットを確認できるようにします。

# vim /etc/snapper/configs/takahiro 
# cat /etc/snapper/configs/takahiro |grep ALLOW_USERS
   ALLOW_USERS="takahiro"
   # sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots

一般ユーザが所属しているグループにグループ所有権を変更します。

# cd /home/takahiro/
# chmod a+rx .snapshots
# chown :users .snapshots


GUIフロントエンドのsnapper-guiをインストールしました。

使用するのに必要なものはgithubのページに書いてあります。
私の環境ではgtksourceviewをインストールする必要がありました。

下のような感じです。


2015/11/10

Chord Mojoをfoobar2000で使ってみる

Chord Mojoをfoobar2000で使えるようにした際のメモです。

Windows10を使っています。

今までUSB DACを使う際はLinux系のOSばかり使っていたのでWindowsでの設定は慣れていないのですが、ネットで検索したところ以下のことを行えばとりあえずは大丈夫かな?と思っています。

  • foobar2000のインストール
  • Chord Mojo用ドライバのインストール
  • foobar2000でASIO出力するためのプラグインのインストール
  • foobar2000でDSDファイルを扱うためのプラグインのインストール

方針として、foobar2000ではアップサンプリングやPCMのDSD変換を行わないこととします。

・foobar2000のインストール

foobar2000のサイト(https://www.foobar2000.org)から最新バージョンであるfoobar2000_v1.3.9.exeをダウンロードしインストールします。

・Chord Mojo用ドライバのインストール

Mojoの日本語公式サイトでドライバがダウンロードできるようになりました。
以下ではイギリスChordのサイトからダウンロードしていますが、これからインストールするのであれば日本語公式サイトからダウンロードした方がよいと思います。


MojoのサイトからMojo-Windows-Driver.zipをダウンロードします。
解凍するとMojo Windows Driver.exeが出来上がるのでインストールします。


「Install」を押してドライバのインストールが終了するまで操作を行ってください。


ドライバに続けてASIO64_Chord_のインストールが始まるのでインストールします。


一応すべてのユーザで使えるようにするため以下の選択肢では"Everyone"を選びました。



「Next >」を押してASIO64_Chord_のインストールが終了するまで操作を行ってください。

・foobar2000でASIO出力するためのプラグインのインストール

foobar2000のサイトからfoo_out_asio.fb2k-componentをダウンロードします。

foobar2000のメニューバーから「File」-「Preference」を実行します。

Preferences: Components画面から「Install」を実行します。



Install Componentでfoo_out_asio.fb2k-componentを選択して「開く(O)」を実行します。


Preferences: Components画面から先ほどインストールした「foo_out_asio」を選択し、「Apply」を実行します。
foobar2000の再起動の確認が出て再起動されます。



・foobar2000でDSDファイルを扱うためのプラグインのインストール

Sourceforgeからfoo_input_sacd-0.8.4.zipをダウンロードし解凍します。


解凍してできたファイルの中からASIOProxyInstall-0.8.3.exeを実行してインストールします。



「Next >」を押してASIOProxyInstall-0.8.3.exeのインストールが終了するまで操作を行ってください。



foobar2000のメニューバーから「File」-「Preference」を実行します。

Preferences: Components画面から「Install」を実行します。


Install: Component画面でfoo_input_sacd-0.8.4.zipを解凍してできたファイルの中からfoo_input_sacd.fb2k-componentを選択し、「開く(O)」を実行します。



Preferences: Components画面から先ほどインストールした「foo_input_sacd」を選択し、「Apply」を実行します。
foobar2000の再起動の確認が出て再起動されます。



foobar2000のメニューバーから「File」-「Preference」を実行します。
Preferences: SACD画面で「Output Mode:」に「DSD」を選択します。



Preferences: Output画面で「Device」に「ASIO: foo_dsd_asio」を選択します。



Preferences: ASIO画面で「Use 64-bit ASIO drivers」のチェックを入れました。チェックしなくても音は出ていたのですが、64bit PCなのでチェックしておこうかと。
よく分かっていません。



Preferences: ASIO画面で「foo_dsd_asio」をダブルクリックし、ASIO Proxy 0.8.3画面を表示させます。



ASIO Proxy 0.8.3画面を以下のように設定し、「X」ボタンを押して画面を閉じます。



「OK」を押してPreferences: ASIO画面を終了します。



以上で終わりです。

DSD64ファイルの再生を行うとサンプリングレートLEDが白に、96kHzのPCMファイルでは緑に、44.1kHzのファイルでは赤に光ることが確認できました。

2015/04/13

MuttのURLをw3mを使って開く

Muttで読んでいるメール中に含まれるURLをurlviewやurlscanを使わずにw3mで開く方法です。

Control + bでw3mを呼び出した後コロン(:)でURL文字列をリンクに変換してくれます。

下記のサイトを参考にしました。
keyboard - How do I open a link from an email in mutt (without using the mouse)? - Super User


muttrcに下記を追加します。

macro index,pager \cb \
": unset wait_key; set pipe_decode\n|w3m\n: \
set wait_key; unset pipe_decode\n" \
"call w3m to extract URLs out of a message"

2015/03/24

Windowsのopen-browser.vimで開くブラウザをChromeにする

色々試していたら出来たってレベルですが…。

うちのWindows8.1はデフォルトブラウザはIEなのですが、VIMのopen-browser.vimで開くブラウザはChromeにしたかったので色々試しました。

vimrcに下記を記述しました。

" ------------------------------------------------
"  for open-browser.vim
" ------------------------------------------------
let g:netrw_nogx = 1
nmap gx (openbrowser-smart-search)
vmap gx (openbrowser-smart-search)

if has('win32') || has('win64')
 let g:openbrowser_browser_commands = [
 \   {
 \       "name": "C:\\Program\ Files\ (x86)\\Google\\Chrome\\Application\\chrome.exe",
 \       "args": ["{browser}", "{uri}"]
 \   }
 \ ]
endif
" ------------------------------------------------

2012/10/30

Windows7 (64bit) のGIMP 2.8 で Separate+ を使えるようにする

人に頼まれてGIMP2.8で画像をCMYKに変換するためのプラグインであるSeparate+を使えるようにしたのですが、結構悩んだので忘れないようにメモ。

まあ、私自身はGIMPの使い方を熟知している訳ではないし、CMYKも聞いたことあるなぁ程度の知識なので、本当に動いているのか疑問ではあるのですが。

一応参考にさせてもらったサイトにある手順でCMYK化したファイルをXnViewで確認したらCMYKになっているっぽいです。


使用しているGIMPは2.8.2で、

C:¥Program Files¥GIMP 2

にインストールされています。


基本的にはこちらのサイトを参考にさせてもらいました。

ありがとうございます。


(1) Separate+を入手する

こちらから以下の2ファイルを入手します。

separate+-0.5.8+lcms2_win32_bin.zip
separate+-0.5.8.zip

使うのはseparate+-0.5.8+lcms2_win32_bin.zipなのですが、日本語化するためにseparate+-0.5.8.zipに含まれるファイルを使用します。


(2) Separate+をGIMPに導入する

separate+-0.5.8+lcms2_win32_bin.zipを解凍してできるフォルダ

separate+-0.5.8¥bin¥win32+lcms2

に含まれる3つのファイル

icc_colorspace.exe
separate.exe
separate_import.exe

を以下のフォルダの下に入れます。

C:¥Program Files¥GIMP 2¥lib¥gimp¥2.0¥plug-ins

通常のプラグインはここまでのことを行っただけで使えるようになるはずなのですが、ここでGIMPを起動すると起動中にlibtiff3.dll が無いとのエラーが出ます。



(3) libtiff3.dllを導入する

こちらからファイル

libtiff3.zip

を入手します。

入手したlibtiff3.zipを解凍してできるフォルダに含まれるファイル

libtiff3.dll

を以下のフォルダに入れます。

C:¥Program Files¥GIMP 2¥lib¥gimp¥2.0¥plug-ins

これでlibtiff3.dll が無いとのエラーは出なくなったはずです。


(4) Adobe ICCプロファイルを導入する

こちらは参考にさせていただいたサイトに記載してあるままです。

こちらから以下のファイルを入手します。

AdobeICCProfilesCS4Win_end-user.zip

AdobeICCProfilesCS4Win_end-user.zipを解凍してできるフォルダ

Adobe ICC Profiles (end-user)¥CMYK

に含まれるファイル全てを選択して右クリックし、「プロファイルのインストール」を実行します。

同様に、AdobeICCProfilesCS4Win_end-user.zipを解凍してできるフォルダ

Adobe ICC Profiles (end-user)¥RGB

に含まれる以下の5つのファイルを選択して右クリックし、「プロファイルのインストール」を実行します。

AdobeRGB1998.icc
AppleRGB.icc
ColorMatchRGB.icc
PAL_SECAM.icc
SMPTE-C.icc


(5) Separate+を日本語化する

(1)で入手したseparate+-0.5.8.zipを解凍してできるフォルダ

separate+-0.5.8¥po

に含まれるファイル

ja.gmo

の名前を

gimp20-separate.mo

に変更し、次のフォルダ以下にコピーします。

C:¥Program Files¥GIMP 2¥share¥locale¥ja¥LC_MESSAGES

ここまででGIMPの「画像」-「Separate」以下のメニュー項目は日本語化されるのですが、「Separate」のサブメニューを実行した後に現れるウィンドウ中は日本語化されません。


「Separate」のサブメニューを実行した後に現れるウィンドウ中も日本語化するには、次のフォルダ

C:¥Program Files¥GIMP 2¥32¥share

の下にlocale、localeの下にja、さらにjaの下にLC_MESSAGESを作成し、作成された次のフォルダの下にもgimp20-separate.moをコピーします。

C:¥Program Files¥GIMP 2¥32¥share¥locale¥ja¥LC_MESSAGES

このフォルダの場所を見つけるのは苦労したのですが、こちらで配布されている

show_locale_directory.zip 

を入手して使用することにより判明しました。
ありがとうございます。

以上で「Separate」を実行した後に現れるウィンドウ中も日本語化されました。

2010/11/18

MacPortsでMuttをインストール

MacPortsでMuttをインストールしました。
Muttを使うのは久しぶりです。

常用するのが目的ではありません。
自分が送ったメールなどのヘッダをチェックするのに使いたかったので。

CUI好きだし。

受信はGoogle Appsで運用している独自ドメインから、送信はプロバイダのSMTP経由に設定しました。


  • インストール
$ sudo port install mutt-devel +ssl +smtp +sasl


  • .muttrc
set imap_user="独自ドメインのメールアドレス"
set folder="imaps://imap.gmail.com:993"
set spoolfile="+INBOX"
set postponed="+[Gmail]/下書き"
set record="+[Gmail]/送信済みメール"
set smtp_url="smtp://プロバイダのメールアドレス@プロバイダのSMTPサーバ:587"

set realname="私の名前"
set use_from="yes"
set from="プロバイダのメールアドレス"
set envelope_from="yes"
set send_charset="iso-2022-jp:utf-8"

my_hdr Return-Path: プロバイダのメールアドレス
my_hdr Bcc: プロバイダのメールアドレス

color body blue black "(ftp|http)://[^ ]+"
color body blue black "[-a-zA-Z0-9_.]+@[-a-zA-Z0-9_.]+"

auto_view text/enriched text/html


  • .mailcap
text/html;      w3m -dump %s; nametemplate=%s.html; copiousoutput


今のところこれだけ。
動いてるっぽい。

2009/05/28

OpenBSD/Zaurusで Dillo 2 と Minimo

久しぶりにOpenBSD/Zaurus環境をいじっています。
しばらくVIM、Alpineやw3mくらいしか使っていませんでした。

使っているOpenBSD/Zaurus は 4.5 です。

まずはDillo 2です。
OpenBSD/Zaurusのパッケージとして配布されているモノをそのまま使用しています。


日本語表示も問題なくできているみたいです。

Shift JISのページ(www.yomiuri.co.jp)、ISO-2022-JPのページ(www.linux.or.jp)、UTF-8のページ(slashdot.jp)などを表示してみましたが特に問題なく表示できました。

私の環境では日本語入力はできていません。
もうちょっといじれば日本語入力できるようになるのかな?

JavaScriptも動かないみたいですが、そんなに気になりません。

とにかく軽いのがいいですね。


次にMinimoです。
こちらもOpenBSD/Zaurusのパッケージになっているものをそのまま使用しています。


こちらは結構重いですが、あまり凝っていないサイトを表示する分には問題ないです。

日本語入力できますし、JavaScriptも動きます。
Flash使っているようなサイト以外はいけるんじゃないでしょうか。
表示するまでに時間はかかりますが…。


Dillo 2 で日本語入力できるようになればいいんだけどなぁ。

2009/05/22

AndroidでPDFが読みたいのだけど…

AndroidでPDFファイル読む時って、皆さんどうしているのでしょう?

Android Dev Phone 1(以下ADP1と記述)でAndroid Marketを探したりネットで検索してみるとPDFを読むためのアプリ(Viewer, Reader)がいくつか見つかるのですが、私の環境では読みたいPDFファイルを読むことができません。

仕方ないので、GIMPでPDFファイルをインポートしてContinus SaveというScript-fuを使用して複数のPNGファイルに変換し、Picturesという画像ビューアで読んでいました。

ところが、やはり画像ビューアでは文章を読むのに適しているとは言えません。
読む前に必ず画像の拡大をしなければならなかったり、画像を拡大しようとしたのにタッチした場所が悪くて次のファイルに移ってしまったり…。


そこでAndroid Marketに登録されているDroid Comic Viewer(以下ACVと記述)というアプリケーションを使ってみることにしました。
Droid Comic Viewer | Robot Comics [www.robotcomics.net]

ACVは複数の画像ファイルを集めた書庫ファイルを開いて読むことができます。
書庫形式はCBZ, ZIP及びACV、画像形式はJPEG, PNG, BMP 及び GIFに対応しているようです。

私はPDFをPNGに変換し、ZIPでまとめることにしました。


GIMPでContinus Saveを使用して複数のPNGファイルにエクスポートしたものをZIPにまとめればとりあえずは読めるのですが、面倒です。

PDF -> 複数の画像ファイル -> ZIP
と変換することができるUNIX用のアプリケーションを検索してみたのですが見つかりません。

無いものは作ろうということで、Ubuntu 9.04 で動作するシェルスクリプトを勉強がてら作ってみました。
内容は全く保証できませんが、とりあえず目的は果せたようです。

自分の作ったシェルスクリプトでは次を内部で実行しています。
  • pdftoppm (XPDFに含まれるらしい)
    PDFファイルをPPMファイルに変換する

  • convert (ImageMagickに含まれる)
    PPMファイルをPNGファイルに変換する

  • zip
    ZIPファイルにまとめる


シェルスクリプト内で気になっている点は次のとおりです。
「こんなことする必要はない」とか「ここはこうすればもっと良くなる」とか色々あるんでしょうが、よく分かりません。
  • 第一引数はPDFファイル、オプションとして第二引数で作成されるPNGファイルの横幅を指定する
    変換前のPDFファイルがあまりに大きいサイズだとACVで読む時に字がつぶれてしまいます
    800くらいが良いみたい

  • mktempコマンドで一時ディレクトリを作成して作業する

  • 第一引数がPDFファイルかどうかは次の構文で拡張子から判定している
    case $ARG1 in
    *.[Pp][Dd][Ff])

    ;;
    *)

    ;;
    esac

    合っているかな?

  • 第二引数が数字かどうかは次の構文で判定している
    if echo "$2" | grep -E '^[0-9]+$' >/dev/null 2>&1; then


解決できていない問題は次のとおりです。
  • pdftoppm実行時に次のようなエラーが出るPDFファイルがある
    Error: Illegal entry in bfchar block in ToUnicode CMap
    スクウェア・エニックスのアニュアルレポートで発生しましたが、特に問題なくACVで読むことはできるみたいです

  • pdftoppm、convertやzipの実行結果が失敗していることは考慮していない

  • 英語はテキトー


以下はコードです。
段々と直していきます。
#!/bin/sh
MKTEMP=$(which mktemp)
PDFTOPPM=$(which pdftoppm)
CONVERT=$(which convert)
ZIP=$(which zip)

EXECDIR=$PWD
WIDTH_VALUE=''

# check argument
echo '*** checking argument... ***'
if [ $1 ] ; then
ARG1=$1
if [ -f $ARG1 ] ; then
# $ARG1 is a file
case $ARG1 in
*.[Pp][Dd][Ff])
# $ARG1 is a PDF file
echo 'SUCCESS: '$ARG1' is a PDF file'
ZIPFILE=$EXECDIR'/'${ARG1%.[Pp][Dd][Ff]}.zip
BASENAME=${ARG1%%.*}
if [ -f $ZIPFILE ] ; then
echo 'ERROR: '$ZIPFILE' is already exist'
exit
else
if [ $2 ] ; then
if echo "$2" | grep -E '^[0-9]+$' >/dev/null 2>&1; then
WIDTH_VALUE=' -resize '$2' '
else
echo 'ERROR: '$2' is not a number'
exit
fi
fi
fi
;;
*)
echo 'ERROR: '$ARG1' is not a PDF file'
exit
;;
esac
else
# $1 is not a file
echo 'ERROR: '$ARG1' is not a file'
exit
fi
else
# $1 is not
echo 'usage: '$0' PDF-file [Image-width]'
exit
fi

echo
echo '*** checking program... ***'

if [ -x $PDFTOPPM ] ; then
echo 'SUCCESS: find '$PDFTOPPM
else
# cannot find pdftoppm
echo 'ERROR: cannot find pdftoppm'
exit
fi

if [ -x ${CONVERT} ] ; then
echo 'SUCCESS: find '$CONVERT
else
# cannot find convert
echo 'ERROR: cannot find convert'
exit
fi

if [ -x ${ZIP} ] ; then
echo 'SUCCESS: find '$ZIP
else
echo 'cannot find zip'
exit
fi

if [ -x ${MKTEMP} ] ; then
echo 'SUCCESS: find '$MKTEMP
else
echo 'ERROR: cannot find mktemp'
exit
fi

# create temporary directory
echo
echo '*** create temporary directory... ***'
TMPDIR1=$(mktemp -d)
if [ -d $TMPDIR1 ] ; then
echo 'SUCCESS: mktemp -> '$TMPDIR1

TMPDIR2=$(mktemp -d)
if [ -d $TMPDIR2 ] ; then
echo 'SUCCESS: mktemp -> '$TMPDIR2
else
echo 'ERROR: mktemp distination directory error'
fi
else
echo 'ERROR: mktemp error'
fi

echo
echo '*** converting pdf to ppm... ***'
$PDFTOPPM $ARG1 $TMPDIR1'/'$BASENAME

# cd temporary directory
cd $TMPDIR1

echo
echo '*** converting ppm to png... ***'
for i in *.ppm ; do
echo $i' to '$TMPDIR2'/'${i%.ppm}'.png'
$CONVERT $WIDTH_VALUE $i $TMPDIR2'/'${i%.ppm}.png
done

# archive
echo
echo '*** archiving... ***'
cd $TMPDIR2
$ZIP $ZIPFILE *

echo
echo '*** cleaning '$TMPDIR1'... *** '
rm -rf $TMPDIR1
echo '*** cleaning '$TMPDIR2'... *** '
rm -rf $TMPDIR2

exit


ADP1でPDFファイルを読みたいだけなんだけどなぁ…。
何でこんなことやってるのだろう?

2009/05/15

Android OS 携帯「HTC Magic」発売

ついに日本にも来ましたね。
ドコモ、Android端末を6月にも投入  「HTC Magic」発売へ [www.itmedia.co.jp]

ハードキーボード無しの「HTC Magic」というのが残念です。
一般的にはハードキーボード付きってダサかったりするのでしょうか?


標準の日本語IMEってどれくらい開発進んでいるのでしょうか?
私の持っているAndroid Dev Phone 1(ADP1) には入っていないので分からないのですが。

ADP1でも試してみたいなぁ。


以下は、私がよく使っているアプリを公開してくださっているサイトのメモです。

  • Android SKK
    Android向けにSKKを作ってみた [d.hatena.ne.jp]
    UNIXでおなじみのSKKを使用する日本語IMEです。


  • しめじ
    「simeji」をAndroid SDK1.5のハードキーボードに対応しました [www.adamrocker.com]
    Social IMEを使用した日本語IMEです。


  • Bettik
    Bettik 0.4.1リリース [rainbowdevil.jp]
    2ちゃんねるブラウザです。


  • BeyondPod for Android
    BeyondPod for Android [www.beyondpod.mobi]
    Podcast アプリケーションです。
    フジポッド [www.fujitv.co.jp] の「つか金フライデー」 [fujitv.cocolog-nifty.com]とかを聴いています。

    有料ですが、Android Market で有料アプリを購入できない地域・ハード(ADP1)でもPayPal経由で購入できました。
    ドコモのHTC Magicでは問題なくAndroid Marketから購入できるようになるのでしょうけど。


  • Mobilogger
    mobilogger - Google Code [code.google.com]
    ブログ投稿用のツールです。
    つい先日見つけました。
    bloggerとBiglobeブログに投稿できました。
    後者では投稿時にエラーと表示されますが、投稿はできているようです。


  • NewsRob
    NewsRob [newsrob.blogspot.com]
    Google Reader用のアプリケーションです。
    ダウンロードしておいてオフラインで読むこともできます。



とりあえず以上です。

2009/05/06

GDocs+AndroidSKKでブログ投稿

GDocs+AndroidSKKでブログ投稿
AndroidでGDocsを使って下書きしてからブログに投稿してみます。
この記事です。

GDocsはGoogle Documents 用のエディターです。
Home ‎(GDocs for Android)‎ [sites.google.com]


以前はText Editというエディターで下書きしてから投稿していたのですが、なぜなのかは分かりませんがAndroidSKKで記述中に1文字削除しようとすると1行くらい一気に消えてしまう現象が頻発してしまいます。

GDocsでは今のところそのような現象は出ていません。
もちろん、私の使いかたが良かったり悪かったりするだけかもしれません。


GDocsは今のところ、すごくいい感じで使えています。

2009/05/05

BeyondPod For Androidを購入

Android用のポッドキャストマネージャーである BeyondPod For Androidを購入しました。
BeyondPod for Android [www.beyondpod.mobi]

Android Market に期間限定版があるので以前から使用していたのですが、使用期限が切れてしまいました。

私は日本在住で使用している機種もAndroid Dev Phone 1(ADP1) なのでAndroid Marketから有料アプリを購入できません。
(ADP1ってアメリカとかからでも有料アプリって買えないんですっけ?)

BeyondPod For Androidはホームページ [www.beyondpod.mobi]から有料版をPayPal経由で購入できるようです。

試しに購入してみました。
日本円で500円ちょっとでした。

PayPalでの購入手続き終了後すぐに有料版へのリンクが現れます。
どうやらそれはBeyondPod本体とは別にインストールする、キー解除専用のアプリのようです。

残念ながら私の環境ではそのキー解除専用アプリはAndroid標準のブラウザからダウンロードできませんでしたが、そのアプリへのリンクをコピーしてOperaで開いたところ無事ダウンロードできました。

キー解除専用アプリインストール後、BeyondPodも制限無しで使えるようになったみたいです。

BeyondPodの最新版もホームページ [www.beyondpod.mobi]からダウンロードできます。


ちなみにAndroid Marketには他のポッドキャストアプリがあり、試しにACastを試してみたのですが、(私にとっては)肝心の「つか金フライデー!」をダウンロードできませんでした。
つか金フライデー! フジテレビのポッドキャスティング『フジポッド』 [fujitv.cocolog-nifty.com]

2009/05/03

AndroidでSKK

AndroidでSKKによる日本語入力を可能にするアプリを(IME)公開された方がいらっしゃいました。
Android向けにSKKを作ってみた[d.hatena.ne.jp]

Ubuntuはもちろん、OpenBSD/ZaurusとWindowsでもSKKを使用している私としてはほっておけるわけもなく、早速インストールしてみました。

いい感じです。
ちなみに、この記事は全部AndroidのSKKで書いてます。

多少気になる点もあるのですが、何が原因か分からないのでもうちょっと調べてみます。


いやー、ますますAndroidが素晴しくなっていきます。

2009/04/23

Portable Ubuntu for Windows の w3m にパッチを当てて再構築

Portable Ubuntu for Windows の w3m で、Google の検索結果からGoogle Groupのディスカッションにアクセスしようとした場合に URL がリダイレクトしようとしてエラーになってアクセスできない問題の対策。

Sourceforge.jpからw3m用のパッチをいただいてきてw3mを再構築しました。

いただいてきたパッチはこちら。
SourceForge.net: w3m: Detail: 2096461 - support single quoted meta refresh parameter[sourceforge.net]

まずはw3mのビルドに必要なパッケージ群をインストール
pubuntu@pubuntu:~/work/src/w3m-0.5.2$ sudo apt-get build-dep w3m-img

そして通常のビルド手順。
pubuntu@pubuntu:~/work/src/w3m-0.5.2$ ./configure --enable-image --prefix=/usr
pubuntu@pubuntu:~/work/src/w3m-0.5.2$ make


最後に今インストールされているw3mをアンインストールし、今ビルドしたw3mの簡易パッケージを作成してインストール。
pubuntu@pubuntu:~/work/src/w3m-0.5.2$ sudo apt-get remove w3m-img
pubuntu@pubuntu:~/work/src/w3m-0.5.2$ sudo apt-get remove w3m
pubuntu@pubuntu:~/work/src/w3m-0.5.2$ sudo checkinstall


インストール後、Googleの検索結果から何の問題もなくGoogle Groupのディスカッションにアクセスできるようになったので、多分当てたパッチが効いているのかなと思います。


ちなみに、この記事はPortable Ubuntu for Windowsのw3mから書きました。

2009/04/14

ミニノートに Portable Ubuntu for Windowsをインストール

Windows で UNIX っぽいことをするのにCygwin や VMWare、VirtualBoxなどどれを使うか悩みますが、Portable Ubuntu for Windows というのもあるそうです。
Windows上で動くUbuntu「Portable Ubuntu for Windows」[www.moongift.jp]


工人舎のミニノート(SC3KX06AS)にPortable Ubuntu for Windows をインストールしてみました。

Portable UbuntuのサイトからPortable_Ubuntu.exeを取得、実行してインストールします。
Portable Ubuntuのサイト[portableubuntu.demonccc.com.ar]
Sourceforgeの配布元[sourceforge.net]


私は C:\xxx\Portable_Ubuntu 以下にインストールしました。


Portable Ubuntu の起動にはちょっと悩みましたが、run_portable_ubuntu.bat (私の環境ではC:\xxx\Portable_Ubuntu\run_portable_ubuntu.bat) を実行すればいいようです。

私はとりあえずデスクトップ等にショートカットを作成しました。


Portable Ubuntu for Windows を起動中のスクリーンショットです。
画面左側にはgnome-terminal上でGNU Screenを起動しており、Screenは上下2分割して上にはw3m、下にはAlpineを起動しています。

画面右上にはWindowsで起動したFirefoxがあり、右下はPocket Ubuntu for Windowsで起動したFirefoxがあります。


まだPortable Ubuntu を使い込んではいませんが、すごくいいです。

ちなみにPortable Ubuntu for Windows のサイトにあるドキュメントにありますが、デフォルトユーザーpubuntu のパスワードは 123456 です。

日本語を使用するため、「System」-「Administration」-「Language Support」を日本語設定にしました。

日本語表示はもちろん日本語入力もできました。
SCIM-SKK もインストールして使えるようにしました。

Ubuntu のバージョンは 8.04 でした。
pubuntu@pubuntu:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.1"

こんなことしていいのか分かりませんが、Update Managerで Ubuntu 8.10 にアップデートしてみました。
今のところ、とりあえず問題は発生していないようです。

○ ディスクイメージを増量する
デフォルトの容量ではアップデート中に容量不足のエラーになってしまいますので、まずは増量する必要があります。

初期状態では既に73%使用済みで空きは477Mしかありません。
pubuntu@pubuntu:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cobd0 1.8G 1.3G 477M 73% /
varrun 126M 84K 126M 1% /var/run
varlock 126M 0 126M 0% /var/lock
udev 126M 132K 126M 1% /dev
devshm 126M 12K 126M 1% /dev/shm
/dev/cobd2 248M 2.1M 234M 1% /tmp
cofs0 37G 16G 21G 44% /etc/portable_ubuntu
cofs1 37G 16G 21G 44% /mnt/C
gvfs-fuse-daemon 1.8G 1.3G 477M 73% /home/pubuntu/.gvfs

Portable Ubuntu for Windows のサイトにあるドキュメントに増量の方法があります。
ドキュメントでは4GBにしており、私も同じく4GBにしました。

まずは Windows 上で下記の作業を行います。

私の環境ではC:\xxx\Portable_Ubuntu 以下にPortable Ubuntu がインストールされています。
C:\Documents and Settings\xxx>cd \xxx\Portable_Ubuntu
C:\xxx\Portable_Ubuntu\images>fsutil file createnew rootfs_.img 4294967296
C:\xxx\Portable_Ubuntu\config>cd ..\config
C:\xxx\Portable_Ubuntu\config>notepad portable_ubuntu.conf
上では最後に notepad で portable_ubuntu.confを開いています。
portable_ubuntu.conf ではデフォルトで存在した"codb3"の行をコメントアウトし、以下の行を追加しました。
cobd3=images\rootfs_.img
次に Portable Ubuntu の端末(gnome-teminal)を起動して作業します。

pubuntu@pubuntu:~$ sudo su
[sudo] password for pubuntu:
root@pubuntu:/home/pubuntu# dd if=/dev/cobd0 of=/dev/cobd3
root@pubuntu:/home/pubuntu# fsck.ext3 -f /dev/cobd3
root@pubuntu:/home/pubuntu# resize2fs -f /dev/cobd3
Portable Ubuntu を終了して Windows で次の作業します。
C:\Documents and Settings\xxx>cd \xxx\Portable_Ubuntu
C:\xxx\Portable_Ubuntu>cd images
C:\xxx\Portable_Ubuntu\images>move rootfs.img rootfsimg.old
C:\xxx\Portable_Ubuntu\images>move rootfs_img rootfs.img
C:\xxx\Portable_Ubuntu\images>cd ..\config
C:\xxx\Portable_Ubuntu\config>notepad portable_ubuntu.conf
上の最後でnotepadが起動されますので、cobd3=images\rootfs_.imgの行をコメントアウトします。

再度 run_portable_ubuntu.bat を実行して Portable Ubuntu を起動します。
pubuntu@pubuntu:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cobd0 4.0G 1.3G 2.6G 34% /
varrun 126M 84K 126M 1% /var/run
varlock 126M 0 126M 0% /var/lock
udev 126M 132K 126M 1% /dev
devshm 126M 12K 126M 1% /dev/shm
/dev/cobd2 248M 2.1M 234M 1% /tmp
cofs0 37G 20G 17G 55% /etc/portable_ubuntu
cofs1 37G 20G 17G 55% /mnt/C
gvfs-fuse-daemon 4.0G 1.3G 2.6G 34% /home/pubuntu/.gvfs
無事に4GB認識されました。


○ Ubuntu 8.10 にアップデートしてみる
いいのかどうか分かりませんが、Ubuntu を 8.04 から 8.10 にアップデートしてみました。

pubuntu@pubuntu:~$ sudo update-manager -d

インストール中にいくつか質問されます。
いいのかどうか分かりませんが、設定ファイルをそのままにするか置き換えるか質問された時は全てそのままにしてしまいました。

8.10 にしても、今のところ問題らしいところはみつかっていません。
pubuntu@pubuntu:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.10
DISTRIB_CODENAME=intrepid
DISTRIB_DESCRIPTION="Ubuntu 8.10"


○ タイムゾーンを変更する
変更前は次のようになっていました。
pubuntu@pubuntu:~$ date
2009年 4月 13日 月曜日 16:20:17 ART
そこでタイムゾーンを変更します。
pubuntu@pubuntu:~$ sudo dpkg-reconfigure tzdata
Asia/Tokyoに設定します。
pubuntu@pubuntu:~$ date
2009年 4月 14日 火曜日 04:25:32 JST

○ メーラーとして Alpine をインストールする
Alpine は配布されているパッチを全てあてたものをビルドしてインストールします。
インストールする際は Ubuntu 用の簡易パッケージにしてインストールします。

こちらからalpine-2.00を取得して~/work/に展開しました。
pubuntu@pubuntu:~/work/alpine-2.00$ sudo apt-get build-dep alpine
pubuntu@pubuntu:~/work/alpine-2.00$ ./configure
pubuntu@pubuntu:~/work/alpine-2.00$ make
pubuntu@pubuntu:~/work/alpine-2.00$ sudo apt-get install checkinstall
pubuntu@pubuntu:~/work/alpine-2.00$ sudo checkinstall

2009/04/03

Androidでポッドキャスト

BeyondPod」というアプリでポッドキャストにハマってます。

以前 iPod mini を使ってポッドキャストを少し試したことがありましたが、すぐに飽きてしまいました。
パソコンと繋がないと配信されたコンテンツをダウンロードできないことがネックで、とても面倒でした。

Android はそれだけでネットに繋げて配信されたコンテンツをダウンロードできるのでとても便利です。
iPod touchも同じようにできるのでしょうね。


フジテレビのポッドキャスト「フジポッド」にある「つか金フライデー!」と「フジポッド文庫」をとても気に入ってます。

「つか金フライデー」の2009/4/3配信は中野美奈子アナウンサーがゲストでした。
テレビとはまた違った感じで面白かったです。

過去にゲストで登場した際は、なんとヌードデッサンをしたそうです。
その回は「つか金フライデー」ホームページからもダウンロードできないみたいです…。
残念。

ちなみに 2008/10/3 の配信分以降はダウンロードできました。

中野アナは3月末から「とくダネ!」に出演されてます。

がんばってください。

2009/03/31

Android 用MP4動画再生 (Ubuntu + HandBrake)

HandBrake という動画コンバーターで Android 用 MP4 動画を作成しました。
使用したのは HandBrake 0.9.3 です。

HandBrake は GPL ライセンスのアプリケーションで、フリーで入手することができます。

私が入手したのは Ubuntu Linux 用のバイナリですが、その他にも Windows, Mac OS X, そしてGPLですから当然のようにソースコードもダウンロードページに置いてありました。


下の図は HandBrake の実行画面です。
画面右側の Presets で「iPhone & iPod Touch」指定して 3〜5分くらいの短い WMV ファイルを MP4 へコンバートしただけですが、問題なく再生することができました。

自分は試していませんが、Presets には「PSP」,「PS3」,「Xbox 360」等もあります。


FFmpegやMEncoderを簡単に使えるフロントエンドを探していたのですが、「これは!」と思えるものがなかなかみつかりませんでした。

この HandBrake は設定も簡単でとてもいいと思います。