RubyのHash式の { } は省略もできるけど完全に同一ではない

まぁ当たり前の話なんですけど。

Ruby の Hash は

{
  key1 => val1,
  key2 => val2,
  ...
}

と書くのだけれど、メソッドの最後の引数にする場合にはこの { } を省略することができる。つまり

method( { key1 => val1, key2 => val2 } )

これを

method( key1 => val1, key2 => val2 )

のように書けるということ。実際には ( ) も省略できるので

method key1 => val1, key2 => val2

こうでもよい。これがよく Rails で使われている記法で、メソッド呼び出しのように見えず、何かの宣言を書いているように見える。これだけでも今までのプログラムの書き方と違う感じがする1

しかしこの { } の省略をすると末尾の , を余計に付けることができない。当たり前といえば当たり前なんだけど、

method key1 => val1,
       key2 => val2,

と書いてしまうと val2 で値が終わったことが分からずに syntax error になってしまう。

{ } をちゃんと書いているときについ末尾の , を残す書き方をしているとハマる。Hash定義が何行にも渡るものを書いていて、かつまだ変更の可能性があるときに , を付けて書くクセがあったのでハマってしまった。

  1. 個人的にはあまりこの書き方ばかり押すのは好きじゃないんだけど 

OpenSSH にできること(の一部)ヒストリ

全面的に OpenSSH情報 頼みです! 5.0 から 3.9 までのリリースノート中の変更点の和訳からつまみ食いしました。

自分の興味ないところ、分からないところはスルーしてしまいました。

5.0

bug fix のみ

4.9

  • chroot対応
    • shell session が必要な場合は従来の方法通り /dev の設定とか必要
    • chroot するディレクトリは root 所有で permission を緩めちゃダメ
  • internal-sftp が実装され1、これを chroot と組み合わせて使う場合、chroot ディレクトリ以下に特別なセットアップが必要なくなる
    • scponly, rssh を使う面倒から解放される!(?)
  • no-user-rc キーワード2が authorized_keys 内で使えるように
  • PermitRootLogin で Match ブロックを利用できるようになり、例えばローカルネットワークからのみ root 接続許可という形が実現可能に
  • ProxyCommands が $SHELL を優先して実行するように

4.8

OpenBSD のみのリリース。

4.7

  • デフォルトの接続受付 protocol を 2 のみに(これまでは 1, 2 両方)
  • scp で表示できないファイル名をエンコードして "protocol error" によるコピー中断を防ぐようになった
  • LocalCommand うにゃうにゃ
    • ごめんなさい、よく分かりませんorz

4.6

  • Match ブロックを利用してユーザー、グループ、ホスト、ネットワークごとに認証方法の有効/無効を設定できるようになった

4.5

bug fix のみ

4.4

  • sshd_config の Match の追加
    • Match にどの設定が対応するのかはバージョンによって異なるらしい
  • sshd_config に ForceCommand 追加。これは authorized_keys の command="" と同等
  • sshd_config に PermitOpen 追加。転送できる port を制限できるようになった。
  • sftp-server がトランザクションログを取れるように
  • ExitOnForwardFailure で指定のポートフォワード接続が失敗したときに終了する設定が可能に(クライアント側の設定)
  • SubSystem がコマンドライン引き数を指定できるように
  • SELinux サポートが configure 時の –with-selinux オプションとして追加された
  • Solaris の proccess contracts サポートが configure 時の –with-solaris-contracs オプションとして追加された
  • configure 時の –with-ssl-engine オプションで OpenSSL のハードウェアアクセラレーションサポートが追加された

4.3

bug fix のみ

4.2

  • Compression delayed の追加。
    • これはユーザーが認証を通るまでzlib圧縮の開始を遅らせることで zlib の脆弱性を突く攻撃を防ぐためのもの。
    • OpenSSH 3.5 より古いバージョンのクライアントと組み合わせて使うにはクライアント側で Compression no にするかサーバ側で Compression yes にする必要がある。
  • 接続の多重化周りであれこれ書いてあるんだけど自分が理解できてませんorz

4.1

bug fix のみ

4.0

  • LocalForward, RemoteForward の書式拡張、GatewayPorts の設定項目拡張によりポートフォワードするアドレスの制限などができるように
  • sshd でのアカウント期限のサポートが改善され、警告されるように
  • allow, deny で拒否した接続元をログに残すように
  • AddressFamily の追加
  • sftp クライアントで ls コマンドの最適化や libedit による編集の強化
  • ssh 接続の多重化の改善

