Kazuhiro's blog
ようこそ! Kazuhiro's blog
土曜日, 11月 25 2017 @ 05:32 午前 JST
 記事を友人にメールする 印刷用画面 

opensslの代わりにgnutls-cliを使用する (Wanderlustで)

general

色々あって、gnutls-cliopensslの代わりにも利用することにしました。 元々opensslを利用しているところは私が把握している限りでは2つあって、ひとつはSMTP over SSL/TLSでメールを送信する時で、もうひとつはIMAP4/NNTP/POP3 over SSL/TLSでフォルダにアクセスする時です。

まず、open-tls-stream関数が接続に失敗してもエラーにならない為、失敗した時にエラーになるようなラッパーを用意します。 こうしておかないと、(少なくともフォルダへのアクセスの際に) 接続に失敗すると永遠にリトライし続けます。 adviceでやってもいいような気はしますが、一応元の関数の挙動はそのままにしておきます。

(defun open-tls-stream-with-error (name buffer host port)
  "Wrapper function for `open-tls-stream'.  This raises error when failed to connect."
  (let ((result (open-tls-stream name buffer host port)))
    (if (and (processp result)
  	     (eq (process-status result) 'run))
  	result
      ;; raise error when failed.
      (error "Opening tls stream is failed"))))

次に、SMTP over SSL/TLSの設定です。 Wanderlustへはきれいにadviceをかけにくいような気がしたので、FLIMにadviceをかけています。

;; Use tls.el for smtp over SSL/TLS
(autoload 'open-tls-stream "tls")
(defadvice smtp-send-buffer (around use-tls-hack activate)
  (let ((smtp-open-connection-function
	 (if (eq smtp-open-connection-function 'open-ssl-stream)
	     'open-tls-stream-with-error
	   smtp-open-connection-function)))
    ad-do-it))

最後に、フォルダアクセス用の設定です。 こちらだけを使う場合は、SMTP向けの部分にあるautoloadは不要なはずです。 基本的にはすがわらさんの設定と変わりないですが、前述の通り、open-tls-streamを直接使わない方がよいと思います。

;; Use tls.el for over SSL/TLS folder access
(eval-after-load "elmo-vars"
  '(set-alist 'elmo-network-stream-type-alist "!"
	      '(ssl tls open-tls-stream-with-error)))

ちなみに、Emacs24の場合は、可能ならopen-gnutls-streamを使うといいかもしれませんが、確認はしていません。

タグ:Wanderlust

 記事を友人にメールする 印刷用画面 

starttlsの代わりにgnutls-cliを使用する (Wanderlustで)

general

最近、Cygwinを1.7に上げたのですが、Cygwin 1.7だとstarttlsがうまくビルドできない (killでシグナルが送れないバイナリになる) ようなので、後ろ向きに回避してGnuTLSgnutls-cliを利用するようにしてみました。

(setq starttls-negotiation-by-kill-program t
      starttls-kill-program "/path/to/cygwin/bin/kill.exe"
      starttls-gnutls-program "/path/to/cygwin/bin/gnutls-cli.exe"
      starttls-use-gnutls t)
(defadvice starttls-negotiate (around use-external-kill activate)
  (if (and (boundp 'starttls-negotiation-by-kill-program)
	   starttls-negotiation-by-kill-program)
      (call-process starttls-kill-program nil nil nil
		    "-ALRM" (format "%d" (process-id process)))
    ad-do-it))

starttlsに付属のstarttls.elではなく、Gnus由来の (Emacsに付属している) starttls.elを利用しています。NTEmacs + Cygwinのgnutls-cliの組み合わせの場合、外部プロセスを利用したシグナルの送信を行う必要があるので、その部分はstarttlsに付属のstarttls.elと同等になるようにしています。

(2011/05/22 追記) adviceを利用したものに変更しました。

タグ:Wanderlust

 記事を友人にメールする 印刷用画面 

絵文字を表示する (Wanderlustで)

general

Wanderlustで、携帯電話 (au) から送信されたメールに含まれる絵文字を表示させてみました。 私自身は携帯でそのメールを読む事がなく (全てPCのアドレスに転送しています)、絵文字がないと内容が判断できない事があったためです (それで本当に困ったことはありませんが)。 私がauしか持ってないのでau限定です。 docomoも一応コードは入ってますが動作は全く確認していません。

MIME-Viewモードで使用する一部の関数にadviceをかけて実現しています。 このため、Lookupndestエージェントからメールを表示 (ndest-follow-link-with-mime-view) させても絵文字が表示されます。 また、Summaryバッファでは表示されません。

mime-emoji-20100925.tar.gzに含まれるファイルをload-pathにおいて

(require 'mime-emoji)

で動作するはずです。 絵文字の画像はEmojiPrintFireMobileSimulatorに含まれているものを使用してください。 mime-emoji-image-directoryに画像のある場所を指定します。

タグ:Wanderlust Emacs 絵文字

 記事を友人にメールする 印刷用画面 

pdicdump 1.0.0 is released

general

どれだけ需要があるのか分かりませんが、PDIC辞書のテキストデータを抽出するツールを公開しました。

これは以前に試作したPDIC辞書の検索ツールを原型にしています。 そのツールはLookupからPDICを検索しようとして作ってみたのですが、結局直接PDICを検索するのをやめたのでお蔵入りにしました。 (ちなみに、Lookup 2.0ではPDICを直接検索できます。)

PDIC自体でもテキストの抽出は可能なので、Windowsがないとか、CUIで実行したい等、利用する場面は限られると思いますが、興味のある人はお試しください。

タグ:PDIC

 記事を友人にメールする 印刷用画面 

EB Library 4.4.2 is released

general

EB Library 4.4.2が公開されました。 NEWSには書かれていませんが、EBXA-C書籍に関するフック等が追加されました。 また、Windows環境においてebzipが正常にファイル削除を行えるようになりました。

タグ:EB Library

 記事を友人にメールする 印刷用画面 

ldoce5-fpw is released

general

ロングマン現代英英辞典 [5訂版]に付属のDVD-ROMをFreePWINGを使って変換するスクリプトをtakさんが公開されました。

Androidで動作するEPWINGブラウザDroidWingも公開されてたりと、まだまだEPWINGの需要はあるようですね。

タグ:LDOCE5 EPWING FreePWING

 記事を友人にメールする 印刷用画面 

oald7-fpw改造

general

以前に、oald7-fpwでRIFF/WAVEヘッダをでっち上げたMP3データの一部がiPhone/iPod touchで再生できないという報告を頂きました。 生のMP3データは問題なく再生できるとの事で、ヘッダに原因があるのは明らかだったのですが、問題を再現できる環境が手元になく、MP3データに関する知識もない為にほぼ放置状態となっていました。

しかし、最近になって別の方が作成されたRIFF/WAVEヘッダを付加するコードを御紹介頂きました。 そこで、このコードを利用してoald7-fpwのヘッダ作成ルーチンを変更してみました。 作成されるヘッダは以前のものとは異なっている事は確認されているのですが、これでiPhone/iPod touchで再生できるようになったかどうかは不明です。 どなたかテストして頂けると幸いです。

oald7soundを、oald7-fpwのものと差し替えて下さい。

タグ:OALD7 FreePWING EPWING

 記事を友人にメールする 印刷用画面 

EB4Jによる通信用語の基礎知識のJIS X 4081化

general

EB4Jという、EB Libraryを元にしたpure Javaな電子辞書関連クラスライブラリがあります。 あるのは以前から知っていたのですが、通信用語の基礎知識郵便番号データをJIS X 4081化するプログラムが付属しているのは知りませんでした。 特に、通信用語の基礎知識に関してはプラグインデータや表にも対応しており、今回はそれを使って通信用語の基礎知識の変換してみました。

(本当はもっと以前に一度挑戦したのですが、その時は最新版のデータに対応していなくて変換できなかったので二度目の挑戦です。)

変換に使用した環境はopenSUSE 11.1 (x86_64, 4GB)上のopenJDKです。 概ねインストラクション通りでいけますが、javaがメモリ不足で止まるので、conv-wdic.shxml2eb.shにある、最大ヒープサイズの指定する部分(-Xmxオプション)を3000mとかにしておきました。 また、プラグインのファイルは全てが存在していない場合にはfatalとメッセージが出るので、存在しないファイルに対してはダミーのファイルへのリンクを張るなどしています。

ついでに、eblook 1.6.1+mediaで24ビットbmpからppmへの変換がうまく動作していないことに気付いてしまいましたので修正しました。

タグ:EPWING EB4J

 記事を友人にメールする 印刷用画面 

JIS X 4081 UTF-8 extension公開

general

JIS X 4081でUTF-8文字を扱う事を目的にした、JIS X 4081の拡張を試みてみました。 でっち上げただけの状態ですが、作業は進みそうもないので公開します。

書籍の作成はFreePWINGのvariantを利用し、作成した書籍はEB Libraryのvariantから検索をかけることができます。wikipedia-fpwのvariantを利用すれば、日本語版以外のウィキペディアのデータもそれなりに扱えるかもしれません。

こっちのサイトの更新はおいおいします。

タグ:Lookup EB Library Wikipedia FreePWING

 記事を友人にメールする 印刷用画面 

ONESWING

general

たまたま見つけたブログで知りましたが、EPWINGの後継としてONESWINGという規格が作られ、iPhone/iPod touch用のソフトとして発売されているようです。 富士通の人によれば

ONESWINGテクノロジーは、EPWINGの後継として、

  • マルチプラットフォーム展開(Windows,Mac,携帯電話など)
  • 圧縮&暗号化&認証機能
  • 高速な全文検索

を実現しました。

だそうです。暗号化とか認証機能がからむとフリーの検索ツールを作るのは厳しいかもしれません。

タグ:EPWING ONESWING