Webページが縦長で一画面に収まらないときはスクロールバーが表示されて、キーボードからは[Space]や[PageDown][PageUp][Home][End][↑][↓]キーで操作できるのは InternetExplorerでも Firefoxでも同じ。
じゃあ、その中にさらにスクロール領域があったら? CSSで overflow:scrollが指定してあったら?
IEでは内側のスクロールエリアの中にフォーカスがある場合、キーボードの入力は内側のスクロールバーに対する操作になる。Firefoxでは常に一番外側のスクロールバーが移動する。Firefoxではスクロール内スクロールをキーボードで操作できない。
サクラのWebメールは 1021×768では上下に収まりきらないので、メールを読もうとするとメール本文がスクロール内スクロールで表示されてしまう。Firefoxではキーボードでスクロールできない。マウスは使いたくない。マウスを使って、四角い矢印をクリックするのもバーをドラッグするのも、どちらも最初に小さい目標をポインティングする操作が必要で大層めんどくさい。
それとは別にサクラのWebメールってインターフェイスがイマイチだね。
全部の操作をボタンにして並べてしまったらいいのに。それとメール表示画面には「次のメール」「前のメール」といったナビゲーションが必要 (受信箱とのいったりきたりを減らすために)。
コンパイルができなくて以前挫折した SQLite。今回も sqlite3-rubyの DBD(database driver)のコンパイルはできなかった。でも sqlite3-rubyには DL(dynamic link?)を使った DBDも用意されてて、これを使うのにコンパイルは必要ない。依然として SQLite自体のコンパイルは必要だが。
以下、メモ。
http://www.sqlite.org/ の downloadから
sqlite-3.2.2.tar.gz (1385618 bytes) A tarball of the complete source tree for SQLite version 3.2.2 including all of the documentation.
と書かれてるものを。どうせなら新しいものをってことでバージョンナンバーが 3で始まる SQLite3をダウンロードする。
予め Linux用にコンパイルされた soファイルもダウンロードできるけど、これを使おうとすると 'libc.so.6' が見つからないとか言われるので横着せずにソースコードをもらってくる。(/usr/lib に libc.so.4はあるんだけど……)
ソースをディレクトリごとサーバーにアップする。READMEに、別にディレクトリを掘ってそこで作業するといいって書いてあるので buildというディレクトリを READMEのあるフォルダに作る。
ライトプランではシェルログインができないので telnetや SSHで
cd build ../configure
というわけにはいかない。困ったので buildフォルダに index.rbを置いて、実行可能にして、中身を下のようにして CGIの要領で実行した。
#!/usr/local/bin/ruby begin cmd = [ 'sh ../configure --enable-utf8', 'make' ]; print "Content-Type: text/plain\n\n"; cmd.each{|c| puts "% #{c}", `#{c}`, $?.inspect, ''; } rescue Exception => e puts e.message; puts e.backtrace.join("\n"); end
何も問題なく大量の *.oファイルと *.loファイルの他に sqlite3(コマンドラインツール)ファイルや .libs/sqlite.so.8などが作られた。.libs/libsqlite3.soという、FFFTPからは矢印付きのフォルダとして表示されるファイルもできてる。シンボリックリンクとかいうものか?
するとインストールが完了するわけだけど、どこにインストールするのかを多分 configureの時に指定しないといけなくて、それをしてないので成功しないかもしれない。そもそもインストールとかしてもいいの?レンタルサーバーに。
必要なファイルは既にできあがってるので結局、make install はせずに、libsqlite.so.8を libsqlite.soに改名して、SQLiteを使う Rubyスクリプトと同じフォルダにコピーして使ってる。
rubyforgeから sqlite3-rubyをダウンロードして展開する。SQLiteと似た感じで
ruby setup.rb config ruby setup.rb setup ruby setup.rb install
とするとコンパイルからインストールまで完了するのだけど、SQLite関連のファイルがインストールされてないので sqlite3.hが存在しないと言われてしまう。それに ruby.hだとか Ruby関連のファイルも必要そうだし、そんなの(/usr/includeとかに)見当たらないし、全部ローカルに用意するのも なんだかなぁ だから諦めた。
lib/ の中の sqlite3.rbと sqlite/* と sqlite/driver/dl/* を、libsqlite3.soと同じように(SQLiteを使うRubyスクリプトから)見えるところに置いておけばなんとかなる。
いや、なんとかならない。
require 'sqlite3' db = SQLite3::Database.new('hoge.db')
とすると libsqlite.soが見つからないといわれる。インストールしてないからだ。だもんで
require 'sqlite3' module ::SQLite3 SQLITE3_LIB_PATH = File::dirname( __FILE__ ) end db = SQLite3::Database.new('hoge.db')
として、カレントディレクトリにある libsqlite3.soを読み込ませてる。