「初めてのRuby」の復習をexpectationsで(オブジェクトとクラス)

# -*- coding: utf-8 -*- require "rubygems" require "expectations" #8章 オブジェクトとクラス Expectations do #加算メソッドの上書き expect 3 do class Fixnum alias original_add + def +(rhs); original_add(rhs).succ; end end 1 + 1 end #上書きの…

「初めてのRuby」の復習(入出力)

入出力はexpectationsに書き下すのが面倒そうなので普通に例文を写経。ユニットテストだと、こういう外部リソースとのアクセスが絡むとどう扱うか悩みます。DBアクセス(接続確立〜データ取得)、ファイル情報取得、ログ出力、認証付のWebアクセス・・・セオリ…

「初めてのRuby」の復習をexpectationsで(配列とハッシュ・文字列)

「初めてのRuby」を読みました。 特異メソッド・特異クラス周りについては馴染みきっていない印象です・・・知らなかったときよりは理解が深まりましたが。 その他、Rubyでの書き方や細かな動きの部分で知らないことが多く、ためになりました。 この「初めて…

Rubyテスティングフレームワーク・expectations

http://expectations.rubyforge.org/files/README.html http://d.hatena.ne.jp/keyword/expectations (via http://d.hatena.ne.jp/rubikitch/20080508/ruby187)Rubyのテスティングフレームワークであるexpectationsを動かしてみたのでメモ。 このテスティン…

クォートと準クォート、マクロ

「プログラミングGauche」を読んでます。 リストへのクォート リストはクォートされていれば「リストデータ」、クォートされていなければ「プログラム」として解釈される。 gosh> (+ 1 2 (+ 1 2)) 6 gosh> '(+ 1 2 (+ 1 2)) (+ 1 2 (+ 1 2)) リストをクォー…

cut

「プログラミングGauche」を読んでます。ちょっと前まで「ANSI Common Lisp」を読んでいたような…? なんとなくlisp周りの本あっちゃこっちゃと読み散らかしていて我がことながら少し呆れます。それで、cutを知りました。 gosh> ((cut <> 4 4) +) 8 こんな感…

Emacs再入門

入門 GNU Emacs 第3版作者: Debra Cameron,James Elliott,Marc Loy,Eric Raymond,Bill Rosenblatt,宮下尚,半田剣一,新井貴之,鈴木和也出版社/メーカー: オライリー・ジャパン発売日: 2007/03/12メディア: 大型本購入: 14人 クリック: 331回この商品を含むブ…

JavaScript 第5版

GWは、「JavaScript 第5版」を買って読んだのでした。 最初、JavaScriptのリファレンスを買うつもりだったのだけれど、横に並んでいたこちらを買ったのは、もう少し突っ込んでJavaScriptの挙動が書いてある本が読みたいなと思ったから。 というのも、今まで…

しかくとまる

特にひねりもなく写経。firefoxで表示を確認。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>qnzm.test</title> </haed> <body> <div id="divc"> </div></body>

プロダクトへの愛

そのスティーブとたまたま「マイクロソフトとアップルのどこが違うか」という話題になった時に、彼が言った言葉が今でも心に残っている。 「マイクロソフトのプロダクツにはソウル(魂)が無い」 この言葉には本当にまいってしまった。 Life is beautiful: …

暗号と認証のキーワードを説明してみる

正確な定義はwikipediaを見てもらうとして… 共通鍵暗号 送信者と受信者が同じ鍵を使う。 DES、TripleDES、AES等がある。 送信者と受信者の間では暗号化された情報がやりとりされるため、データを奪われても情報は漏れない。 互いに同じ鍵を使う必要があるが…

暗号・認証

暗号と認証についての理解があやふやだったので、少しメモしておこうと思います。 暗号 対称暗号(共通鍵暗号) 暗号化・復号化に共通の鍵を用いる暗号方式。 送信者と受信者で同じ鍵を共有しないといけない。(鍵配送問題) 共通鍵暗号 - Wikipedia DES Data En…

Meadowセットアップ

自分用メモとして。 Meadowの初期設定 http://www.meadowy.org/meadow/dists/ から本体を落としてきて展開。 (参考にしました:Meadow/Emacs memo: Meadow のインストール)展開後、以下環境変数をセットする。(パスは展開先にあわせて適宜調整) LANG=ja_JP.SJ…

ライト、ついてますか

とても面白い本でした。 厄介を問題として捉え、付き合っていく方法を綺麗に切り出していることが、特に印象深いです。 「問題は何か」「それは誰の問題か」と問いかけること。 自分にとっての問題と相手にとっての問題は違うということ。 問題はなくならな…

Two-Phase Termination(interrupt版) →失敗

