2016/10/23(日) [n年前の日記]
#1 [cg_tools] StylePixの日本語言語ファイルをそこそこ修正
少なくとも、メニュー項目の中に「出口」「作物」「地域」等の怪しい訳は無くなった…と思うので、一応置いておくのです。まだ怪しいところが残ってるけど、目立つところは直せたはず。
*1
_Jp_m256_20161023_txt.zip (StylePix 1.14.5.0 用)
Languageフォルダに入れて StylePix を起動すれば、オプションから言語を切り替えて使える。ファイル名が言語名として扱われるようで。
ちなみに、StylePix 2.0.0.5 の言語ファイルは、1.14.5.0 より微妙に項目数が増えていて、その増えた分が Japanese.txt に反映されてないように見えた。
_Jp_m256_20161023_txt.zip (StylePix 1.14.5.0 用)
Languageフォルダに入れて StylePix を起動すれば、オプションから言語を切り替えて使える。ファイル名が言語名として扱われるようで。
ちなみに、StylePix 2.0.0.5 の言語ファイルは、1.14.5.0 より微妙に項目数が増えていて、その増えた分が Japanese.txt に反映されてないように見えた。
◎ チェック作業に使ったRubyスクリプト。 :
StylePix の言語ファイルを読み込んで、CSVファイルとして出力するRubyスクリプトを書いた。出力された CSV を、Excel や LibreOffice Calc 等で開けば視認性が良くなるので、抜けがないかチェックしやすくなる。というか抜けてるところだけリストアップするスクリプトにしたほうがいいのかもしれないけど。
動作確認環境は、Windows10 x64 + Ruby 2.2.5 p319。
使い方は、Languageフォルダの中に id_dump.rb を置いて、ruby id_dump.rb と打って実行。__tmp.csv が出力される。出力内容には、英語、日本語(オリジナル)、日本語(修正版)だけを並べている。
ちなみに、言語化ファイル群の中にはハングル文字で書かれたファイルがあるけど、そのままだとアクセスすらできないだろうから、そのファイルだけkorean.txt にリネームしてから作業した。
_id_dump.rb
Excel や LibreOffice Calc に渡す CSV は、UTF-16LE + BOM じゃないといかんらしいので、スクリプト内でやたらと encode("UTF-16LE") を呼んでいたり。
一応、出力されたCSVも置いてみたりして。
___tmp_csv.zip
動作確認環境は、Windows10 x64 + Ruby 2.2.5 p319。
使い方は、Languageフォルダの中に id_dump.rb を置いて、ruby id_dump.rb と打って実行。__tmp.csv が出力される。出力内容には、英語、日本語(オリジナル)、日本語(修正版)だけを並べている。
ちなみに、言語化ファイル群の中にはハングル文字で書かれたファイルがあるけど、そのままだとアクセスすらできないだろうから、そのファイルだけkorean.txt にリネームしてから作業した。
_id_dump.rb
# StylePix Language file check. # output __tmp.csv (UTF-16LE + BOM) output_file = "__tmp.csv" # StylePix Language files filelist = [ 'English.txt', 'Japanese.txt', 'Jp_m256_20161023.txt', 'Arabic.txt', 'ChineseSimplified.txt', 'ChineseTraditional.txt', 'French.txt', 'German.txt', 'Italian.txt', 'Welsh.txt', 'korean.txt', # please rename ] # pickup language files pickuplist = [ 'English.txt', 'Japanese.txt', 'Jp_m256_20161023.txt', ] # UTF-16LE string re_comment = Regexp.new( '^\/\/'.to_s.encode( "UTF-16LE" )) re_blankline = Regexp.new( '^\s+$'.to_s.encode( "UTF-16LE" )) re_word_tab_word = Regexp.new( '^(\S+)\s+\"(.+)\"$'.to_s.encode( "UTF-16LE" )) re_start_quot = Regexp.new( '^"'.to_s.encode( "UTF-16LE" )) re_end_quot = Regexp.new( '\"$'.to_s.encode( "UTF-16LE" )) nullstr = "".encode("UTF-16LE") sep = "\t".encode("UTF-16LE") # File read data = {} id_lst = {} filelist.each do |fn| dt = {} f = File.open(fn, 'rb:BOM|UTF-16LE') while l = f.gets l.chomp! next if l =~ re_comment # skip comment next if l =~ re_blankline # skip blank line if l =~ re_word_tab_word id, value = $1, $2 dt[id] = value if id_lst.has_key?(id) id_lst[id] += 1 else id_lst[id] = 1 end end end f.close data[fn] = dt end # make csv res = [] header = [] header.push("ID".encode("UTF-16LE")) pickuplist.each do |fn| header.push(fn.encode("UTF-16LE")) end res.push(header) id_lst.keys.each do |id| dt = [] dt.push(id) pickuplist.each do |fn| v = data[fn] dt.push((v.has_key?(id))? v[id] : nullstr) end res.push(dt) end # output csv (UTF-16LE + BOM) f = open(output_file, 'wb:UTF-16LE') f.write "\uFEFF" # BOM res.each do |l| f.puts l.join(sep) end f.close
Excel や LibreOffice Calc に渡す CSV は、UTF-16LE + BOM じゃないといかんらしいので、スクリプト内でやたらと encode("UTF-16LE") を呼んでいたり。
一応、出力されたCSVも置いてみたりして。
___tmp_csv.zip
◎ 余談。StylePixの動作がちょっと怪しい気がする。 :
StylePix起動時の動作が、なんだかちょっと怪しい感じがする。OS起動直後に起動する分には素早く起動してくれるけど、何度か StylePix の終了と起動を繰り返しているうちに、デスクトップ画面全体を巻き込んで、しばらく操作できない場面が出てくる…。一体何が起きてるんだろう…。ちなみに環境は Windows10 x64。
◎ 余談その2。StylePix 2.xの起動は遅い。 :
StylePix 1.x は起動が比較的早いけど、2.x はめっきり起動が遅い感じで。
ただ、起動と終了を何度も繰り返した状況で確認したので、インストールした直後なら起動が早かったりするのかもしれないけど、そこまで確認していない。
ただ、起動と終了を何度も繰り返した状況で確認したので、インストールした直後なら起動が早かったりするのかもしれないけど、そこまで確認していない。
◎ 2016/10/28追記。 :
最初は txt ファイルを置いていたのだけど、サーバにアップロードしてみたら途中で切れてた…。zipファイルにして置き直したり。
*1: 公式のソレに反映してもらえたらいいのだけど、自分、英語が全く分からんから交渉しようもなく。
[ ツッコむ ]
#2 [ruby] Ruby でUTF-16LEのテキストファイルにアクセス
せっかくテストしたのでメモ。動作確認環境は、Windows10 x64 + Ruby 2.2.5 p319。
テストに使った UTF-16LE のテキストは以下。
_text_utf16le_bom.txt
テストに使った UTF-16LE のテキストは以下。
_text_utf16le_bom.txt
◎ 読み込み。 :
まずは読み込んでみる。
_open_utf16le.rb
結果。
_open_utf16le.rb
# UTF-16LE + BOM のテキストファイルにアクセス infile = "text_utf16le_bom.txt" File.open(infile, 'rb:BOM|UTF-16LE') {|f| while l = f.gets l.chomp! puts l.encoding # => UTF-16LE end }
- File.open() に 'rb:BOM|UTF-16LE' を指定すれば UTF-16LE + BOM として開ける。
- さらに、gets で読み込めば、 string が UTF-16LE として扱われる。
- フツーは、ファイルを開いたら close で閉じないといけないが、File.open() にブロック({ } とか do end とか)をつけた場合は close を省略できる。
結果。
> open_utf16le.rb UTF-16LE UTF-16LE UTF-16LE UTF-16LE UTF-16LE UTF-16LE UTF-16LE UTF-16LE「文字列(String)のタイプは UTF-16LEだよ」と表示された。
◎ 正規表現。 :
UTF-16LE + BOM の文字列に対して正規表現を使う例。
_open_utf16le_regexp.rb
結果。
_open_utf16le_regexp.rb
# UTF-16LE + BOM の文字列に対して正規表現を使う infile = "text_utf16le_bom.txt" re0 = Regexp.new( '^\/\/'.to_s.encode("UTF-16LE") ) re1 = Regexp.new( '^(.+)\t(.+)$'.to_s.encode("UTF-16LE") ) f = File.open(infile, 'rb:BOM|UTF-16LE') while l = f.gets if l =~ re0 puts "comment" elsif l =~ re1 puts "data" end end f.closeソースコードの文字コード(この場合はUTF-8)、とは異なっている文字コードの文字列(UTF-16LE)に対して正規表現を使いたい場合、Regexp.new() を使う。いつもの調子で l =~ /^(.+)/ とか書いてしまうと UTF-16LE と UTF-8 が混在してるので「おいコラ、違う文字コードが混ざってるぞ」と怒られる
結果。
> open_utf16le_regexp.rb comment comment data data comment comment data dataUTF-16LEの文字列に対して正規表現を使って判別処理ができてる。
◎ 書き込み。 :
UTF-16LE + BOM でテキストファイルを出力してみる。
_output_utf16le.rb
_output_utf16le.rb
# UTF-16LE + BOM の文字列をテキストファイルとして出力 outfile = "_tmp.txt" File.open(outfile, 'wb:UTF-16LE') { |f| f.write "\uFEFF" # BOMを出力 DATA.each do |l| f.puts l.encode("UTF-16LE") end } __END__ ABCDEFG 0123456 日本語を記述
- f = open(outfile, 'wb:UTF-16LE') で、UTF-16LE で出力できる。
- f.write "\uFEFF" で、BOMを出力。
- DATA.each {|l| puts l } を使えば、__END__ 以降に書かれた文字列を1行ずつ読み込める。
◎ 参考ページ。 :
_ruby - Replacing string in UTF-16LE encoded file - Stack Overflow
_Excelですぐ開けるUnicodeなCSVをRubyで生成する | 秋山ブログ
_Rubyのエンコーディングその2 - @tmtms のメモ
_異なるエンコーディングでのファイル書き出しと読み込み - Qiita
_Rubyist Magazine - Ruby M17N の設計と実装
_constant Object::DATA (Ruby 2.3.0)
_RubyのDATAという特殊なグローバル定数 - yarbの日記
_たまに便利な、Rubyの組み込み定数 - Qiita
_Excelですぐ開けるUnicodeなCSVをRubyで生成する | 秋山ブログ
_Rubyのエンコーディングその2 - @tmtms のメモ
_異なるエンコーディングでのファイル書き出しと読み込み - Qiita
_Rubyist Magazine - Ruby M17N の設計と実装
_constant Object::DATA (Ruby 2.3.0)
_RubyのDATAという特殊なグローバル定数 - yarbの日記
_たまに便利な、Rubyの組み込み定数 - Qiita
[ ツッコむ ]
#3 [windows] やっぱりWindows10がスリープから復帰できない
NVIDIA GeForecドライバが何度か更新されたので、実は GTX 750 Ti のドライバも少しは中身が変わっているのではと期待してしまって。Windows10 をスリープさせて復帰させようと試してみたところ、やっぱりスリープ復帰に失敗してブルースクリーンに。DPC_WATCHDOG_VIOLATION と表示されてる…。
GTX 750 Ti は、スリープ関連については、もうダメかもしれん。省電力化を進めたことで不具合を起こすようになってしまったんだろう…。もっとも、Windows7時代の古いドライバなら一応スリープ復帰できていたので、ドライバ側で行える回避策があるのだろうけど…。
GTX 750 Ti は、スリープ関連については、もうダメかもしれん。省電力化を進めたことで不具合を起こすようになってしまったんだろう…。もっとも、Windows7時代の古いドライバなら一応スリープ復帰できていたので、ドライバ側で行える回避策があるのだろうけど…。
[ ツッコむ ]
#4 [anime] ウルトラマンオーブ、べリアルさんの回
怪獣を倒すためとは言え、
街をガンガン破壊するウルトラマン…。イイな…。
ビルを引き抜いて怪獣をタコ殴りしたり、
八つ裂き光輪で怪獣の尻尾を切断した上にその
尻尾を凶器代わりにしてタコ殴りしたり。ウルトラマンは正義のヒーロー、という思い込みがあるので、乱暴なソレは見ていてクラクラしてきて、なんだかイイ感じ。もっともこのへん進めていくと、平成ライダーのようなギスギスシリーズになって差別化が難しい気もするけど。たまにはこういうのもいいよなと。
まあ、劇場版その他ではべリアルさんがそういう役として活躍してる印象もあるのでアレですが。
まあ、劇場版その他ではべリアルさんがそういう役として活躍してる印象もあるのでアレですが。
[ ツッコむ ]
以上、1 日分です。