2006年01月の雑感

更新日:2006-01-30
[トップページへ] [12月] [2月] [過去の雑感へ]

1月30日(月)

 JavaScriptの文字列リテラル

ちょっと調べる必要があって、ECMA-262を読む。 文字列リテラルは、シングルクォートまたは、ダブルクォートで囲む。

シングルクォートで囲まれた文字列にシングルクォートを含めるには、\を使う。 ダブルクォートはそのまま。

'シングルクォートの中の\'はバックスラッシュが必要で、"は不要。'

ダブルクォートで囲まれた文字列の場合は逆になる。

"ダブルクォートの中の\"はバックスラッシュが必要で、'は不要。"

色々考えると面倒なことになりそうである。 そんなときは、とりあえず、両方ともバックスラッシュをつけておけば良い。

'シングルクォートの中の\'も\"もOK。'
"ダブルクォートの中の\'も\"もOK。"

1月24日(火)

 BMIの標準値

22だったのか。てっきり20だと思い込んでいた。 (『すらすらと手が動くようになるSQL書き方ドリル』より)

 8ヶ月ぶりの再開

8ヶ月ほったらかしだったSQL書き方ドリルを再開。


1月21日()

 活動再開

しばらくパソコンをさわらない(さわれない)生活をしていた。 今週ぐらいからボチボチ再開。

 [Ruby] FXRuby フォント選択ダイアログを使う

FXRuby でフォント選択ダイアログを表示するには、 Fox::FXFontDialogを使います。 フォント選択ダイアログで選ばれたフォントの情報を取得するには、 Fox::FXFontDialog#fontSelection を使います。

FXCanvasに書いた文字を選択されたフォントで描画し直すために Fox::FXCanvas#updateメソッドを使います。

require 'fox14'
class FontTest < Fox::FXMainWindow
  def create
    super
    show(Fox::PLACEMENT_SCREEN)
  end

  def initialize(app)
    super(app, "font", nil, nil, Fox::DECOR_ALL, 0, 0, 200, 120)
    @font = Fox::FXFont.new(app, "times", 14)
    @font.create
    create_menu
    create_canvas
  end

  def create_menu
    menubar = Fox::FXMenuBar.new(self, Fox::LAYOUT_SIDE_TOP|Fox::LAYOUT_FILL_X)
    fontmenu = Fox::FXMenuPane.new(self)
    Fox::FXMenuCommand.new(fontmenu, "Font...").connect(Fox::SEL_COMMAND){
      font_clicked
    }
    Fox::FXMenuTitle.new(menubar, "Font", nil, fontmenu)
  end

  def create_canvas
    canvas = Fox::FXCanvas.new(self, nil, 0, Fox::LAYOUT_FILL_X|Fox::LAYOUT_FILL_Y)
    canvas.connect(Fox::SEL_PAINT) do |sender, sel, event|
      sel_paint(canvas, sender, sel, event)
    end
    @canvas = canvas
  end

  def sel_paint(canvas, sender, sel, event)
    Fox::FXDCWindow.new(canvas) do |dc|
      dc.foreground = canvas.parent.backColor
      dc.fillRectangle(0, 0, canvas.width, canvas.height)
      dc.font = @font
      dc.foreground = "black"
      dc.drawText(40, 40, "Hello")
    end
  end

  def font_clicked
    fontdlg = Fox::FXFontDialog.new(self, "font selection", Fox::DECOR_BORDER|Fox::DECOR_TITLE)
    fontdlg.fontSelection = @font.fontDesc if @font
    if fontdlg.execute != 0
      @font = Fox::FXFont.new(app, fontdlg.fontSelection)
      @font.create
      @canvas.update(0, 0, @canvas.width, @canvas.height)
    end
  end
end

app = Fox::FXApp.new('Font', 'font')
app.init(ARGV)
win = FontTest.new(app)
app.create()
app.run()

 [Ruby] FXRuby フォントの高さを求める

フォントの高さを求めるには、Fox::FXFont#getFontHeigt (または、Fox::FXFont#fontHeight) を使えばいいようです。

 [Ruby]これで準備は整った

多分。

 nonoに関する一考察の続き(4)

nonoを広めるためにどうすればよいか? nonoに欠けているものは何か? 今回はGoogleの観点で考察してみる。

Googleでnonoと入力して検索すると3番目にnonoのページが見つかる(2006年1月21日現在)。 トップは、アニメに関連するサイトで2番目は某アイドルのサイトである。 ここから、おのずとnonoに欠けているものが見えてくる。 1位と2位のサイトにあって、nonoに欠けているもの。 そう。

nonoに欠けているものは、(アニメの)萌え要素と(アイドルの)カリスマ性である。

では、nonoに萌え要素とカリスマ性を持たせるにはどうすればよいか。 簡単である。 nonoのマスコットキャラクターを用意すればいい。 だが、問題が1つある。nonoの作者は萌え要素やカリスマ性をよく理解していない。 誰かnonoの萌えるカリスママスコットキャラクターをデザインしてくれないだろうか。 それがあれば、間違いなくトップになるはずだ。

ちなみに、ののちゃんはちょっと無理っぽい気がしている。 (著作権の問題もあるけど、多分、カリスマ性や萌え要素とあまり縁が無さそうな感じがする。)

 [Ruby] nono 0.1.6

