Bug 1719

ちょっとしたことだけど気になることがあってSDLのBugzillaにパッチを提出したのでメモ。
1719 – Remove unnecessary PrecompiledHeaderOutputFile.
VisualC\SDL_VS2012.slnを使ってSDLをビルドすると、たまに空のDebugやReleaseなどのディレクトリが作成されることがある。原因はプロジェクトファイルに含まれる「プリコンパイル済みヘッダー出力ファイル」がところどころ個別に設定されているため。特に設定する必要も無さそうなので設定自体を削除した結果、空のディレクトリは作られなくなってめでたしめでたし。

Google C++ Testing FrameworkをVisual Studio Express 2012 for Windows Desktopでビルドした

ちょっと必要になったのでGoogle C++ Testing Framework(以下gtest)をVisual Studio Express 2012 for Windows Desktop(以下msvc11)でビルドしました。といっても、やったのはソリューションファイルとプロジェクトファイルを用意しただけ。差分はgistにあげました。
https://gist.github.com/iwadon/4722737 *1
gtest-1.6.0を展開したディレクトリからpatchするとmsvc11ディレクトリが出来上がるので、その中のソリューションファイルを使ってビルドします。

*1:当初はgistを貼り付けてましたが、表示がおかしくなったのでリンクのみにしました。

Audition CS6のメディアブラウザーのショートカット

Audition CS6にはメディアブラウザーという、Explorerのツリービューに音声素材のプレビュー機能を加えたようなパネルがあります。Audition 3以前はファイルを開くダイアログでプレビューを行えていましたが、Audition CS5.5ではその機能が削除されました。かなり不便でしたがAudition CS6でこのメディアブラウザーが追加されたためプレビュー環境はかなり改善されました。
プレビュー環境の改善は嬉しいのですが、このメディアブラウザーではディレクトリ名を直接指定できないのが不便で、複数のディレクトリを渡り歩くのが面倒です。そこで、ディレクトリ名をショートカットとして保存する機能をよく使っていますが、保存される名前が実際のディレクトリ名のままなのがまた不便です。というのも僕が素材ファイルを置く場所というのは大概materialという名前にしているため、複数のプロジェクトの素材置場を次々にショートカットに保存すると、ショートカットのリストにはmaterialという名前が並ぶことになって、どれがどれだかわからなくなります。

  • work
    • プラットフォームA
      • 作品名
        • build
        • material
        • script
        • (中略)
      • 作品名
        • build
        • material
        • script
        • (中略)
    • プラットフォームB
    • ...(以下略)

(以下後程追記します)

ODSファイル同士の比較表示

TortoiseSVN向けにWinMergeを使ったODSファイルの差分を表示するスクリプトRubyで書いた。普段TortoiseSVNの「差分ビューアー」に登録する場合はexerbを使って実行ファイル化するんだけど、exerbを使えるRuby 1.8環境にはNokogiriをインストールしてなくて、かつ今更インストールするのも面倒。ということで、TortoiseSVNにはrubyw.exeでスクリプトを実行するように設定した。
ちなみに書いたのやこんなヤツ。以前Qiitaにあげたもの*1と作りは同じだけど、ODSファイルをTSV形式に変換するところを具体的に書いた。ODSファイルからcontent.xmlを取り出して、NokogiriのSAXパーサーを使ってTSV形式のファイルにしてからWinMergeで比較している。

require 'nokogiri'
require 'zip/zipfilesystem'

class Doc < Nokogiri::XML::SAX::Document
  attr_reader :tsv

  def initialize
    @tsv = ''
    @begin_of_row = false
    @str = ''
  end

  def characters(str)
    @str << str
  end

  def start_element(name, attrs = {})
    case name
    when 'table:table-row'
      @begin_of_row = true
    when 'table:table-cell'
      n = (attrs.assoc('table:number-columns-repeated') || [0, 1])[1].to_i
      n.times do
	if @begin_of_row
	  @begin_of_row = false
	else
	  @tsv << "\t"
	end
      end
    else
      @begin_of_row = false
    end
  end

  def end_element(name, attrs = {})
    case name
    when 'table:table-row'
      @tsv << "\n"
    when 'table:table-cell'
      @tsv << "\"#{@str}\"" unless @str.empty?
      @str.clear
    end
  end
end

def ods2tsv(filename)
  content_xml = Zip::ZipFile.open(filename) do |zf|
    zf.file.read('content.xml')
  end
  doc = Doc.new
  parser = Nokogiri::XML::SAX::Parser.new(doc)
  parser.parse(content_xml)
  doc.tsv
end

require 'tempfile'
a = Tempfile.new('diff_ods_a_')
b = Tempfile.new('diff_ods_b_')
begin
  a.write(ods2tsv(ARGV[0]))
  b.write(ods2tsv(ARGV[1]))
  a.close
  b.close
  system 'C:/Program Files/WinMerge/WinMergeU.exe', a.path, b.path
ensure
  a.close!
  b.close!
end

ODSファイルのテキスト化については以前 xdoc2txtとODSファイル - 単なる日記@はてな という日記を書いたが、今回の差分表示は以前よりはマシな感じになってる(ように見える)。凝りだすときりがないのでこれはここまで。仕事に戻ります。

2013-01-28 17:17

  • 行末に余分なコンマが出力されていたのを修正した。
  • セルの内容によって複数回Doc#charactersが呼び出されても問題ないようにした。
  • 複数回同じセルの内容が続くとうまく出力されなかったのを修正した。

謹賀新年

あけましておめでとうございます。
などと、元旦ももうすぐ終わってしまうタイミングに慌てて書いてますが、もう2013年なんですねえ。2013という数字にものすごい未来を感じます。
昨年はなんだかんだで辛くもあり楽しくもありという一年でしたが、今年も可能な限りマイペースに過ごして行きたいと思います。今日超久しぶりに行った熱田神宮にあった厄年リストの看板を見て自分が去年まで厄年(後厄)だったことを思い出すくらいですしね。って実はいろいろ失敗したりミスしたりしたのも厄年のせいだったのでは?(ぉぃぉぃ)
それでは本年もよろしくおねがいします。

Emacs 24.2 for Windowsでのdiredの表示の崩れを直した

Index of /gnu/emacs/windows
Windows 7Emacs 24.2を使っていて、以前からdiredの表示が崩れているのが気になっていた。具体的には各行の月の表示が一桁だったり二桁だったりして、ファイルの日付によって一文字分表示がズレてしまう。例えば以下の様な表示になる:

ググっても同様の現象が起きている人を見つけられなかったため環境依存の可能性が高いが、どうにも見辛いので解決方法を探していたところ、変数ls-lisp-format-time-listを使って日付の書式を変更できるらしい。ということで以下のようにした:

(setq ls-lisp-format-time-list (quote ("%2b %d %H:%M" "%2b %d  %Y")))

ようするに月の表示を二桁固定にしただけ。おかげで表示の崩れが無くなった: