Gmailの.と+
Ref: http://blog.livedoor.jp/lalha/archives/50158699.html
私の Gmail アカウントは kazutoshi.ono@gmail.com なのだが、次のようなアドレスにメールを送っても、私のところにメールが届く。
* kazutoshiono@gmail.com (ドットなし)
* kazu.toshi.ono@gmail.com (ドットを増やす)
* k.a...zu.to..shi.ono@gmail.com (ドットをさらに増やす)
* kazutoshi.ono+hoge@gmail.com (プラスマークを使う)
* kazutoshiono+hoge@gmail.com (ドットとプラスの併せ技)
これらの宛先に送られたメールがすべて私のところに届くのは、Gmail が次のような仕様になっているからだ。
* .(ドット/ピリオド)は無視される
* +(プラス) から @ までは無視されるこれで、はてなのサブアカをいくらでも作れる!
今日のはまり
こんなスクリプトがあったとして。
== hoge.vim == let hoge = 'hoge' == test.vim == function! Hoge1() so hoge.vim echo hoge endfunction function! Hoge2() so hoge.vim echo g:hoge endfunction == command line == :echo hoge >hoge :call Hoge2() >hoge :call Hoge1() >E121: 未定義の変数です: hoge
ここで:call Hoge1()でエラーになる理由が分からなかったのだが。
しかし、よく考えてみると、関数内ではg:を付けないとローカル変数との
区別がつかないことに気づく。
コマンドラインの場合はスコープが省略されたら暗黙的にグローバルとしているだけなのね。
埋め込みrubyスクリプトからソケットが使用できない件
こんなん出ましたけど。
コード
require 'net/https'
Net::HTTP.version_1_2
:
class HogeBlog
:
def update
if @proxy.empty?
https = Net::HTTP.new(@it_tec_url, 443)
else
https = Net::HTTP.new(@it_tec_url, 443, @proxy, @proxy_port)
end
https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_NONE
req = Net::HTTP::Post.new(@blog_result)
req.basic_auth(@username, @password)
https.start {|w|
w.request(req, convert_data(@data))
}
end
:
end
blog = HogeBlog.new
:
blog.update
エラーメッセージ
SocketError getaddrinfo: non-recoverable failure in name resolution.
同じコードを普通にruby.exeで実行したらエラーにならなかったけど・・・
なにやら深遠な問題のようである。
たぶんWS2_32.dllがなんかおかしい。
windows + vc8 で opensslをコンパイル
openssl.rbにこんなコードが。
require 'openssl.so'
うち、Windowsなんですけど・・・。
rubyをvc8で手動コンパイル/インストールしたせいかな。
ここを見つつ、opensslを再コンパイルしてみる。
url:http://jp.rubyist.net/magazine/?0007-buildrubywin
ここから、BinariesとDeveloper filesをダウンロード。
url:http://gnuwin32.sourceforge.net/
解凍して、lib以下をext/openssl以下に、inlucde以下を/ext/openssl/opensslにコピーする。
で、ext/openssl以下で、ruby extconf.rbを実行。
ようやくMakefileが作成された。
で、make。
>nmake ... ライブラリ openssl-i386-mswin32_80.lib とオブジェクト openssl-i386-mswin32_80.exp を作成中 mt -nologo -manifest openssl.so.manifest -outputresource:openssl.so;2
これで、openssl.soが作成された。
Windowsなのに.soなファイルを使用するのがなんでか分からないけど。(クロスコンパイルってやつか?後で調べる)
>nmake install ... Microsoft(R) Program Maintenance Utility Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. install -c -p -m 0755 openssl.so c:\ruby\lib\ruby\site_ruby\1.8\i386-msvcr80 install -c -p -m 0644 .\lib\net\ftptls.rb c:\ruby\lib\ruby\site_ruby\1.8\net install -c -p -m 0644 .\lib\net\telnets.rb c:\ruby\lib\ruby\site_ruby\1.8\net install -c -p -m 0644 .\lib\openssl\bn.rb c:\ruby\lib\ruby\site_ruby\1.8\openssl install -c -p -m 0644 .\lib\openssl\buffering.rb c:\ruby\lib\ruby\site_ruby\1.8\openssl install -c -p -m 0644 .\lib\openssl\cipher.rb c:\ruby\lib\ruby\site_ruby\1.8\openssl install -c -p -m 0644 .\lib\openssl\digest.rb c:\ruby\lib\ruby\site_ruby\1.8\openssl install -c -p -m 0644 .\lib\openssl\ssl.rb c:\ruby\lib\ruby\site_ruby\1.8\openssl install -c -p -m 0644 .\lib\openssl\x509.rb c:\ruby\lib\ruby\site_ruby\1.8\openssl install -c -p -m 0644 .\lib\openssl.rb c:\ruby\lib\ruby\site_ruby\1.8
rubyでhaskell風に書くためのライブラリPrelude
まだまだ開発中のようだ。
url:http://prelude.rubyforge.org/
最高到達レベル 57(Model D6: Basic)
Model D1-6の曲がおもしろむずい。
しばらくはまるかも。