マスコットキャラクターはつきませんが、nono 0.1.6を公開します。 nono 0.1.5は、作者の都合により非公開バージョンになってます。 公開バージョンは、0.1.5を飛ばして、0.1.4から0.1.6になります。

 [Linux][VMware] VMware 5.5.1

Linuxのkernel をアップデートしたついでにVMWareもアップデート。

tar zxvf VMware-workstation-5.5.1-19175.tar.gz
cd vmware-distrib
./vmware-install.pl

あとは質問に答えていけば良い。

 Amazonギフト券

有効期限が1月31日と迫ってきている。ギフト券の金額は250円。 勿体ない気もするが、使おうと思ったら、ある程度の出費を覚悟する必要がある。 どうしたもんだか。

 『いつもの道、ちがう角』 (松尾由美)

「奇妙な味」の短篇集。読者を置いてきぼりにして放り出してしまうような作品が並ぶ。


1月03日(火)

 掲示板の廃止

ここしばらく、まともな書き込みが無い(まともでない書き込みしかない)ので、掲示板を停止しました。

 [Soft] Wine 0.9.4

インストールしてみた。

tar zxvf wine-0.9.4.tar.bz2
cd wine-0.9.4
./tools/wineinstall

ですんなりインストールできた。

 [Soft] Mingw32クロスコンパイル環境 on Linux

Mingw のサイトで gcc 3.4.4が公開されていたので、クロスコンパイル環境を作った。

ダウンロードしたものは次の通り。

binutils-2.16.91-20050827-1-src.tar.gz
gcc-core-3.4.4-20050522-1-src.tar.gz
gcc-g++-3.4.4-20050522-1-src.tar.gz
mingw-runtime-3.8.tar.gz
w32api-3.5.tar.gz

基本的には、前と変わらないやり方。別に未練もないので、念のため古い mingw32 はばっさり削除して作り直すことにした。

rm -rf /usr/local/mingw32
mkdir -p /usr/local/mingw32/i386-mingw32
tar zxvf w32api-3.5.tar.gz {lib,include} 
tar zxvf mingw-runtime-3.8.tar.gz {lib,include}
mv lib /usr/local/mingw32/i386-mingw32
mv include /usr/local/mingw32/i386-mingw32

tar zxvf binutils-2.16.91-20050827-1-src.tar.gz
cd binutils-2.16.91-20050827-1
CFLAGS=-Os ./configure --prefix=/usr/local/mingw32 --target=i386-mingw32 --disable-nls 
make && make install

tar zxvf gcc-core-3.4.4-20050522-1-src.tar.gz
tar zxvf gcc-g++-3.4.4-20050522-1-src.tar.gz
cd gcc-3.4.4-20050522-1
CFLAGS=-Os ./configure --prefix=/usr/local/mingw32  --disable-nls \
--enable-sjlj-exceptions --target=i386-mingw32
make && make install

 [Ruby] Ruby 1.8.4 mingw版を Linux で作る

クロスコンパイル環境ができたので、Rubyをコンパイル。 (その前に、Linux環境のRubyをインストールしておく必要があります。) --prefixで、WineのCドライブのusr/localを指定しておく。

CFLAGS=-Os ./configure --prefix=/home/suke/.wine/drive_c/usr/local \
--host=i386-mingw32 --build=i686-pc-linux --target=i386-mingw32
make
make install

無事、インストールまで終了。早速実行。

$ wine c:/usr/local/bin/ruby -v -e 'puts "Hello World"'
ruby 1.8.4 (2006-01-01) [i386-mingw32]
Hello World

試しに、Win32OLEも使ってみる。

$ wine c:/usr/local/bin/ruby -rwin32ole -e 'puts WIN32OLE_TYPE.typelibs'
OLE Automation
OLE Automation

なんかわからんけど、動いているみたい。

 [Ruby] VisualuRuby on Wine

i386-mingw32-gcc にPATHを通しておいてから

lha x vrswin050923.lzh
cd swin
ruby -I /home/suke/.wine/drive_c/usr/local/lib/ruby/1.8/i386-mingw32/ \
-I /home/suke/.wine/drive_c/usr/local/lib/ruby/1.8 extconf.rb

ここで

$ ruby -v
ruby 1.8.4 (2006-01-01) [i686-linux]

あとは

make
make install

今度はvrubyの方。

lha x vruby050923.lzh
wine c:/usr/local/bin/ruby vrinstall.rb
vrinstall.rb:294: No space left on device - vrinstall.rb (Errno::ENOSPC)

うーむ。

とりあえず、mfc42.dll と msvcrt.dllをダウンロードして、 ~/.wine/drive_c/windows/system にコピーして winecfgでネイティブなものを優先するように設定して再挑戦したらインストールできた。 (ところで、mfc42.dllとmsvcrt.dllをこんな風に使ったら、ライセンス上問題あるんだろうか?)

ちゃんと VisualuRubyが使えるかどうかwnonoで実験。

wine c:/usr/local/bin/ruby wnono.rb

wnonoがLinux上で動いた。 (gnonoとか fnonoとかtnonoは、Linux上で動くので、無理にwnonoを動かす必要は無いのだが。)


[トップページへ] [12月] [2月] [過去の雑感へ]