javaにおけるThread#interruptのような「wait/sleep状態のスレッドを中断させるメソッド」というものが分からなかったので、その点を省略しています。 http://d.hatena.ne.jp/qnzm/20080209/1202524095 と言っていたのですが、単純に例外投げるようThread拡…

SSHをデフォルト設定で放置すると危ない

ssh

SSH設定周りを見直したので、メモしておきたいと思います。 SSHサーバのOSはCentOSです。 おおよそ、デフォルトのsshd_configに対してなんら対策を施していない場合、非常に多くの情報が既知である為、攻撃者はパスワードを見つける事だけに専念する事でセキ…

ActiveObject

マルチスレッドパターン本のトリは、ActiveObjectパターンでした。 ActiveObject…能動的オブジェクトは、「外部から受け取った非同期メッセージを、自分固有のスレッドで、自分が都合のいいタイミングで処理する」というものです。 他のパターンに比べてクラ…

Thread Specific Storage

マルチスレッドパターン続き、今回はThread Specific Storage。 このパターンは、入口が1つでも内部ではスレッド固有の領域が用意されている、というパターンです。 サンプルではjava.lang.ThreadLocalを利用していますが、この点をHashで代用しました。 ま…

Two-Phase Termination

マルチスレッドパターン続き。 終了要求をうけ終了する前に、「終了状態」を挟むことによって安全性、生存性、応答性を確保しようというパターン。 今回はjavaのThread#interruptにあたるrubyのメソッドが見あたらなかったので、本とは少し異なったイメージ…

Future

マルチスレッドパターン続き、今回はFutureパターンです。 これは「戻り値の準備」と「戻り値の利用」を分けましょう、というものです。 メインスレッドは一旦プロキシを受け取っておいて、プロキシに対応する実際のデータは別スレッドで走って作りましょう…

呟き

"マルチスレッドパターン本をもとにrubyで書き直してみる"ということ自体はいいにしても、あまりにサンプルの置き換えそのままだと写経・複写に近くてちょっとまずいなあと思い始めました… 次回(があれば)ちょっと捻るようにしたい…

メソッドの起動(invocation)と実行(execution)の分離(Thread-Per-MessageとWorker Thread)

マルチスレッドパターンの続き。 今回はThread-Per-MessageとWorker ThreadをRubyで書いてみました。 この二つのパターンは、いずれも「メソッドの起動(invocation)と実行(execution)の分離」という点で共通していて、 使い捨て(Thread-Per-Message) 使い回…

Guarded Suspension

id:hyukiさんの本を片手に、マルチスレッドのパターンを見ていっています。 今はGuarded Suspension。 自分の状態が適切なときだけ、目的の処理をスレッドに実行させることについて書かれていて、「じゃあrubyで書いてみよう」と思ったら、rubyにはQueueとい…

あけましておめでとうございます

日付的に2月になってしまってますが… 色々なことがあって更新放置気味でしたが、またポツポツとブログしていきたいと思います。

お絵かき機能はプログラマをブログしやすくする

説明のときにホワイトボードが使いたくなるように、ブログでも簡単な図で説明したい!ということがあります。 これまでのブログなら、ローカルにてパワーポイントか何かで図を作成してアップして…と煩わしいものでしたが、こと「はてなダイアリー」に関して…

PowerShellのスーパーPre記法って…

ひょっとしてシンタックス・ハイライトない…???ソースコードを色付けして記述する(シンタックス・ハイライト) - はてなダイアリーのヘルプ

PowerShellをはじめるにあたり

いまさらですが、PowerShellを使い始めました。 前に買ったまま積読になってた「PowerShellインアクション」を読み始めたのが直接の契機です。 使おうと思っている理由はいくつかあるのですが…漠然と「Windows VistaのUIを使いたくない」「なるべくVisual St…

ActionScript3.0開発環境を整える(Windows、Flex Builder抜き)

WEB+DB PRESS Vol.41 特集を読んで、ActionScript3.0を試してみようと思いました。 まずは足場作りから。 手元の環境はWindows。 Flex Builderはお金がかかるので無し→meadow。 そんな方向で準備をしました。 環境準備 meadow 元々入っていたので割愛。 JAVA…

Remember The Milkのタスクリストをコンソール表示するRubyスクリプト

mechanizeを試すために、Remember The Milkにログオンしてタスクリストをとってくるスクリプトを書いてみました。 require 'rubygems' require 'mechanize' require 'kconv' agent = WWW::Mechanize.new agent.user_agent_alias = 'Mac Safari' page = agent…

commitのタイミングでGMail送信

$REPOS/hooks/post-commitに下のようなコマンドラインを追加、コミットのタイミングでメール送信を確認できました。 ruby /home/qnzm/script/svn-commit-gmail.rb \ --account=xxxxx@gmail.com \ --password=ppppp \ --svnlook=/usr/bin/svnlook \ --from=xx…