3.9

  • IdentitiesOnly の追加
    • ssh-agent よりも ssh_config で指定された鍵を優先して使うべきか否かの指定
  • ssh_config を厳しくチェック
  • AcceptEnv, SendEnv の追加
  • MaxAuthTries 追加
    • ※ 同一ユーザーの認証の try に対する制限
  • セッションの多重化 ( ControlMaster, ControlPath )

端折りまくって

3.7

  • dynamic forward に SOCKS5 サポートが追加された

なんでこんなもん作ったかと言うと

OpenSSH ってすっげー便利で、おかげで最近の大半の Linux じゃ標準で入ってるんだけど、おかげでいつまでも古いバージョン使わされるハメになることがよくある。

つまり、あーそういえば ssh ってこんなことできなかったっけ? と思うんだけどサーバ側が古くて使えないという状況が往々にしてあるよね、ということでどのバージョンで何ができるようになったか一覧がほしいなと思ったわけです。

これを見ると 4.5 以上が使えると結構便利だなーと思うんだけど、今使ってる sshd は自宅の FreeBSD 以外 4.3 が最新という状況…。うーんなんだかなんだかな。

  1. Subsystem で internal-sftp を指定する必要あり。 

  2. ~/.ssh/rc を無効にする 

で、ないわーって何?

わっかんね。

とりあえずまとめっぽいところへリンク。

2008-04-07 - 404 ないわー Not Found 3.0

様子を見ることに。

夜桜行ってきた

そういや兼六園が無料解放だったなぁと思って夜に行ってみた。

駐車場がめちゃ混みだった。日曜の夜ならそれなりにイケるかと思ったけど甘かった。もっと離れたところに停めるか、やっぱバスかのぉ。

肝心の桜は兼六園の中より実は広坂から兼六園下へ向かって行く途中がいちばんきれい。あと今まで気づかなかったけど瓢池のライトアップはすげーキレイだった。それなりの装備で写真を撮っている人もいたけど、やっぱデジカメだよね。

どうも今年は開花が早いと言われ過ぎたせいか、いつまで経ってもあんまり咲いて来ないなーという印象が強くなってしまった。あったかくなったり寒くなったりしている割に強い雨や風もないので、長く楽しめていいっちゃいいんだけど。

ちなみにまったく油断していたのでカメラを持って行くのを忘れてしまい、とりあえず携帯で撮ってみたけど何が何やら分からないものしか撮れなかったので写真はないです。何年か前の花見のときには先代のデジカメが本格的に壊れていることが発覚したり、どうも相性がよくないな。

しかしみんな携帯で写真撮ってるんだけど、アレって自分がやってみて思ったけど、結局みんなそれほど写真を撮りたいわけじゃないんだよね、たぶん。写真を撮る機能をついたモノをたまたま持ってるから撮ってるんだよね。だって全然まともに撮れないもの。

ついでに城内にも入ってみた。だだっ広くて寒々としていた。少ないけれど桜の咲きそろい方は兼六園よりきれいだった。沈床園の宴会は、音はそれなりに聞こえたけど人数的にはそんなでもなかった。

帰りしな、石川門の前で三脚立てたじーちゃんとすれちがった。やたらきれいなライカだった。

Bloglines のフォント設定…

誰もつっこんでくれないので気づかなかったが、オプションに文字サイズの設定あるやんけ。

でももう手遅れ。我が道を貫くことにした。

つかデフォルトの設定をもっと考えろ。ちくしょうっ…。

wiki-study ML で恥ずかしいことに

  • 登録のメールでは Cc は指示通りに書かないとだめ
    • 「こんな感じ」という適当な日本語に騙されてはいけない。
    • 2回も失敗したあげく、登録メールの Subject が「これでうまくいくかな?」だよ。なんだそれ。かっこ悪すぎる。
  • いきなり Wiki 記法が有効
    • qwikweb の常識なのかもしれないけど、すげーびびった。
    • 個人的にはメールは字下げして書いてるんでかなりおかしなことになってしまう。普通に整形したメールはもう送れないってことですな。

