トップ 最新 追記

Route 477



2005-12-05

[junk] 二日酔い対策

飲み会後に寒いところで寝たら二日酔いのうえに風邪引いた。

と、いうだけでは何なので、「二日酔いになってしまったらどうすれば良いか」について調べてみた。

抜本的な対策はない
アルコールが抜けるまで待つしかない(ただし、それを早めることはできる)。
飲食物
グレープフルーツジュース、卵焼きなどが良いらしい
ツボ指圧
このページを参照。ツボとか正直あんまり信じてなかったんだけど、本当に効いた。手のやつは特に簡単に出来るのでおすすめ。*1

とりあえずスクランブルエッグ作って食べてみた。

*1 ただし、押さえるのを止めるとまた気持ち悪くなるのだが(^^;

本日のツッコミ(全1件) [ツッコミを入れる]

まゆ [ウコン効かなかった。]


2005-12-09

[javascript] Ruby.js

(via 最速インターフェース研究会)

javascript上に、「Ruby風」のメソッドを実装するスクリプト。

使用例より:

[1, 2, 3].each(function(item) {
   alert(item * 2)
})

each! eachが!

[1, 2, 3].map(function(item) {
  return(item * 2) //returnが省略できないことに注意
}).each(alert)     //関数を直接渡すこともできる

functionをdoに置き換えたらRubyと見間違えそう。

スクリプト本体はこちら:ruby-talk:117184

[scheme] 2次元リストの転置

((1 2 3)
 (4 5 6)
 (7 8 9))

を、

((1 4 7)
 (2 5 8)
 (3 6 9))

とするにはどうすれば良いか。

あーなんかHaskellでzipWithとか使うの見た覚えがあるなーどこだったっけなーと思っていたら、 こんな書き方を発見

(define (transpose lst)
  (apply map list lst))

Rubyのmapが念頭にあったので*1、 これでどうやって転置できるんだ!? と思ったら、複数のリストを与えた場合は 特別な動作 *2 をするんだった。なーんだ(笑)。

*1 Rubyでは [1,2,3].map{|i|...} のような呼び出し方をするので、複数のリストを'mapする'という概念はない

*2 例えば (map cons '(a b c) '(d e f)) とすると ((a . d) (b . e) (c . f)) を得る


2005-12-12

[kmc] 第一回KPPC

日曜に、oxy君tic先輩主催の 部内向けプログラミングコンテストがあって、久しぶりにC(++)のコードを書いた。 STLとかまともに触ったことがないので、良い勉強になったかも。

とりあえず、「for(...」と書こうとして「(for」と括弧を先に打ってしまう自分に危機感を感じた(笑)。

他にも0が偽になることが新鮮に感じたり、「変数の初期化忘れで謎の値が表示される」っていうバグはとてもCらしいなぁ、と思ったり。


2005-12-13

[softs] Screenをはじめよう

後輩に説明するために、GNU Screenのイントロダクションを書いてみた。まだ書きかけだけど。

ずっと前にも同じような文書を書こうとした形跡があるけど、結局必要に迫られないと完成しないっぽい。


2005-12-16

[hiki] サーバによってログインできなくなる件

http://xxxxxxxx.com/w/ というアドレスにhiki(0.8.4)を設置したら、管理者でログインできなくなった。 どうやら、ブラウザ側がcookieを受け取ってくれない模様。

ドットの数によってcookieが拒否されるとかいう 仕様もあったりするみたいだけど、hikiが送信するcookieはdomainは設定していないようなので、これではないよなぁ。

不可解なのは、w3mでヘッダをダンプさせると

 yhara@cosmos:~/temp % w3m -dump_head 'http://xxxxxxxx.com/w/?c=login&p=FrontPage&name=admin&password=xxxxxx'
 Received cookie: session_id=f1170464443bc6ad
 HTTP/1.1 200 OK
 Date: Fri, 16 Dec 2005 20:06:12 GMT
 Server: Apache
 Set-Cookie: session_id=f1170464443bc6ad; path=/w/; expires=Fri, 16 Dec 2005 21:06:12 GMT
 Connection: close
 Content-Type: text/html

のようにちゃんとcookieを受け取ってくれるのだが、

w3m 'http://xxxxxxxxx.com/w/?c=login&p=FrontPage&name=admin&password=xxxxxx'

のようにアドレスを開くと受け取ってくれない(Received cookie: という表示が出ない)ということ。どうなってるんだ。

サーバの実体はxxxx.s153.xrea.comなのだが、XREAの設定の問題なのだろうか?

(12/17追記: http://www.xxxxxxxx.com/w/でもアクセスできるように設定してみたが、結果は同じだった。 ドメインのドットの数云々は関係ないようだ。)


2005-12-18

[hiki] ログインできない件 その2

(その1はこちら

「xrea hiki」でgoogle検索してみたら、ITSに既に登録されているのを発見。気づけよ俺!

が、ITSの方をよく読むと、0.8.4では何も設定しなくても動くはずのようだ。これはおかしい。

XREAのサポート掲示板をcookieで検索すると、こんな記事があった。

2002/06/22, 05:53 PM
raccy

色々調べてみました。
どうやら、フォルダにアクセスの場合はクッキーが発行されないようです。
domainもpathも明示して、発行しようとしてもダメでした。
(以下略)

試しにhikiconf.rbの

@cgi_name = 'hiki.cgi'

を有効にしてみると……ログインできた!

[hiki] ログインできない件 その3

簡単なCGIを作って検証してみた。

#!/usr/bin/env ruby
require 'cgi'

print <<EOH
Content-Type: text/html
Set-Cookie: #{CGI::Cookie.new('name'=>'time', 'value'=>Time.now.to_s)}

<html><body>#{CGI.escapeHTML CGI.new.inspect}</body></html>
EOH

これをa.cgiとし、ディレクトリ/test/以下に置く。.htaccessに、DirectoryIndex a.cgiのように書いておく。

http://xxxxxx.com/test/a.cgi にアクセスした場合はちゃんとcookieが貰えるが、 http://xxxxxx.com/test/ だと貰えなかった。

まとめとしては、XREAにHiki(0.8.4)を置く場合は、hikiconf.rbで@cgi_name = 'hiki.cgi' の行を有効にしておく ということで。

未だ分からないのは、

  • なぜw3mでオプション-dump_headを付けた場合だけcookieが貰えるのか
  • そもそも、apacheでどんな設定をすればこんなことが起きるのか(^^;

という辺りか。

[hiki] ログインできない件 その4

「なぜw3mでオプション-dump_headを付けた場合だけcookieが貰えるのか」の答えがひらめいた。HEADリクエストだからだろう。

実際に、Net::HTTPを使ってHEAD、GET、POSTリクエストを試してみる。

yhara@cosmos:~ % ruby -rnet/http -e'Net::HTTP.start("xxxxxxx.com"){|http| http.head("/test/").each{|k,v| puts "#{k}: #{v}"}}'
connection: close
content-type: text/html
date: Sun, 18 Dec 2005 06:48:04 GMT
server: Apache
set-cookie: time=Sun+Dec+18+15%3A48%3A04+JST+2005; path=/test/
yhara@cosmos:~ % ruby -rnet/http -e'Net::HTTP.start("xxxxxxx.com"){|http| http.get("/test/").each{|k,v| puts "#{k}: #{v}"}}'

cache-control: no-cache
connection: close
content-type: text/html
x-powered-by: ModLayout/3.2.1
date: Sun, 18 Dec 2005 06:48:13 GMT
server: Apache
transfer-encoding: chunked
yhara@cosmos:~ % ruby -rnet/http -e'Net::HTTP.start("xxxxxxx.com"){|http| http.post("/test/","").each{|k,v| puts "#{k}: #{v}"}}'

cache-control: no-cache
connection: close
content-type: text/html
x-powered-by: ModLayout/3.2.1
date: Sun, 18 Dec 2005 06:48:25 GMT
server: Apache
transfer-encoding: chunked

HEADのときはヘッダにset-cookieが含まれているが、GET、POSTではそれがない。

同時に、「apacheでどんな設定をすればこんなことが起きるのか」の方もヒントが得られた。 GET、POSTの場合だけmod-layoutが使用されるようだ。

XREAのサポート掲示板をmodlayoutで検索すると、こんな記事が見つかった

2005/02/21, 02:28 PM
webmaster

広告の自動挿入、ModLayout関連のでのエラーは既知の問題となっています。
特にヘッダーを操作、上書きする処理にエラーが発生します。クッキー、Location等で期待しないエラーが発生します。
このような場合は、手動で挿入してください。

残念ながら、現在のところ、ModLayout関連のエラーは修正予定はありません。
別の広告配信システムを1年以上前から用意していますが、変更いたしますと、ModLayout関連のコマンドが使えなくなるため、保留しています。

CGIのパス名を省略しなければうまく動くので、「ModLayoutとDirectoryIndexを同時に使用した際の問題」だと思うが、 これ以上の深追いは止めることにした。修正予定がないんじゃしょうがないしなぁ。

[hiki] ログインできない件 その5

いまITSを見直したら、もう一件報告があったことに気づいた。(おーい)

Ticket-7では解決したはずの問題が「なぜ再発したのか?」という点が気になっていたのだが、 どうやらhiki0.8.0から0.8.4の間にスクリプト名を省略するのが デフォルトになった のが原因のようだ。

とりあえず、Ticket-29の方に報告しておいた。 (ついでにこの前見つけたバグも報告しておいた。)


2005-12-25

[web] TypeKey

なんとなくTypeKeyのアカウントを取得してみた。

 TypeKeyは無料のオンライン認証サービスです。
  一度ログインするだけで、お気に入りのウェブサイトで次のことができます。
     * あなたのコメントが、ご自身からのものであることをオンライン認証できます。
     * あなたのコメントであることを確認できます。
     * 何千ものサイトで使える認証サービスです。
     * 無料で素早く簡単に登録できます。
     * 続きを読む(英文)

Hikiからも設定しだいで使えるらしい。