zt日記

書いているのは Kazuhiro NISHIYAMA a.k.a. ZnZです。
2001|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|
2012|04|05|06|09|

この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。

xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法インストールメモXREA + tDiary + Namazuをどうぞ。


2007年01月01日(Mon)

[web] 段落アンカー

HYSPRO diaryの段落アンカーが全部p00になってしまっているように見える。


2007年01月04日(Thu)

[ruby] ruby -vの内容をrubyレベルで

matzrubyというブランチが増えて、simple_versionのやり方のpatchlevel対応だけだと無理が出てきそうな気がしたので、pipeを使って標準出力を奪って、version.cのruby_show_versionという関数の出力を取り出そうという作戦に変更しようとしてみた。

DLを使えばいいのかと思いきや、使い方がよくわからずに適当にやってみたら使えたり、現在のtrunkだとdlがmake installでインストールされなかったので、rbconfigにも対応してみたりした。

module RubyShowVersion
  module_function
 
  # dl依存版
  def dl_version
    require 'dl/import'
    eval(<<-'RUBY_CODE', binding, __FILE__, __LINE__+1)
      module RubyShowVersion
        if defined?(DL::Importable)
          extend DL::Importable
          dlload nil
        else
          extend DL::Importer
          dlload DL::Handle.new(nil)
        end
        extern "void ruby_show_version()"
        ruby_show_version
      end
    RUBY_CODE
  end
 
  # rbconfig依存版
  def rbconfig_version
    require 'rbconfig'
    c = Config::CONFIG
    rubypath = File.join(c['bindir'], c['ruby_install_name'] + c['EXEEXT'])
    system(rubypath, '-v')
  end
 
  # patchlevel対応版(matzruby未対応)
  def simple_version
    if defined?(RUBY_PATCHLEVEL)
      puts "ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE} patchlevel #{RUBY_PATCHLEVEL}) [#{RUBY_PLATFORM}]"
    else
      puts "ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
    end
  end
 
  # version情報表示
  def version
    IO.popen('-', 'r') do |io|
      return io.read if io
      begin
        dl_version
      rescue LoadError
        begin
        rbconfig_version
        rescue LoadError
          simple_version
        end
      end
      $stdout.flush
      exit!(0)
    end
  end
end

2007年01月09日(Tue)

[ruby] setup.rb

[ruby-list:43094] [ANN] Exerb 4.1.0 Releasedでsetup.rbの実行をconfig,setup,installで書いているけど、最新のsetup.rbなら引数なしで実行するだけでインストールまでされるはず。

[net] 日本語ドメイン名URL

IRCクライアントも対応してくれるとうれしいのかもしれない。


2007年01月11日(Thu)

[emacs] mhcの設定とか

mhc-trunkとかでcheckoutしていて、その中のemacsディレクトリにload-pathを通すようにしているところからシンボリックリンクをしていて、mhc-icon-pathとかmhc-schedule-fileとかを自動で設定したかったという話。

(let ((my-mhc-emacs-dir (file-truename (locate-library "mhc"))))
  (setq my-mhc-dir
        (and (string-match ".*/mhc[^/]*/" my-mhc-emacs-dir)
             (substring my-mhc-emacs-dir
                        (match-beginning 0) (- (match-end 0) 1)))))
 
(let ((iconpath (expand-file-name "icons" my-mhc-dir)))
  (if (file-directory-p iconpath)
      (setq mhc-icon-path iconpath)))
 
(defun my-mhc-schedule-file (dot-schedule-files)
  (let ((dot-schedule (expand-file-name (car dot-schedule-files))))
     (if (file-exists-p dot-schedule)
         (setq mhc-schedule-file dot-schedule)
       (my-mhc-schedule-file (cdr dot-schedule-files)))))
 
(my-mhc-schedule-file
 (list
  (expand-file-name "~/.schedule") ; default of mhc-vars.el
  (expand-file-name "samples/DOT.schedule.sample.jp" my-mhc-dir)
  "/usr/share/doc/mhc/examples/DOT.schedule.sample.jp"))

これだけのことをするにも再帰してる関数の関数名を変えたら中の再帰してる部分を変え忘れたりとか、最初再帰を使わずにdolistを使っていたら変数部分の括弧の数を間違えたりバグりまくりで、Too Dynamicのようなことは無理と思ってしまう。


2007年01月15日(Mon)

[Linux] 末尾の改行

diff も末尾が改行じゃないとなんか文句いうよね。

「\ No newline at end of file」は文句じゃなくてdiffの中身の一部のように見えます。

% (echo aaa; echo bbb) > ab.txt
% (echo aaa; echo -n ccc) > ac.txt
% LANG=C diff -u ab.txt ac.txt
--- ab.txt      2007-01-15 23:35:57.060627860 +0900
+++ ac.txt      2007-01-15 23:36:03.300643521 +0900
@@ -1,2 +1,2 @@
 aaa
-bbb
+ccc
\ No newline at end of file
% diff -u ab.txt ac.txt | patch
patching file ab.txt
% cat -A ab.txt; echo
aaa$
ccc
%

[web] LDRの謎の「livedoor コンピュータ 総合

firefoxに拡張を入れてみて再起動する前にリロードをしたタイミングで出てきて、再起動したり入れた拡張を消したりしても出てくるし、aを押しても移動できないので、なにこれバグ?とか思っていたけど、「これはスポンサーフィードです。」ってどこ?と思っていろいろ試してみたところ、マウスでのクリックで開けた。キーボードでの開き方はわからないままだけど。

担当者のおすすめフィード:livedoor コンピュータ 総合 - livedoor Blog(ブログ)に同じものっぽいのがあったので、登録してリロードしたら消えた。


2007年01月24日(Wed)

[ruby] 注意した方がいい変数名

変数の扱いで悩んだというのをみて、hashとかpとかidとかいう変数名を使うとはまりやすいのを思い出した。


2007年01月28日(Sun)

[wii] WiinRemoteとGlovePIE

WiiRemote+Miyakoで動かなかったというのを見て、気になったので試してみた。(WiiRemoteって書いてあるけどWiiRemoteはWiiリモコンの英語名なのでWiinRemoteの間違いではないかと。)

結論から言うとWiinRemoteだとダメで、GlovePIEだとOKだった。たぶんキー入力を発生させているAPIの違いだと思う。

メニューのFileのOpenでスクリプトはWiimoteScriptsの中のNES.PIEを選らんで開いて、Runと書いてあるボタンを押して動かして、Ruby/SDLスターターキットのrskit-1.2.0b.zipのdebug.exeで(バーチャルコンソールのファミコンのゲームをやるときと同じようにWiiリモコンを横に持って)左右やプラスキーでのエンターが動くのを確認できた。


2007年01月31日(Wed)

[ruby] 数値文字参照への変換

Ruby で文字列を文字参照に変換するだとtoutf16.unpack( "n*" )にしているけど、UTF-8をunpack("U*")する方がわかりやすいような気がする。


copyright © 2001-2013 ZnZ
Key fingerprint = 6E14 2C9C DBD7 874D 8B3C CAA8 9B58 5538 ED7E 1B73