ちょっと調べる必要があって、ECMA-262を読む。 文字列リテラルは、シングルクォートまたは、ダブルクォートで囲む。
シングルクォートで囲まれた文字列にシングルクォートを含めるには、\を使う。 ダブルクォートはそのまま。
'シングルクォートの中の\'はバックスラッシュが必要で、"は不要。'
ダブルクォートで囲まれた文字列の場合は逆になる。
"ダブルクォートの中の\"はバックスラッシュが必要で、'は不要。"
色々考えると面倒なことになりそうである。 そんなときは、とりあえず、両方ともバックスラッシュをつけておけば良い。
'シングルクォートの中の\'も\"もOK。' "ダブルクォートの中の\'も\"もOK。"
22だったのか。てっきり20だと思い込んでいた。 (『すらすらと手が動くようになるSQL書き方ドリル』より)
8ヶ月ほったらかしだったSQL書き方ドリルを再開。
しばらくパソコンをさわらない(さわれない)生活をしていた。 今週ぐらいからボチボチ再開。
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()
フォントの高さを求めるには、Fox::FXFont#getFontHeigt (または、Fox::FXFont#fontHeight) を使えばいいようです。
多分。
nonoを広めるためにどうすればよいか? nonoに欠けているものは何か? 今回はGoogleの観点で考察してみる。
Googleでnonoと入力して検索すると3番目にnonoのページが見つかる(2006年1月21日現在)。 トップは、アニメに関連するサイトで2番目は某アイドルのサイトである。 ここから、おのずとnonoに欠けているものが見えてくる。 1位と2位のサイトにあって、nonoに欠けているもの。 そう。
nonoに欠けているものは、(アニメの)萌え要素と(アイドルの)カリスマ性である。
では、nonoに萌え要素とカリスマ性を持たせるにはどうすればよいか。 簡単である。 nonoのマスコットキャラクターを用意すればいい。 だが、問題が1つある。nonoの作者は萌え要素やカリスマ性をよく理解していない。 誰かnonoの萌えるカリスママスコットキャラクターをデザインしてくれないだろうか。 それがあれば、間違いなくトップになるはずだ。
ちなみに、ののちゃんはちょっと無理っぽい気がしている。 (著作権の問題もあるけど、多分、カリスマ性や萌え要素とあまり縁が無さそうな感じがする。)
マスコットキャラクターはつきませんが、nono 0.1.6を公開します。 nono 0.1.5は、作者の都合により非公開バージョンになってます。 公開バージョンは、0.1.5を飛ばして、0.1.4から0.1.6になります。
Linuxのkernel をアップデートしたついでにVMWareもアップデート。
tar zxvf VMware-workstation-5.5.1-19175.tar.gz cd vmware-distrib ./vmware-install.pl
あとは質問に答えていけば良い。
有効期限が1月31日と迫ってきている。ギフト券の金額は250円。 勿体ない気もするが、使おうと思ったら、ある程度の出費を覚悟する必要がある。 どうしたもんだか。
「奇妙な味」の短篇集。読者を置いてきぼりにして放り出してしまうような作品が並ぶ。
ここしばらく、まともな書き込みが無い(まともでない書き込みしかない)ので、掲示板を停止しました。
インストールしてみた。
tar zxvf wine-0.9.4.tar.bz2 cd wine-0.9.4 ./tools/wineinstall
ですんなりインストールできた。
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をコンパイル。 (その前に、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
なんかわからんけど、動いているみたい。
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を動かす必要は無いのだが。)