qwikweb の注意事項をもっと強調しといてほしい。qwikweb ってチョー便利なはずって信じてたけど、注意しないといけないなぁ。

ま、なんにしても登録できてよかったけど。

あれ。Web が反映されてずいぶん経つけどメールこないな。

Trac の文字化けが解消した日

svn propset だけじゃなくて svn commit しなきゃダメだったのねぇ〜。考えたらそりゃそうか。すでに諦めていたのにあるとき突然文字化けしなくなって

Property svn:mime-type set to text/plain;charset=Shift_JIS

って出てて、かなり目を疑ってしまった。ごめんよ Trac もう一週間ずっとぶーたれてたよ、お前に。でも間違いだったんだなぁ。気づけてよかったよ。

なんで気づいたのかっつーと、ソースの中から Wiki にリンク張れないかなと思って試していたから。それはさすがにできなかった。まぁそんなこと許したらうっかり CamelCase の名前使えんくなるもんな。リンクだらけになって鼻血出そうになるわな。

CutePDF Writer

ソースネクストの「いきなりPDF」を見て思い出した。

http://www.acrosoftware.com/Products/CutePDF/writer.asp

一連の CutePDF 製品の中で Writer だけ Free.

できあがる PDF がけっこうでかい。試しに出したものでは Distiller 10.5KB に対して CutePDF 47.7KB。これは画像のない文書なので文書量が増えたら増えただけでかくなりそうな雰囲気。軽い報告書程度ならまだしも、本当に PDF にしたいようなでかいモノにはちょっと使いにくいような。

あと、日本語フォントが画面だときれいに見えない。(Windows 2000 で実験。)これはたぶん OS X などの画面上のフォントの表示が改善されている環境では問題にならないが、大半の Windows ユーザーにとっては画面上で確認する PDF の生成には使えない気がする。アルファベットはきれい。

でも「いきなりPDF」よりはプラットフォームを選ばないのでこれは便利だと思う。ライトユーザーのうち「Word はイヤ」、「Word 持ってない」という人にはオススメできるのではないか。

あれこれいぢるのが好きな人間としては Ghostscript の方で圧縮オプションとか設定できると嬉しいかも。それでファイルサイズの問題が改善できればなおよし。残念ながら今回はそこまでツッこんでません。

ChocoWiki

PukiWiki とデータ互換な携帯、PDA 向け Wiki だそうで。ただし本家の PHP に対し、こちらは Perl スクリプト。まだまだ開発中。というか開発者募集中だそうです。

本家も 1.4 で一応携帯に対応し始めましたので、なんだかビミョーな感じがしますが。。。つーかまだ公開されてなかった(^^; ダウンロードしたい場合は直接連絡取ってくださいってことです。

CherryPy

http://www.freecherrypy.org/kafka

Python を使った HTTP サーバ + Python でアプリ組めます環境?

kinneko さんスラド日記:http://slashdot.jp/journal.pl?op=display&uid=277&id=118990経由。Zope ネタじゃないし、どこから情報が入っているのか知らないけど、template って面白そうだし、よさげな感じ。ただ、深町さんが嘆いている(?)ように自分は Zope には興味があるが Python にはないクチ。理由は明白で、Python を好きになる理由がないのです(^^; まぁいつか転ぶ可能性がないこともないかもしれへんかもしれへん、というところですか。考えたらイマドキのパワーのある言語で好きと言えるほど分かっている言語ってねーなぁ。

Zope もねぇ。最近は CMS な方向にどーんと行っちゃってる感じなわけですが、いわゆる CMS があまり好きになれない自分としてはどうしたもんかいな、って感じ。もっと原始的なコンテンツマネジメントがしたいだけなんだが。。。

CVS だけで片付くのではないかという気がしないでもない今日この頃。(実は ViewCVS も Python だったりするんだが。)せっかく Apache もアレコレ勉強したことだし、もっと素のシステムを活かしたいとか思うわけですが、そーゆーのは旧世代なんですかねぇ。こうして見比べると確かにそうですが。nightly の追っかけとかやんないし :-p(単に面倒なだけ)

BitTorrent

http://bitconjurer.org/BitTorrent/

なんかよく分からんが P2P らしい。Gnutella2 プロトコルも出ましたなぁ。情報がありすぎてついていけませんよ。

About

例によって個人のなんちゃらです