昔の最近の出来事(2013.10)

2013/10/31

気持ち早めに帰着。

ちょろり調べ事。

2013/10/30

気持ち遅めに帰着。

gcc-4.8.2が出ていたのに気づいたり。

2013/10/29

遅めに帰着。

ちょろり調べ事。

2013/10/28

気持ち遅めに帰着。

artist-modeの円塗りつぶしがバグっている件を調べたり。 「(mapc」てのを「(mapcar」に戻すと直ったり。 両者は似たものらしいのですが、置換で置き換えてはダメな感じなのかしら? でも、mapcarのままだとバイトコンパイル時にワーニングメッセージが出て バイトコンパイルできません。正しい直し方がイマイチよく判りませんが、 バグっていると用事にならないので バイトコンパイルの方を諦めると いう感じで。

artist-mode用のバインドを追加してみたり。

(load-library "artist.el")
(define-key artist-mode-map [?\C-1] '(lambda () "" (interactive) (setq artist-spray-radius 1)))
(define-key artist-mode-map [?\C-2] '(lambda () "" (interactive) (setq artist-spray-radius 2)))
(define-key artist-mode-map [?\C-3] '(lambda () "" (interactive) (setq artist-spray-radius 3)))
(define-key artist-mode-map [?\C-4] '(lambda () "" (interactive) (setq artist-spray-radius 4)))
(define-key artist-mode-map [?\C-5] '(lambda () "" (interactive) (setq artist-spray-radius 5)))
(define-key artist-mode-map [?\C-6] '(lambda () "" (interactive) (setq artist-spray-radius 6)))
(define-key artist-mode-map [?\C-7] '(lambda () "" (interactive) (setq artist-spray-radius 7)))
(define-key artist-mode-map [?\C-8] '(lambda () "" (interactive) (setq artist-spray-radius 8)))
(define-key artist-mode-map "\C-c\C-a\C-v" '(lambda () "" (interactive) (setq artist-spray-chars (reverse artist-spray-chars))))

スプレーというブラシっぽい描画も行えるのですが、太さを変えるバインドが特に 割り当てられていなかったので、C-1〜8に割り当ててみたり、スプレーの消し方向の為に パターンを反転するバインドを加えてみたり。

2013/10/27

昼過ぎ起床。

Web検索していたら、 「Nyan Mode」なる Emacsモードラインのアクセサリ表示を知ったり。日本人が作ったのかしら? と思ったのですが、どうやら違うみたい。

[nyan-mode]

で、猫なのは判るのですが、胴体の四角いのが何なのかよく判らなかったので、 そもそも何なのかもう少し調べてみたところ、 「Nyan Cat」のWikipedia というのがあり、胴体はポップタルトだと判ったり。 曲や動画についてはこちらの記事 が判りやすいかも知れません。ただ、タイトルに「日本のカワイイ「Nyan Cat」」とある のは、厳密にはちょっと誤解を招く表現かも知れません。 TANEは今回初めて知ったのですが、2011年のYouTube再生数ランク5位って、 世界規模でブームになっていたというのは驚きです。

胴体がクッキーという事ですが、そういや胴体がドーナツの 「どーにゃつ」 てのもあったなと思ったり。登場時期はNyanCatの方が少し早いか?

もうしばらくNyanCatについて検索していたところ、なかなか中毒性が 高い所にみんなハマっているようです。 で、知った記事がこちら。 記事の最後に吹いた。

Emacsのartist-modeなるモードを知ったり。ずいぶん古くから(Emacs19.28以降?) 存在するモードだったようです。ただ、emacs-w32(24.3)では円の塗りつぶしが バグっている予感。Meadow3では正しく動くようなので、Emacs本体のバージョンアップに 対応していく際にバグってしまっているのかも?

2013/10/26

昼前起床。

もそもそとgit移行。一通り移し終えた感じ。

magit。やっぱりトラッキングされているファイルの一覧が判らないのは 不便だなぁと思ったので、表示できるように改造してみたり。 先日述べたようにgitのコマンドだけでは 「cacheされているが更新されていない」 という状態を簡単に取得できないので、「cacheされているファイル」の一覧表示 (git ls-files 相当)で我慢するという感じ。

[magit改造してみた]

untrackedのコードを参考に取って付けた感じなので、巨大なプロジェクトでの 使い勝手なんかはイマイチかも知れません。そんな訳でパッチを置いてみます (magit.el.20131026.patch)。 使えればラッキーぐらいの感じでひとつ。

2013/10/25

気持ち早めに帰着。

もそもそとgit移行。

あまりの眠さに急速停止。

2013/10/24

気持ち遅めに帰着。

ちょろり調べ事。

2013/10/23

早くも無く遅くも無く。

もそもそとgit移行。

そういえばgitのdiffでは空白文字だけの行が赤くハイライトされます。 Emacsのc-modeやd-modeを使用していると、RETキーで自動インデントされる都合、 改行だけの行ではなく、空白文字を含んだ行になりがちです。 で、これらを綺麗にする良い方法は無いかなぁ?と思いWebを探ってみたところ、 こちら で知ったEmacsマクロが良い感じ。 gitの不要な空白ハイライトに対応するならば、delete-trailing-whitespace を使うのが良いみたい。この関数ではEOFまでの改行だけの行の削除も行って くれます。

さらに .emacs(オールドスタイルですみません)に 「(add-hook 'before-save-hook 'delete-trailing-whitespace)」てなのを入れておけば delete-trailing-whitespaceを実行してからセーブする感じになります。これで良いかも。

因みに、whitespace-mode というマイナーモードを使えば 空白文字を可視化する事ができますが、常用するには表示が少しうるさいです(^^;

2013/10/22

早くも無く遅くも無く。

手持ちコードをぼちぼちgitに移してみたり。

2013/10/21

早めに帰着。

gitのコードを調査してみたり。wt-status.cがgit statusを実行 した時の表示を行っているコードの模様。 でも、wt_shortstatus_print()という関数を見てみるに、 ステータスに変更のあったファイル、untrackedなファイル、 ignoredなファイルがそれぞれリストになっていて、 順に表示しているという感じ。この中には何もいじっていないファイル の一覧は含まれていない模様。
ファイルリストのそれぞれに対してステータスが全て与えられていて、 単に「PATH1またはPATH2のどちらかがunmodifiedじゃなければ表示する」 くらいの簡単なフィルターで表示しているのかと想像したのですが、 そんなに簡単な話ではありませんでした。で、何もいじっていない ファイルの一覧を作ろうとすると結構面倒臭い感じだったり。
そんな訳でファイルの一覧を表示するのはやっぱり簡単では無いという結論 は変わらず。

2013/10/20

AM中に起床。

magitでファイルの一覧が出ない件、もしかするとgitによるものかも? と思ったりも。

Subversionでは「svn ls」とやれば、管理下に置かれている ファイル一覧を取得する事ができ、「svn status」とすれば管理下に置かれていない ファイル一覧を(.oなどは含まない良い感じのフィルタを通して)取得する事もできます。 Gitでは「git status -s」とやれば管理下に置かれていないファイルと更新された ファイル一覧を取得する事はできますが、管理下に置かれている変更の無いファイル一覧は 取得できないようです。

「lsの結果からgit status分を省けばいいんじゃ?」とか方法は色々考えられる とは思うのですが、むしろ管理下に置かれているファイルの一覧が出せない方 が謎のようにも思います。恐らく「git status -s -a」のような全部出すオプション でもあれば、それで済む話なのかも知れません。

もう少し良く調べてみたら、「git ls-files」で「svn ls +α」の事が できるみたい。「git ls-files -cdmokt」を使えば、行頭にファイルのステータス も表示されるので、これで一覧が作れるようにも思ったり。
んー、でも小さいプロジェクトならともかく、ファイル数が1000を越えるような 大きなプロジェクトだと一覧が大きくなりすぎるので、むしろその場合は変更の 無いファイルは表示しない方が良いかもなぁ?と思い直したりも。

ちょろっと実験でトラッキングされているファイルを表示してみたり。 でも、よく見るとうまくいってなくて終了。 まず、「git ls-files -ct」でキャッシュされているファイルを取得 したのですが、これって更新されたファイルに対しても同じように リストに出てきます。

$ git ls-files -tcm
H main.d
C main.d

確かに、キャッシュされてて更新もされている訳なので、表示としては 正しいのですが、これじゃない感満載です。
あと、「git ls-files」のヘルプによると -tオプションは 「This feature is semi-deprecated(半非奨励).」となっている所。 「git state」を使えって事のようですが、先にも書いたようにトラッキングされているが 特にいじっていないファイルを表示できません。そんな訳で、今の状況では psvnのような表示を行う事は簡単では無いという結論に達してみたり。

2013/10/19

AM中に起床。

org-mode 8.2.1を入れてみたり。以前 知ったorg-table.elへのパッチは引き続き適用。TANEの使っている範囲内では 特に大きく変わった感じは無さげ。
Web検索していてたまたま知った vim-orgmode。Vim上で動くorg-modeっぽいものらしい。

Gitを使ってみたり。と言っても、ローカルファイルで実験的にコマンドを試すだけですが。 ついでにEmacs上からmagitなるGit操作の拡張も使ってみたり。 magitはソースからのビルドがうまくゆかず、不本意ながらパッケージインストールしました。

さておき、magitでは どうやらpsvnと違ってdired的な要素は排除されていて gitの操作のみに注力しているようです。なもんですから、 「これって最初の変更を加えるのにどうやってファイルを開くの?」みたいな所が謎になってます。 履歴やらdiff表示やらファイルステータスやら非常に見やすく表示され、 リストに表示されていれば(ModifyedやUntrackedなど)、「RET」キーで(少し待たされますが) 開く事ができるのに、なぜ変更の為にファイルを開く事はできないのかしら?

CGWORLD特別編集版である「ゲームグラフィックス 2013」という本。 現行機のまとめとしては最後となるかも。そういや海外のゲームスタジオについては 本書では全く触れられていません。ノーティードッグやロックスターゲームズ などの海外スタジオがどんな感じで作っているのか見てみたいかも。

2013/10/18

早めに帰着。

あまりの眠さに急速停止。

2013/10/17

昼頃起床。今日で夏休み終了。

もそもそとコーディング。

録画消化したり調べ事をしたりして終了。

2013/10/16

AM中に起床。台風通過中に一度起床。そして二度寝。昼前再起床。

そういやGitHubで検索する時、Advanced searchを使えば、言語フィルター を使えるようなのですが、単に言語フィルターだけを使ってキーワード無し で検索できないのかしら?と思ったり。

随分前の録画を消化。なんとなく観ていた 「私がモテないのはどう考えてもお前らが悪い!」。 最後まで、ターゲット視聴者(読者)ってどこなんだ?というのが 判りませんでした(^^;

もそもそとコードの整理。 プロ遊の下の「D言語でウインドクラスを実装したときの話」 のソースコードを更新してみました。御参考まで。

2013/10/15

AM中に起床。今日から遅めの夏休み。

先日のcore.exceptionのキャッチ方法。応用の範囲内だったかも。 core.exception内に定義されている例外クラスはObject.Errorを基底 クラスとしていますので、

  try{
    :
  }catch(Exception e){
    :自前の例外処理とか
  }catch(OutOfMemoryError e){
    :メモリ不足時のリカバリー処理
  }catch(Error e){
    :その他例外処理
  }

てな感じにすれば漏れなく捕まえられるようです。

もそもそとコーディング。細かいバグを見つけては直したり。

GNU make の4.0がリリースされているのを知ったり。 Guile(Scheme(LISP方言の一つ)インタプリタ)を外付けプログラムとして 制御に使えるようになったらしいですが、そこまで使いこなす人が居るか否かは 不明。機能追加されるのはありがたい人にはありがたいとは思いますが、 make だけでmakeできないのだとすると、それはそれで面倒臭いのではと 思わなくもなかったり。

2013/10/14

起きたら午後もいい時間。寝すぎ。

D言語でOutOfMemory例外をキャッチする方法がイマイチよく分からなくて 調べたり。try文のcatch節で受けるのには変わりないのですが、 メモリ不足の例外は core.exceptionにOutOfMemoryErrorという 特別な例外クラスが定義されているので、それをcatchする必要が あることが分かったり。

$ cat core_exception_test.d
import std.stdio;
import std.string;
import std.conv;
import core.exception;

int main(string[] args)
{
  uint[][] img ;

  try{
    size_t size=to!(size_t)(args[1]) ;
    img.length=size ;
    for( int i=0 ; i<img.length ; i++ ){
      img[i] = new uint[size] ;
    }
    throw new Exception("user exception") ;
    writef("img.length=%d\n") ;
  }catch(Exception e){
    writef("-----------error-------------\n") ;
    writef("%s\n",e.msg) ;
  }catch(RangeError e){
    writef("+++++++++++error+++++++++++++\n") ;
    writef("range error\n") ;
  }catch(OutOfMemoryError e){
    writef("===========error=============\n") ;
    writef("out of memory error\n") ;
  }
  return(0) ;
}

$ gdc -O2 core_exception_test.d

$ ./a.exe
+++++++++++error+++++++++++++
range error

$ ./a.exe 1000000
===========error=============
out of memory error

$ ./a.exe 10
-----------error-------------
user exception


でもこれ、core.exceptionを自前ハンドルしようとすると、全て書かなく てはならないのかしら?例えばメモリ不足以外の例外はinternalエラー としてダイアログ出したいとか思った時、例外毎に書かなくては ならないのは、まぁまぁ面倒臭い気がしたりも。

手持ちコードを整理したり。

2013/10/13

昼過ぎ起床。

Emacsの文字列サーチと言えば、C-sによるインクリメンタルサーチですが、 isearchモードでの検索文字列の入力アシストとしてC-wやM-yが使用できます。 C-wでは元bufferのカーソル位置のwordを検索文字列として取り込めますが、 日本語文字列の場合はwordの区切りがイマイチ思った感じではない事が 多々あります。M-yはkill-ringの内容を検索文字列としてペーストできますが、 予め検索文字列をkill-ringに入れておかなくてはならないのが面倒です。

そういえば、X68kのMicroEMACSにもインクリメンタルサーチが実装されていた のですが、C-wライクにC-fで文字単位で検索文字列として取り込む事ができていた なぁ?と思出し、今のEmacsでも同じようなの無いんだっけ?とlisp/isearch.el を調べてみたり。どうやら、 「(define-key map "\M-\C-y" 'isearch-yank-char)」てなバインドが 用意されていて、これが所望の操作という事が分かりました。でもこれ、 高々1文字取り込むのには手数が多すぎます。そこで、.emacs(オールドスタイルですみません)に 「(define-key isearch-mode-map (kbd "\C-f") 'isearch-yank-char)」 てなのを足してみた所、X68kのMicroEMACS風になってみたり。

そんな訳で検索文字列を手で入れるのが面倒臭いって人向けです(^^;

ちょろりコーディング。D言語ではC言語で言う所の #ifdef的なものの代わりとして version文や static if文を利用できます。個人的にはversion文は 条件演算が書けないのがイマイチに感じています。 static if に統合できないものかしら?と少し思ったりも。

2013/10/12

昼過ぎ起床。寝すぎ。

録画消化したり、調べ事をしたりして終了。

そういやTRAMPを使って /ssh: 接続した時のリモートファイル読み出し転送が /scp: 接続 したのと大差無いくらいに高速になっていたり。ただし、読み出し転送限定です(^^; 書き込みの方は(死ぬほど)遅いまま。

Meadowを使っていた頃にplinkだとファイル転送が遅すぎるのでなんとかならないのか? という事で調べたところにpscpの存在を知った訳ですが、 このとき知ったTARMPのマニュアル には、意訳すると「(sshやplinkのような)インラインメソッドは遅いけど普通の サイズのファイルなら十分でしょ?」みたいな事が書かれていました。

読み出し転送が速くなるなら、書き込み転送も同じなのでは?と思えるのですが、 違いがあるのかしら?

2013/10/11

日付け越え。

あまりの眠さに急速停止。

2013/10/10

早くも無く遅くも無く。

調べ事をして終了。

2013/10/09

遅めに帰着。

ちょろりコーディング。

2013/10/08

日付け越え前に帰着。

ちょっとだけコーディングして終了。

2013/10/07

風邪気味悪化のため早めに帰着。

飯を食ったら起きてられなくて死亡。

2013/10/06

昼過ぎ起床。ちょいと風邪気味。

Web巡回したり録画消化したりぐうたら過ごして終了。

2013/10/05

AM中に起床。午後から休出。日付け越え。

ちょろり調べ事をして終了。

2013/10/04

大幅に日付け越え。

ちょろりWeb巡回して終了。

2013/10/03

日付け越え前に帰着。

Web巡回して終了。

2013/10/02

日付け越え。

Web巡回して終了。

2013/10/01

日付け越え前に帰着。

先日仕分けたパッチでビルドしてみたところ、とりあえずビルドに 成功したものの、新しいパッチは殆ど取り込めてなかったり。


TOP PREV