コンピュータやソフトウェアのあれこれ@道民(&元道民)
Archive for 5月, 2011
会社お休みしました。
5月 31st
会社お休みしました。
病院や役所に行ったり
父親が入院する事になったので、付き添いのため会社はお休みしました。 午前中からだったのですが、なんだか病院の対応というか事務の看護士 さんの間で連携がうまくとれていなくて、一回家に帰って書類書いたり などして余計な時間をとってしまった。 あとは医療事務の兄ちゃんがとても態度悪いというか愛想がない感じでちょっといらついてしまったよ。よく苦情がこないもんだ。
友人ハンバーガー屋の一週年
せっかくの記念日なので時間はあまりなかったのだけど、お昼を食べに行って少し祝ってきました。お祝いの品は自分が食べたくてしょうがなかったルタオの「ドゥーブルフロマージュ」を持っていったら、たいそう喜んでくれたのでよかったよかった。これからも陰ながら応援していこうと思います。
メタプログラミングRubyの写経 第3章 ブロック
5月 30th
メタプログラミングRubyの写経 第3章 ブロック
第3章 ブロック
呼び出し可能オブジェクトから続けました
コードを保管して、あとで呼び出す
- Proc オブジェクト
- 遅延評価
inc = Proc.new { |x| x + 1 }
# なんらかの処理
inc.call(2) # => 3
- ブロックをProcに変換 lambda(),proc()
dec = lambda { |x| x - 1 }
dec.class # => Proc
dec.call(2) # => 1
lambda(),proc(),Proc.new()は基本的に自分の好きな物を使えば いいと書いてある。僕は
Proc.new
がしっくりくるようです。
&修飾
yield を使ってブロックを実行するけどyieldでは足りない場面が二つ
- 他のメソッドにブロックを渡したいとき
- ブロックをProcに変換したいとき
- Proc をブロックに戻したいときにも使う
Proc 対 lambda
"Proc と lambda の違いは、おそらく Ruby でもっともややこしいところだろう"
との記述がありました。自分も普段ここらへんを避けがちなのもややこしくてよくわからん ということにとても納得。
"特別な場合がたくさんあるし、独断的で根拠のない区分もたくさんある。そんな流血現場にわざわざ立ち入る必要はない。しかし、大雑把でもいいから、違いを知っておく必要がある"
との記述がある。全くその通りだ...。この本に出会えたので最低限のことは理解したい。
"Proc と lambda には二つの違いがある。一つは、return キーワードに関する事。もう一つは、引数のチェックに関する事"
- Proc と lambda と return
lambda では、return は単に lambda から戻るだけ。Proc の return は Proc から戻るのではなく、Proc が定義されたスコープから戻る
def another_double
p = Proc.new { return 10 }
result = p.call
return result * 2 # unreachable code!
end
another_double # => 10
- Proc と lambda と arity(項数)
p = Proc.new {|a, b| [a, b]}
p.arity # => 2
lambda のほうが Proc よりも引数の扱いに厳しい。項数を間違えてlambdaを呼び出すとArguentErrorになる。Procは引数を期待値に合わせてくれる。
p = Proc.new {|a, b| [a, b]}
p.call(1,2,3) # => [1,2]
p.call(1) # => [1, nil]
- Proc 対 lambda:ジャッジメント
- lambda の方がメソッドに似ているので、Procよりも直感的
- 項数に厳しく、return を呼ぶと終了してくれる。
- Rubyist の多くはProc の機能が必要でない限り、lambdaを最初に選ぶよう
どうやら僕はlambdaに慣れたほうが良さそうだ。
DSL を書く
def event(name)
puts "ALERT: #{name}" if yield
end
Dir.glob('*events.rb').each {|file| load file }
event "an event that always happens" do
true
end
event "an event that never happens" do
false
end
true のだけ実行される
やっぱ複雑だのー。でも最後のDSLでの使い方は覚えておいて何かしらの機会に使いたい。
第22回北海道開発オフに参加した
5月 29th
成果はこちら。あまり大したことできてませんが、久しぶりにNokogiriを使ってスクレイピングしました。
ランチはSmall curry bar Cancunでスープカレー。僕はラムキーマカレーをオーダー、辛さは5番。ラムはやっぱ美味しいなぁ、辛さもちょうど良かったです。
次回の開発オフはきっちり事前に仕込みしておいて、本気出したいと思います!
第7回北海道情報セキュリティ勉強会を開催致しました
5月 28th
今回は株式会社LACの取締役である西本逸郎氏にお越し頂き、情報セキュリティの最新動向について様々な観点からお話頂きました。時節柄会議室がなかなか確保できず、月寒公民館という少し中心部から離れた場所での開催となりましたが、多数の皆様にご参加頂き、定員40名でほぼ満員となりました。
ご参加頂きました皆様、本当にありがとうございました!楽しんで頂けましたでしょうか?僕はすっごく楽しかったです!皆様が楽しい時間を過ごして頂けておりますと幸いです。
LACの西本さん、江尾さん、遠路はるばるお越し頂きありがとうございました。非常に楽しいお話(懇親会でも!)をお聞かせ頂き、楽しい時間を過ごさせて頂きました。また機会があれば是非北海道にお越し下さい!そして北海道を楽しんで頂けると嬉しいです!
また、今回は北陸ITPro勉強会へサテライト中継を行いました。多少機材トラブルなどがありバタバタしてしまいましたが、結果的にはまぁまぁ上手くいったと思います(まっちゃさん、お疲れ様でした!)。ディスカッションもせきゅぽろとしては初の試みでしたが、参加者の皆さんで結構盛り上がっておりました。こういうのって苦手な方もいらっしゃるとは思うのですが、結構楽しいと感じられた方も多かったようなので、機会があればまた試してみたいなぁと思います。
さて、恒例のお菓子。「お菓子に本気を出す勉強会・せきゅぽろ」、今回もガチです。@yamaki_pandaさんチョイス、ステラ☆マリスのケーキでございます!今回は4種類ご用意させて頂きました!
「さっぽろ・イチゴタルト」。
「チョコレイヤー」。
「ガトーフレーズ」と「かもシュー」。
懇親会も盛り上がり、講師・参加者含め親睦を深めて頂けたようで嬉しいです。
次回はオープンソースカンファレンス 2011 Hokkaidoにて、IAJapan セキュリティ研究部会様にご協力頂き、鵜飼 裕司氏より「セキュリティ分析」と題してお話頂きます。多数の皆様のご参加をお待ちしております。
今後とも北海道情報セキュリティ勉強会を宜しくお願い致します!
地下鉄乗り間違え
5月 28th
地下鉄乗り間違え
宮の沢行きに乗って24軒で降りる予定だったんだけど、 ふと地下鉄の中から停車している駅をみたら、東札幌だったw。 なんで間違えたかというと普段の大通駅のホームに行くときには 階段を降りると右側が宮の沢行きのホームなんですが、今日は別 の階段から降りてしまったのが原因でした。今日降りた階段は 右側が新札幌行きだったのです...。いやー、乗り間違えなんて いつ以来だろう(笑)。
最近はたくさんのことが一度に起る
5月 28th
最近はたくさんのことが一度に起る
今年に入ってからなんだけど代休やら有給をとると、自分のプロジェクトの問い合わせやら、急ぎの要件やら、障害報告などが一度に発生する。
ということで最近は他のメンバーでも対応できるように、delegate(委譲)促進活動に力を入れることにしています。
[TDD][Java] TDD Boot Camp 札幌 2.0 のお題
5月 28th
2ヶ月だって
5月 27th
社畜人生を歩み出して2ヶ月が経とうとしています。
こんにちは。ほっかいです。
近況としては、ようやくクソマンスリーマンションを出ることができ、
ちょうど引っ越しをしたところです。
詳しくは言わないけど配属も決まりました。
せっかくのいい節目だと思うので日記を書きます。
なんとなーくのゆるふわな時系列でこの2ヶ月を振り返ろうかな。
4月前半
今まで学校は歩きか自転車でしか通ったことがなかったので、
初の通勤を体験することになる。
満員電車&&全然来ない武蔵野線クオリティにやられる。
Asakusa.rbに参加させてもらい始めたのもここらへんからかな。
北海道にいたときのように、どんだけ自分がへっぽこでも
やっぱりOSSやRubyのコミュニティとは交流したいなぁとどこかで思っていたみたいで、
その結果としてのAsakusa.rbへの参加であったり、
大江戸Ruby会議01のレポート班をさせてもらったりということにつながりました。
自分でいいのかと思ってはいますが、本当にありがたいことです。
4月後半
会社と通勤に慣れるのに費やした時期ですた。
初任給は、実家やじいさんばあさんにお菓子等を送るのに使いました。
深川飯まじうめーって言ってくれました。うれしい。
5月前半
GWには兄が九州から遊びにきました。
気合入れて遊びすぎたせいで、GW後半は腹からくる風邪でダウン。
腹は下して痛いし、風邪で背中も痛いという両面からの攻撃でした。
同期とモツモツしようと計画立ててた上にとても残念だた。
GW明けにはちょっと暖かくなったり、
東西線の混みようが半端なくなったり、
そんなことが続いて、かるーく五月病にかかりました。
毎日朝早いし、スーツだし面倒だよねってふと現実的に考えちゃったせいですね。
5月後半
引越し準備でばたばたしてた。
平日の17時までたいして電話もできず、
手続きにも行けずってのがいかに面倒かってことを実感。
会社には遠方から上京した新入社員には時間的余裕をとってくれるようにしてもらうべきかも。
5/28
ぎりぎり間に合ったという契約書の到着を待って、不動産屋へ鍵を取りにいった。
27日にマンスリーマンションのあった妙典から送った荷物が昼頃到着。
同時に北海道の地元から送ってもらった荷物も到着。
一気に新生活っぽくなりました!!!
初の風呂トイレ別の物件を手に入れました。
住環境も良さげで、静かな場所だしちょっと出れば飲み屋も多い
実に僕向けなところだと思います!
さて、住居をゲットしたのでこれからもがんばろーっと。
libpcap-rubyを使ってパケットキャプチャ
5月 27th
参考:Ruby/Pcap拡張ライブラリ
ソースは以下。
#!/usr/bin/ruby出力結果は以下。
require 'pcap'
def cap_data(dev,filstr,count)
# [device],[snaplen],[promisc?],[read timeout(ms)]
pcaplet = Pcap::Capture.open_live(dev,1460,true,1000)
access = Pcap::Filter.new(filstr,pcaplet)
pcaplet.setfilter(access)
pcaplet.each_packet(count) do |pkt|
odata = String.new
if pkt.tcp? == true then
odata = "[TCP]"
odata = odata + pkt.ip_src.to_s + ":" + pkt.tcp_sport.to_s + " -> "
odata = odata + pkt.ip_dst.to_s + ":" + pkt.tcp_dport.to_s + " "
odata = odata + pkt.tcp_data.to_s
p odata
elsif pkt.udp? == true then
odata = "[UDP]"
odata = odata + pkt.ip_src.to_s + ":" + pkt.udp_sport.to_s + " -> "
odata = odata + pkt.ip_dst.to_s + ":" + pkt.udp_dport.to_s + " "
odata = odata + pkt.udp_data.to_s
p odata
elsif pkt.ip? == true then
odata = "[IP]"
odata = odata + pkt.ip_src.to_s + " -> "
odata = odata + pkt.ip_dst.to_s ; " "
odata = odata + pkt.ip_data.to_s
p odata
end
end
pcaplet.close
end
# [capture device],[filter strings],[count(負の数だと無限繰り返し)]
# SSH通信をFilter(リモート作業の関係で)
cap_data("eth0","!src port 22 and !dst port 22",-1);
exit
"[UDP]172.16.1.1:53 -> 172.20.0.130:37717 a\264\201\200\000\001\000\003\000\000\000\000\003ftp\002jp\006debian\003org\000\000\001\000\001\300\f\000\005\000\001\000\000\vA\000\022\003cdn\006debian\002or\002jp\000\300/\000\005\000\001\000\006v]\000\022\002jp\003cdn\005araki\003net\000\300M\000\001\000\001\000\000\000<\000\004\226A\a\202"パケットヘッダを個別に取得するメソッドもあるし、データ部も可読化してやれば結構使えそう。pcapファイルをOpenして読み込むことも出来るようで、GUIであるが故に大量のデータの読み込みが遅かったりするところを、Rubyを使って必要なデータだけピックアップする、というのは便利そうかな。なかなか良い感じだと思いました。
"[TCP]172.20.0.130:54574 -> 150.65.7.130:80 "
"[TCP]172.20.0.130:54574 -> 150.65.7.130:80 GET /debian/dists/squeeze/Release.gpg HTTP/1.1\r\nHost: ftp.jp.debian.org\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nIf-Modified-Since: Sat, 19 Mar 2011 13:23:11 GMT\r\nUser-Agent: Debian APT-HTTP/1.3 (0.8.10.3)\r\n\r\nGET /debian/dists/squeeze/main/i18n/Translation-en.bz2 HTTP/1.1\r\nHost: ftp.jp.debian.org\r\nConnection: keep-alive\r\nUser-Agent: Debian APT-HTTP/1.3 (0.8.10.3)\r\n\r\nGET /debian/dists/squeeze/main/i18n/Translation-ja.bz2 HTTP/1.1\r\nHost: ftp.jp.debian.org\r\nConnection: keep-alive\r\nIf-Modified-Since: Fri, 04 Feb 2011 12:30:31 GMT\r\nUser-Agent: Debian APT-HTTP/1.3 (0.8.10.3)\r\n\r\nGET /debian/dists/squeeze-updates/Release.gpg HTTP/1.1\r\nHost: ftp.jp.debian.org\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nIf-Modified-Since: Fri, 27 May 2011 02:22:14 GMT\r\nUser-Agent: Debian APT-HTTP/1.3 (0.8.10.3)\r\n\r\nGET /debian/dists/squeeze-updates/main/i18n/Translation-en.bz2 HTTP/1.1\r\nHost: ftp.jp.debian.org\r\nConnection: keep-alive\r\nUser-Agent: Debian APT-HTTP/1.3 (0.8.10.3)\r\n\r\nGET /debian/dists/squeeze-updates/main/i18n/Translation-ja.bz2 HTTP/1.1\r\nHost: ftp.jp.debian.org\r\nConnection: keep-alive\r\nUser-Agent: Debian APT-HTTP/1.3 (0.8.10.3)\r\n\r\n"
翔泳社
売り上げランキング: 337186


