Hatena::Diary

GANAwareはてな版

2010-02-03

twitter

https://twitter.com/ganaware

つくってはみたものの、どうしたものやらさっぱり。

2010-02-02

ruby 1.9 の文字コード変換は String#encode を使用する

Googleruby 文字コード変換 - Google 検索 をぐぐってもちっとも見つからないのでなかなか発見できなかったのですが、ruby 1.9 からは文字コードを変換するには String#encode を使用するようです。

ruby では nkf/kconv/uconv/iconv は obsolete ということでいいのかな?

2010-02-01

〜‖−¢£¬ と libiconv と cp932

CP932 と UNICODE の相互変換した時に「〜‖−¢£¬」が期待通り*1 に変換してくれるかどうかを調査してみました。

以下のシステムはでは期待通りに変換してくれます:

少なくとも以下のシステムの libiconv は期待と異なる変換になります:

  • libiconv 1.11 (osx 10.6.2)
  • libiconv 1.13 (cygwin 1.7.1)

次のようなコードを書いて調査しました:

iconv の CP932 がマトモに使えるようになると思われるパッチ:

2010-01-29

allocatorが異なるstring

typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, 
                          my_allocator<wchar_t> > my_wstring;
std::wstring str1;
my_wstring str2;
str1 == str2; // error
str1 < str2; // error
str1 = str2; // error

うーん、不便。allocator が異なる場合でもこれらの関数は問題なく実装できると思うのですけれど。

2010-01-27

OSX 流儀の IME オンオフ

最近 OSX に慣れてしまったので、Windows での IMEオンオフの流儀に違和感を覚えるようになってきてしまいました。

というわけで、そんな時に役に立つのが yamy や nodoka です。

keymap Global
 if ( KBD109 )
   key *無変換		= &Ignore		# 無変換を IME オフkey IL-*無変換	= $ToggleIME		#	〃
   key IC-C-K		= F7			# IME で変換中の C-K は F7
   key *変換		= &Ignore		# 変換を IME オンに
   key ~IL-*変換	= $ToggleIME		#       〃
   if ( YAMY )
     key *E0無変換	= &Ignore		# 無変換を IME オフkey IL-*E0無変換	= $ToggleIME		#	〃
   endif
 endif

yamy の場合は、-DYAMY しておく必要があります。