|
setup diary |
\documentclass{jarticle} \usepackage{beng} \begin{document} {\bn rUpaa} \end{document}のような感じで書くと、রূপাと表示されるようになる。しかし、ベンガル文字は母音が多いので、どのように打つとどうなるかはよく分からない。bangTeXを使って、文字の対応表を作ればよいのかもしれない。
GET /file HTTP/1.0を送って、ソケットから全部readすれば良いので簡単であるが、HTTP1.1の場合には、keep-aliveするので、content-lengthの部分を見て、必要なサイズを読み込まなければならないので、処理が少し煩雑になる。 とりあえずは簡単なpageにはアクセスできるようにはなったが、HTTPのすべてを組み込むのは大変なので、徐々に機能を増やしていこう。一時期rubyでブラウザを書くのがはやっていたが、難しそうだな。
h={} h[1][2]=3 p hとすると、h[1]がnilなのに[]=というmethodを呼び出すので、エラーになる。そこで、次のようにすれば問題ないだろうと思って実行してみたが、うまくいかない。
h=Hash.new({}) h[1][2]=3 p hここでは、h[1]はすでにdefault値の{}になっているので、エラーは起きないが、hを表示すると{}となる。これは、バグなのかどうかは微妙なところだが、不思議な挙動な気がする。しかたがないので、冗長にはなるが、次のように書いたら当然だがうまく動いた。
h={} h[1]={} unless h[1] h[1][2]=3 p hなんだか少し納得がいかない。
新しいInspiron Mini 10は、アメリカでは1/5にはすでに発売されていたが、それが日本では1/21か。もとのmini 10と名称は一緒だが、デザイン等、いろいろな点が変わっている。VGAもついたし。ちなみに型番は、旧型が1010で新型は1012のようだ。dellのサイトにはまだ分解の仕方などは載っていないが、いずれは出ると期待したい。
しかし、6セルバッテリーで1.39kgと重くなっている。3セルだと1.24kgらしいが、まだ日本では発売されていないようだし、それでも10vや旧10よりも若干重くなっている。
いずれにせよ、まだ全くカスタマイズできないし、ubuntu版が出るまで待たないといけないな。
keep-aliveを要求しても、サーバー側でcloseされてしまうことがある。これに気がつくのに随分時間がかかってしまった。ヘッダーを見て、content-lengthが指定してあれば、その長さだけ読んで、connection: closeだったら全部読むというようにすれば、うまく読めた。
transfer-encoding: chunkedとあったら、受け取り方を変えなければならない。一行目に16進数でバイト数があり、それだけのバイト数を読んで、一行改行を読む。さらにこれを繰り替えして、最後はバイト数の指定が0となるまで読む。最後に空行が来るまで読んで終わり。今のところ、ヘッダーのtransfer-encodingとcontent-lengthとconnectionを見て、読み方を変えている。まだ別の読み方があったりするかも。
/[^-_.!~*'()a-zA-Z\d;\/?:@&=+$,\[\]]/nとなる。これだと"["や"]"はencodeされないことになるが、encodeするべきのようだ。uri/common.rbを覗いてみると、次のように定義されている。
ALPHA = "a-zA-Z" ALNUM = "#{ALPHA}\\d" UNRESERVED = "-_.!~*'()#{ALNUM}" RESERVED = ";/?:@&=+$,\\[\\]" UNSAFE = Regexp.new("[^#{PATTERN::UNRESERVED}#{PATTERN::RESERVED}]", false, 'N').freezeRESERVEDとUNRESERVEDの意味は分からないけど、
UNSAFE = Regexp.new("[^#{PATTERN::UNRESERVED}]", false, 'N').freezeが正しい気がする。urlencodeもいろいろな種類があるのかも知れないけど。