起きたら午後もいい時間。寝すぎ。
gdcのDMD2.064対応が来た模様。
ただ、「Update to 2.064 development snapshot 09/13」というのは
リリース前の2.064という事なのかしら?まだ次があるのかも。
そういや先日リリースされたPOV-Rayですが、
以前、巨大画像をレンダリング
したときはメモリのアクセス違反で動かなかったのがリリース版ではどうだろう?
と試してみたり。結果から言うとウインドウで画像表示を行うとやっぱり
アクセス違反でずっこけたり。で、
-Dオプションで画像表示をやめるといけたり。実は前のも画像表示を行わなければ
大丈夫だったのかも知れませんが。で、64000x48000というサイズで
レンダリングしてみましたが一応いけました。ただ、レンダリング結果は
一旦全てメモリに保持されるようなので、このサイズだと11GBは必要になります。
POV-Rayは基本的に画面の上からレンダリングしているので、レンダリングし終わった
スキャンラインから順次ファイルに書き出して、書き終えた分から捨ててしまって
構わないのですが、そういう仕掛けにはなっていないようです。
Mitsubaの新しいのが
出ているのに気づいたり。
気持ち早めに帰着。
「おもひでぽろぽろ。」を観たり。久しぶりに観た気がしますが、
なんか最後まで観てしまいます。
あまりの眠さに急速停止。
早くも無く遅くも無く。
先日のコンパイルエラーを直したり。と言っても一部をr416のように
戻すという方法ですが。
気持ち早めに帰着。
D言語のWindowsAPIバインディングのr424を手持ちのr416ベースのと
マージしてみたり。ハンドラ系のaliasが少し変わっててDMD2.062ベースの
gdcではコンパイルエラーするようになっていたり。
早くも無く遅くも無く。
ちょろり調べ事をして終了。
早くも無く遅くも無く。あと10分遅かったら大荒れの中を帰るハメになる所でした。
GDCに差分が大量コミットされていたので2.064対応か?と思ったら
違うらしい(^^;
AM中に起床。
手持ちのD言語コードの中に、HelloWorldを表示するWinAPIテストコードが
あるのですが、ふとW系APIなら何語でもいけるのかしら?と
思い試してみたり。
ソースの方はGoogle翻訳で「こんにちは世界」を各国語に翻訳したものを
Emacsにコピペしただけです。
で、結果は タイ語と韓国語(ハングル文字)は豆腐になったり。そもそも文字として
グリフが無ければ表示できない訳ですが、そういうのを自動で処理
してくれるのかと思ってました。
じゃぁどうやれば良いか?と思い少し調べてみたのですが、調べ方が
悪いせいか解決方法は判りませんでした。
各国文字を混在してエディットできる時点でEmacsは良くできてるなぁと
思うと同時に、表示が簡単にできない時点で各国語対応って大変だなぁと
思いました。
Fedora19のソフトウェアアップデートを行っていたら、Wings1.5.1の64bit
っていうのが入ろうとしていて、あれ?1.5シリーズが出てたの?と気づいたり。
いつの間にかURLが変わっていた為、しばらくページをチェックできてません
でした(^^;(現在のWings3Dのページはこちら)。
Windows向けにも64bitバイナリが提供されました。
で、早速使ってみたり。結論から言うと、以前
自力で64bitビルドを試してみた時と同じレベル。
一応erlの起動オプションには-smp enableが指定されているようなのですが、
マルチスレッドで動作している感じがしないので、巨大ポリゴンの編集は重すぎて
操作がままならない感じ。また、1500万ポリゴンのAsianDragon(WavefrontOBJファイル)
も読み込みに失敗するという感じでした。
でも、GitHubで開発が続けられているのに1.4.1以降、2年ほどリリースされていなかったので、
安定版として適当にリリースしてくれないかなぁ?と
思っていた所でした。良いと思います。
AM中に起床。ちょろり休出。
7zipアーカイブの生成や展開に7-Zip
を使用しているのですが、
7z形式以外にも色々なアーカイブに対応しているので重宝しています。
で、何気に気づいたのですが、7-ZipのGUIファイラーでディレクトリ
のサイズが、そのディレクトリの下に含まれるファイルサイズ合計を
示しています。この手のファイラーだとディレクトリは
容量が0と表示されて情報が無いのと同じに感じる所なのですが、
7-Zipのそれだと展開するのにどれくらいの空きディスク容量
が必要なのかが一目で判るのが便利です。例えばバックアップを7zで
サブディレクトリ含めて丸ごと圧縮してあった場合、一部をリストア
したい時の容量確認が簡単で良いと思います。
日付け越え。
Web巡回して終了。
早くも無く遅くも無く。
なんとなくNetHackをコンパイルしてみたり。
早くも無く遅くも無く。
ちょろりコーディング。
早くも無く遅くも無く。
ちょろりコーディング。
早くも無く遅くも無く。
ちょろりコーディング。flymakeのおかげで文法エラーのほとんどを
コーディング時に潰す事ができて捗ります。
AM中に起床。
zlc.elのバグ修正コードを更にリファイン。
*** zlc.el.orig 2013-11-12 01:59:32.104360700 +0900 --- zlc.el 2013-11-17 12:37:40.106577700 +0900 *************** *** 156,167 **** ;; select next completion (let* ((cand (zlc--current-candidate)) (str (if (consp cand) (car cand) cand)) ! ;; sometimes (get-text-property 0 'face str) does not work... ! (from (case (cadr (text-properties-at 0 str)) ! ('completions-common-part ! (or (next-property-change 0 str) ! (length str))) ! (t 0)))) (insert (substring str from)) (zlc--highlight-nth-completion zlc--index)) ;; otherwise --- 156,168 ---- ;; select next completion (let* ((cand (zlc--current-candidate)) (str (if (consp cand) (car cand) cand)) ! (from (let ((search-diff ! (lambda (n str) ! (let ((atch (cadr (text-properties-at n str)))) ! (if (not (eq atch nil)) ! (if (eq atch 'completions-common-part) (1+ n) n) ! (if (> n 0) (funcall search-diff (1- n) str) 0)))))) ! (funcall search-diff (1- (length str)) str) ))) (insert (substring str from)) (zlc--highlight-nth-completion zlc--index)) ;; otherwise
AM中に起床。
zlc.elのバグを直してみたり。ダーティーハックにもほどがあるような
直し方ですが次のような感じにしてみました。
*** zlc.el.orig 2013-11-12 01:59:32.104360700 +0900 --- zlc.el 2013-11-16 13:29:45.147259900 +0900 *************** *** 156,167 **** ;; select next completion (let* ((cand (zlc--current-candidate)) (str (if (consp cand) (car cand) cand)) ! ;; sometimes (get-text-property 0 'face str) does not work... ! (from (case (cadr (text-properties-at 0 str)) ! ('completions-common-part ! (or (next-property-change 0 str) ! (length str))) ! (t 0)))) (insert (substring str from)) (zlc--highlight-nth-completion zlc--index)) ;; otherwise --- 156,175 ---- ;; select next completion (let* ((cand (zlc--current-candidate)) (str (if (consp cand) (car cand) cand)) ! (from (let ((__loopcount 0) ! (atch "") ! (_pos 0)) ! (setq __loopcount (1- (length str))) ! (while (>= __loopcount 0) ! (setq atch (cadr (text-properties-at __loopcount str))) ! (if (not (string= (format "%s" atch) "nil" )) ! (progn ! (if (string= (format "%s" atch) "completions-common-part") ! (setq _pos (1+ __loopcount)) ! (setq _pos __loopcount)) ! (setq __loopcount -1))) ! (setq __loopcount (1- __loopcount))) ! _pos))) (insert (substring str from)) (zlc--highlight-nth-completion zlc--index)) ;; otherwise
#("aaaaabbbb1" 0 5 (face completions-common-part) 5 9 (face completions-common-part font-lock-face completions-first-difference) 9 10 (font-lock-face completions-first-difference))
(load-library "artist.el") (define-key artist-mode-map [?\C-1] '(lambda () "" (interactive) (setq artist-spray-radius 1) (message "spray-radisu %s" artist-spray-radius))) (define-key artist-mode-map [?\C-2] '(lambda () "" (interactive) (setq artist-spray-radius 2) (message "spray-radisu %s" artist-spray-radius))) (define-key artist-mode-map [?\C-3] '(lambda () "" (interactive) (setq artist-spray-radius 3) (message "spray-radisu %s" artist-spray-radius))) (define-key artist-mode-map [?\C-4] '(lambda () "" (interactive) (setq artist-spray-radius 4) (message "spray-radisu %s" artist-spray-radius))) (define-key artist-mode-map [?\C-5] '(lambda () "" (interactive) (setq artist-spray-radius 5) (message "spray-radisu %s" artist-spray-radius))) (define-key artist-mode-map [?\C-6] '(lambda () "" (interactive) (setq artist-spray-radius 6) (message "spray-radisu %s" artist-spray-radius))) (define-key artist-mode-map [?\C-7] '(lambda () "" (interactive) (setq artist-spray-radius 7) (message "spray-radisu %s" artist-spray-radius))) (define-key artist-mode-map [?\C-8] '(lambda () "" (interactive) (setq artist-spray-radius 8) (message "spray-radisu %s" artist-spray-radius))) (define-key artist-mode-map "\C-c\C-a\C-v" '(lambda () "" (interactive) (setq artist-spray-chars (reverse artist-spray-chars)) (let ((msg (format "spray-chars ["))) (dolist (ch artist-spray-chars) (setq msg (concat msg (format "%s" (char-to-string ch))))) (message "%s" (concat msg "]")))))
*** zlc.el.orig 2013-11-12 01:59:32.104360700 +0900 --- zlc.el 2013-11-17 02:26:19.681024900 +0900 *************** *** 156,167 **** ;; select next completion (let* ((cand (zlc--current-candidate)) (str (if (consp cand) (car cand) cand)) ! ;; sometimes (get-text-property 0 'face str) does not work... ! (from (case (cadr (text-properties-at 0 str)) ! ('completions-common-part ! (or (next-property-change 0 str) ! (length str))) ! (t 0)))) (insert (substring str from)) (zlc--highlight-nth-completion zlc--index)) ;; otherwise --- 156,168 ---- ;; select next completion (let* ((cand (zlc--current-candidate)) (str (if (consp cand) (car cand) cand)) ! (from (let () ! (defun zlc--search-diff (n str) ! (let ((atch (cadr (text-properties-at n str)))) ! (if (not (eq atch nil)) ! (if (eq atch 'completions-common-part) (1+ n) n) ! (if (> n 0) (zlc--search-diff (1- n) str) 0)))) ! (zlc--search-diff (1- (length str)) str) ))) (insert (substring str from)) (zlc--highlight-nth-completion zlc--index)) ;; otherwise
気持ち早めに帰着。
あまりの眠さに急速停止。
気持ち遅めに帰着。
zlc.elの挙動を調べたり。
(display-completion-list)で補完候補の文字列リストを得て、
各文字列には属性が付いているのですが、この属性の付け方が
なんだか謎な感じ。
属性にはcompletions-common-partとcompletions-first-differenceが
あるようで、単純にcompletions-first-differenceな文字位置を
使えば良さそうに思ったのですが、何故かcompletions-first-differenceが
複数ある場合があり、その時にバグった表示になっている模様。
何故、複数のcompletions-first-differenceが存在するのかは不明。うーむ。
気持ち早めに帰着。
zlc.elの挙動が変なのを調べたり。
例えば次のようなパターンで変になるような気が。
$ ls /tmp/zlc_test/ aaaaa aaaaabbbb1 aaaaabbbb2
気持ち遅めに帰着。
先日のzlc。例えば C-x C-f でhomeディレクトリからいくつかディレクトリ
を潜ってファイルを開く場合、TAB TABでzlcの候補選択に移行するので、
目的のディレクトリを選択する訳ですが、このディレクトリの下に潜りたい
場合に、はて?どうしたもんかと思ったり。というのも、TABはzlcの候補
選択に使用されてしまっている為、ディレクトリに潜るという操作には
使えなくなっています。そんな訳でイマイチいけそうでいけてない感じに。
そういや zshってどうなってるんだっけ?と思いインストールして調べて
みた所、TABで候補選択に移行するのですが、'/'を押す事で選択を確定
するような動きになっていた為、zlcもそうなっているのかもと思い試して
みたところ、「hoge//」と'/'が入力通りに入った上に、ルートディレクトリ
直下のファイル群が選択候補になってしまいうまくない感じに。
そんな訳で、次のようなバインドを追加してみたり。
(let ((map minibuffer-local-map)) (define-key map (kbd "/") '(lambda () "" (interactive) (if (string= (char-to-string (char-before (point))) "/") (minibuffer-complete) (insert "/")))) )
気持ち遅めに帰着。
ちょろりコーディング。思い出すだけで終了。
先日、小菊を入れてfind-file(C-x C-f)にmigemoを使えるようにしてみたのですが、
ふと次のような場合にどうなるんだろう?と思い試してみたり。
$ ls 橋.txt 端.txt 箸.txt
(require 'zlc) (zlc-mode t)
昼過ぎ起床。
Emacsでfind-file(C-x C-f)でファイルを開く時、日本語文字を含んだファイルを開こうと
すると途中でIMEを起動しなくてはならないのが少々面倒臭いと感じる事が
あります。migemoを使ったfind-fileって無いか?と思いWebを検索をしたところ、
「小菊」というそのものズバリな
EmacsLispを知ったり。早速入れてみた所、良い感じにローマ字入力だけで日本語文字名の
ファイルを開く事ができるようになりました。
で、もう一つ。Fedoraに日本語文字名のファイルを置いてTRAMPでリモート接続すると
ファイル名が化けるという問題がありました。これも、
(require 'tramp) (require 'tramp-sh) (let ((process-environment tramp-remote-process-environment)) (setenv "LC_ALL" nil) (setq tramp-remote-process-environment process-environment))
寒さでAM中に起床。
そういやDMDの2.064.2が来ています。gdcに来るのは少し先かな?
Fedoraでgdcをビルドしてみたり。現時点のmasterをビルドしてみたのですが、
コンパイルエラーでビルドに失敗。gcc-4.9-20131103というスナップショットを
使ったのですが新し過ぎたみたい。gcc-4.9-20131013のスナップショットを
使えばビルド成功。
Fedora19のscreenコマンド。ウインドウタイトルが勝手にbashのPROMPT_COMMANDと同じ
ものに更新されたり。:titleで変えても勝手に書き換わってしまい、
なんかバグってるんじゃないかと思ったり。
少し調べてみたところ、そういう機能がscreenにはあったらしい。Cygwinのscreenも
バージョンは同じだったのですが、PROMPT_COMMANDを設定していないので全く気づきませんでした。
Fedoraの方では .bashrcで /etc/bashrcを吸い込んでいたので、
そこで設定されているようです。/etc/bashrcを吸い込まないようにしても良いの
ですが、.bashrcに「export PROMPT_COMMAND=」を追加して対応したり。
遅めに帰着。
flymake。Makefileの書き方でもっと良い方法を知ったので書き換えてみたり。
$ cat Makefile BINPATH = CC = $(BINPATH)gcc CFLAGS = -O2 DC = $(BINPATH)gdc DFLAGS = -O2 %:%.c $(CC) $(CFLAGS) $< -o $@ %:%.d $(DC) $(DFLAGS) $< -o $@ .PHONY: check-syntax check-syntax: $(addsuffix -check-syntax,$(CHK_SOURCES)) %.c-check-syntax: $(CC) $(CFLAGS) -fsyntax-only $(CHK_SOURCES) %.d-check-syntax: $(DC) $(DFLAGS) -fsyntax-only $(CHK_SOURCES)
遅めに帰着。
flymake。結局、次のようにしてみました。
簡単な単体ファイルのソースでもMakefileを使うようにしてみました。
そして、言語毎にルールをif文で分けるようにした結果が次のような
Makefile。
$ cat Makefile BINPATH = CC = $(BINPATH)gcc CFLAGS = -O2 DC = $(BINPATH)gdc DFLAGS = -O2 %:%.c $(CC) $(CFLAGS) $< -o $@ %:%.d $(DC) $(DFLAGS) $< -o $@ .PHONY: check-syntax check-syntax: ifeq ($(suffix $(CHK_SOURCES)),.c) $(CC) $(CFLAGS) -fsyntax-only $(CHK_SOURCES) else ifeq ($(suffix $(CHK_SOURCES)),.d) $(DC) $(DFLAGS) -fsyntax-only $(CHK_SOURCES) endif endif
(require 'flymake) (defun flymake-get-make-cmdline (source base-dir) (list "make" (list "-s" "-C" base-dir (concat "CHK_SOURCES=" source) "SYNTAX_CHECK_MODE=1" "BINPATH=/usr/local/hoge/bin/" "check-syntax"))) (push '(".+\\.d$" flymake-simple-make-init) flymake-allowed-file-name-masks) (add-hook 'd-mode-hook '(lambda () (flymake-mode t))) (push '(".+\\.c$" flymake-simple-make-init) flymake-allowed-file-name-masks) (add-hook 'c-mode-hook '(lambda () (flymake-mode t)))
遅めに帰着。
flymake。先日の文法チェック結果がイマイチな原因判明。
Cygwinパッケージに含まれる超古いgdcを使って文法チェックを行っていた為。
autoやforeachがダメに見えていたのですが、実際には変数の宣言でエラーしていた
のが行全体にかかって見えていただけでした。
少し困ったのが、普段はCygwinのgccが使えるようにしてあって、mingw-gdcを使う時
だけパスを通してそのシェル内だけはmingw-gdcとmingw-gccを使えるように
してあるのですが、文法チェックを通すには常にmingw-gdcが使える状態に
しておかなくてはなりません。gdcをフルパスで実行するようにしてみたのですが、
それを.emacsに書くのはイマイチです。また、-Iでインクルードパスを指定する
ような場合は、その指定がどのソースに対しても常に有効とは限りません。
Makefileに flymake用のcheck-syntaxというターゲットをいい感じに書くのが
良い気がしてみたり。
あと、D言語とC言語の両方のソースが存在するとき、言語に応じた
コンパイラを選択させるにはcheck-syntexをどう書けば良いのかしら?
遅めに帰着。
調べ事をして終了。
昼前起床。
暇つぶしにEmacsから起動できる音楽プレイヤーである
mpg123.el
というのを入れてみたり。再生自体は外部コマンド
で行うので、mpg123とogg123をCygwinでビルドしていインストール。
でも、mpg123の方はオーディオ出力ができなくてエラーするバイナリ
になったり。コンパイル済み実行ファイルを使ってみるもCygwinから
渡すファイルパスルールと合わない為かうまく動作できず。
ogg123の方はひとまず動作するものができたのでそちらだけで我慢する事に。
ちょろりコーディング。
AM中に起床。
先日アップグレードしたFedora19で何気にEmacsを立ち上げて、
image-diredを実行してみたら、何やらサムネイルのカーソル移動がバグって
いたり。あれぇ?と思い、Cygwinの emacs-w32でもimage-diredを実行
してみたら同様にカーソル移動がバグっていたり。
具体的にはサムネイルバッファを開いた直後は正常にカーソル移動できる
のですが、一つ画像を開くとその後のカーソル移動がおかしくなって、
先頭と最後のサムネイルしか選択できなくなる感じに。
で、たまたまEmacsのbzrリポジトリのtrunkをbzr branchしていたので、
lisp/image-dired.elを入れ替えてみたところ大丈夫な感じだったり。
まぁ、今まで気づかなかったくらいなので普段使っていないのがバレバレ
ですが(^^;
flymakeというEmacsのモードを試してみたり。プログラムを編集しながら
リアルタイムに文法チェックできるというすばらしいモードで、D言語
にも対応しているらしいのですが、手持ちコードをいくつか開いてみたところ、
文法的に間違いの無い箇所をエラーとして認識していてイマイチ
使えない感じだったり。
ちょっとだけ見たところ、
起きたら午後もいい時間。寝すぎ。
ちょろり本屋に。「ONEPIECE(72)」。少しずつネタ回収されていますが、
まだまだ続きます。
暇つぶしにEmacsのartist-modeで遊んでみたり。
MS系のフォントだと半角バックスラッシュは¥マークで表示されますので、
小夏フォントを
使って表示してみました。
それにしてもなかなかの変態モードです(褒め)。二直線が交わる箇所を'X'や
'+'で表示するとか、小さな円はできるだけ円に見えるように'('や')'を使う
とか、妙なこだわりが感じられて面白いです。
VMwareに入れているFedora17をアップグレードしてみたり。
fedupというパッケージを使ってアップグレードするのですが、
感覚的にはパッケージソフトをネットワークアップデートするのと同じ感じ。
17→18、18→19と二回アップグレードを実行して特に突っかかる所無く
完了。GNOME3はなんだか使い方が良くわからなくなっている気がしたり。
気持ち遅めに帰着。
TV東京のWBSで年賀状の話をしていたり。
最近はメールで済ます人が多くなってきたという話から、スマフォで
手軽に年賀状印刷を行うという話に。
写真データ、住所録、レイアウト、全てスマフォ内のデータやアプリを使い、
印刷&投函代行業者にスマフォから委託する......それってメールで済ますのと
ほぼ同義なのでは?と思ったりも。