|
|
土曜日, 3月 05 2022 @ 08:30 午後 JST
投稿者: kazuhiro
かつて、Logic等の音楽制作ソフトを手がけていたemagicという会社がありました。
会社は2002年にアップルに買収され、LogicはLogic Proとして、現在もアップルが販売しています。
emagic社はいくつかのハードウェアも販売していましたが、そのひとつにemi 2|6というオーディオインターフェースがありました。
音質とか性能の話はおいておいて、このデバイスはUSB経由でファームウェアを読み込ませる事でUSB audio class compliantなデバイスとして動作します。
Linuxではドライバはただのfirmware loaderであり、ファームウェア読み込み後は標準のオーディオドライバで動作しています。
また、このデバイスはACアダプタからの電源供給も可能で、その場合、ファームウェア読み込み後は電源が切れるまでUSB audio class compliantなデバイスとして振る舞います。
Windowsへの対応については、メーカーがアップルに買収された事もあり、以降は新たな環境向けのドライバなどは提供されませんでした。
ただし、初期化さえ済ましてしまえば現在のWindowsでも動作は可能です。
そこで、現行のWindowsで動作するfirmware loaderを書いてみました。
日曜日, 8月 15 2021 @ 09:11 午前 JST
投稿者: kazuhiro
前回の続きです。
Hyper Estraierのインデックスがoptimizeで壊れる問題はHyper Estraier側の問題でした。
- 転置インデックスが複数ファイルにまたがる (通常1.5GiB以上)。
- 複数回の書き込みが行われている。
上記に当てはまるインデックスにoptimizeをかけるとひっそりと転置インデックスが壊れることがあります。また、
- ドキュメントの数がとても大きい (確認したものでは約580万)。
- 各ドキュメントに共通するテキストがとても多い (英語主体で、N-gramを有効にしたインデックスで確認)
上記に当てはまるインデックスにoptimizeをかけると転置インデックスの1ファイルに2GiB以上書き込んでしまい、壊れてしまう事があります。
修正内容はGitHubのリポジトリを参照してください。ついでに2GiB以上のキャッシュサイズの指定に対応していますが、その3倍弱くらいのメモリが必要になるケースがありました。
タグ:Hyper Estraier QDBM
火曜日, 7月 27 2021 @ 07:52 午後 JST
投稿者: kazuhiro
以下の記事は間違いでした。変更で挙動は変わったのですが、変更する前のコードは正しく、挙動が変わった原因は現時点では不明です。
前回に引き続き、QDBMのバグ報告です。
cbdatumcat関数およびCB_DATUMCATマクロが必要なバッファの大きさを1バイト少なく見積もるというものです。
手元ではなぜかSEGVにはならずにプログラムは実行されてしまいますが、Hyper Estraierで巨大なインデックをoptimizeするとインデックスが壊れてしまい、searchできるが不適切な結果が返るようになるバグが修正されました(「巨大な」は必須条件ではく、その方が起きやすいというだけです)。前回分と併せてGitHubのリポジトリで公開しておきます。
タグ:QDBM Hyper Estraier
月曜日, 6月 21 2021 @ 09:30 午後 JST
投稿者: kazuhiro
かなり今更ですが、久しぶりにHyper EstraierとQDBMを自分でビルドしたらうまく動作せず、結局 QDBM のバグだったので一応お知らせしておきます。
最初はsourceforgeにあるHyper EstraierのMLに投稿したのですが、unsubscribeしていたみたいでモデレータ送りになった為、こっちで公開することにしました。
土曜日, 3月 13 2021 @ 07:39 午後 JST
投稿者: kazuhiro
以前にOpenBlocks 600でOpenWrtを動かす記事をかきましたが、その後、使用していたKernel 4.19のサポートが無くなり、2021年3月時点ののOpenWrtにはKernel 5.4と5.10のサポートが入っています。
OpenBlocks 600もKernel 5.4での動作を確認していますが、dwc_otgドライバはコンパイルは通りますが動作はしませんでした。また、これは4.19の時もそうでしたが、ハードウェア暗号化アクセラレータも(多分)正常動作しません。
ちなみに、Kernel 5.10ではPowerPC 405を使用したデバイスのサポートが落とされていってるので、そのうちに使用できなくなるかもしれません。
タグ: OpenWrt OpenBlocks 600
水曜日, 7月 24 2019 @ 08:38 午後 JST
投稿者: kazuhiro
OpenBlocks 600のファームウェア更新終了が発表されたから、というわけでもありませんが、眠らせておくのももったいないのでOpenWrtを入れてみました。
ただし、OpenWrtにPowerPCのサポートは入っているものの、OpenBlocks 600に搭載されているPowerPC 405についてはbroken扱いになっている為 (2018年10月現在。2019年5月にremoveされました。)、platformを増やす方向でやってみました。
見よう見まねでやった (見まねにもなっていないところもあります) ので、platform (target) / subtarget / device の切り分けがぐちゃぐちゃです。イメージの作成方法もこれで正しいのか全く分かりません。
OpenBlocks標準のflashcfgではU-Bootイメージしか書き込めないようなので、initramfsのfactoryファームで起動して、そこからsysupgradeでファームウェアを導入します。factoryファームについてはフラッシュROMに書き込んでもいいし、TFTP経由やCFブート (factoryファームをext2フォーマットのCFにuImage.initrd-cfbootの名前で書き込み、ディップスイッチのSW3をonにして起動) のいずれかでいけるはずです。私自身はCFブートで行いました。
直接は関係ない変更も混じってますが、一応公開しておきます。興味のある方は試してみてください。
土曜日, 7月 13 2019 @ 10:11 午後 JST
投稿者: kazuhiro
またしても今更な話ですが、pdicdumpの出力からJIS X 4081 UTF-8 extension準拠の書籍に変換するツールを公開しました。
以前に公開したpdic-fpwに比べ、辞書内のハイパーリンクテキスト (相互参照)にある程度対応しています。また、付属のLookup 1.4+media用のパッケージファイルを使えば、フォントタグ等にもある程度対応します。
タグ:PDIC FreeUWING
月曜日, 7月 01 2019 @ 08:30 午後 JST
投稿者: kazuhiro
今更な話ですが、EBライブラリに付属のebzipを使えば、EPWINGを圧縮したまま利用する事が可能です。ebzipで圧縮されたEPWINGは、EBライブラリだけでは無く、多くのEPWINGビューアが対応しています。
ebzipのオプションには圧縮レベルがあり、これは圧縮するチャンクの大きさに反映されます。最大値の5ではチャンクのサイズは64KiBです。ebzipでの圧縮にはzlibを利用していますが、ebzipの圧縮レベルとは別に、zlibにも圧縮レベルがあります。ebzipでは圧縮レベルに関係なく一律の値 (Z_DEFAULT_COMPRESSIONによって指定される値で、現在は6) を指定しています。
zlibの圧縮レベルを上げればもっと圧縮できるのではないかと思って試してみましたが、よくて1%強程度しか改善できませんでした。
その時点で諦めてもよかったのですが、zlib以外のライブラリを使ってみてはということで、圧縮率の改善が見込めそうなlibdeflateを使ってみました。
|
青空てにをは辞典
190309
|
広辞苑第五版
HONMON2
|
広辞苑第五版
HONMONS
|
日本語版ウィキペディア
Wikip_ja20190301
|
英語版ウィキペディア
Wikip_en20190301
|
非圧縮
|
1,764,730,880
|
220,059,648
|
69,834,752
|
33,236,779,008
|
112,939,145,216
|
ebzip -l 5
|
478,746,362
|
72,335,940
|
50,837,283
|
19,927,656,401
|
33,968,207,228
|
非圧縮との比
|
27.1%
|
32.9%
|
72.8%
|
60.0%
|
30.1%
|
ebuzip -l 5
20190630
|
470,542,862
|
72,172,845
|
50,771,067
|
19,897,758,310
|
33,530,220,494
|
ebzipとの比
|
98.3%
|
99.8%
|
99.9%
|
99.8%
|
98.7%
|
ebuzip -l 5
libdeflate
|
441,842,778
|
67,058,577
|
49,942,504
|
19,661,425,623
|
32,384,784,337
|
ebzipとの比
|
92.3%
|
92.7%
|
98.2%
|
98.7%
|
95.3%
|
結果は表のような感じで、悪くても1%以上は改善し、書籍によっては約7.7%改善しました。
ebuzip -l 5 20190630 となっているものはzlibの最大圧縮レベルを利用したケースです。
また、HONMON2の非圧縮のサイズはHONMON2を伸長した場合のものです。
微々たる物といえばそうなのですが、スマートフォンなど、ストレージに制限がある場合には有効かもしれません。
EB Library with UTF-8 supportでlibdeflateを利用できるようにしていますので、興味のある方はお試しください。
タグ: EPWING EB Library
日曜日, 4月 10 2016 @ 08:02 午後 JST
投稿者: kazuhiro
細田さんが作業された、「Texinfoで日本語PDFを生成」をLookupとWanderlustのドキュメントでやってみました。そのままではクロスリファレンスの部分が日本語化されていないので、一部変更したものを使ってみました。
実際にやったことは変更したファイル (texinfo.tex, texinfo-ja.tex, txi-ja.tex) をダウンロードし、.texiファイルに若干の修正を加えただけです。
修正内容は
- ファイルの先頭にある\input texinfoを\input texinfo-jaにし、texinfo.texを直接読み込まずにtexinfo-ja.texを読み込むようにする。
- ファイルの文字コードをutf-8にし、ファイルヘッダ (Emacs用の coding cookieや@documentencodingコマンドの引数等) もそれに合わせる。
だけでした。Debian (sid) とW32TeXのLuaTeXで確認しています。
尚、インデックスや見出しに日本語等の非ASCII文字を含む場合 (Lookupのドキュメントが該当します)、texindexコマンドはTexinfo 6.0以降のものである必要があるはずです (W32TeXのtexindexは対応していません。私はMSYS2のtexindexを使いました)。作成されたWanderlustの日本語ドキュメントをおいてみました (pdf, 3.2MB) ので興味のある方はご覧ください。
火曜日, 12月 29 2015 @ 11:35 午前 JST
投稿者: kazuhiro
Emacs24で実装された、zlibサポートを利用したx-gzip64エンコードのデコーダです。
今更FLIMに入れるのもどうかという気もしますので、ここで公開しておきます。
;; x-gzip64 decoder
(when (and (fboundp 'zlib-available-p) (zlib-available-p))
(eval-after-load "mel-g"
'(progn
(mel-define-method mime-decode-region (start end (nil "x-gzip64"))
(save-excursion
(save-restriction
(narrow-to-region start end)
(let ((mb enable-multibyte-characters))
(set-buffer-multibyte nil)
(base64-decode-region (point-min) (point-max))
(zlib-decompress-region (point-min) (point-max))
(set-buffer-multibyte mb)))))
(mel-define-method mime-decode-string (string (nil "x-gzip64"))
(with-temp-buffer
(set-buffer-multibyte nil)
(insert string)
(base64-decode-region (point-min) (point-max))
(zlib-decompress-region (point-min) (point-max))
(buffer-string)))
(mel-define-method mime-write-decoded-region (start end filename
(nil "x-gzip64"))
"Decode and write current region encoded by gzip64 into FILENAME.
START and END are buffer positions."
(interactive "*r\nFWrite decoded region to file: ")
(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
(buffer (current-buffer)))
(with-temp-buffer
(set-buffer-multibyte nil)
(insert-buffer-substring buffer start end)
(base64-decode-region (point-min) (point-max))
(zlib-decompress-region (point-min) (point-max))
(write-region (point-min) (point-max) filename)))))))
タグ: Emacs Wanderlust
最初 | 前へ | 1 2 3 4 5 6 7 | 次へ | 最後
|
|
新着情報記事-
コメント 最近 2 日 -
トラックバック 最近 2 日-
|