最新 追記

ヽ(´・肉・`)ノログ

2005|05|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|11|12|
2010|01|02|03|04|05|06|07|08|

2010-02-07 [長年日記]

_ [ruby] module に class method を追加させるイディオム

単純に include するだけだと、クラスメソッドは追加できないんですね。知らなかった。 Module#include を使って、 extend してやるのが良さそうです。『 Ruby 逆引きハンドブック』の P139 を参考にしました。

module M
  def self.included(mod)
    mod.extend ClassMethods
  end

  module ClassMethods
    def parse doc
      p "parsing... #{doc}"
      self.new(doc)
    end
  end
end

class C
  include M

  def initialize doc
    p "initializing... #{doc}"
  end
end

p C.parse 'hoge'
# >> "parsing... hoge"
# >> "initializing... hoge"
# >> #<C:0x0000010085a830>

Ruby逆引きハンドブック Ruby逆引きハンドブック
るびきち
シーアンドアール研究所
¥ 3,990

[]

2010-02-09 [長年日記]

_ [ruby] ワンライナーで作る N-gram 解析

'ワンライナーで作る N-gram 解析'.split(//).each_cons(4).map(&:join)
=> ["ワンライ", "ンライナ", "ライナー", "イナーで", "ナーで作", "ーで作る", "で作る ", "作る N", "る N-", " N-g", "N-gr", "-gra", "gram", "ram ", "am 解", "m 解析"]

split(//)

split(//) は 1 文字ずつ配列にするためのイディオムです

'ワンライナー'.split(//)
=> ["ワ", "ン", "ラ", "イ", "ナ", "ー"]

each_cons(4)

要素を重複ありで n 要素ずつに区切り、ブロックに渡して繰り返します。

[instance method Enumerable#each_cons:より引用]

今回引数を 4 にしたので 4-gram になってます。2-gram にしたいなら each_cons(2) ですね。

'ワンライナー'.split(//).each_cons(2).to_a
=> [["ワ", "ン"], ["ン", "ラ"], ["ラ", "イ"], ["イ", "ナ"], ["ナ", "ー"]]

map(&:join)

map(&:join) は map{|x| x.join} と一緒です。 to_proc ってやつですね。

'ワンライナー'.split(//).each_cons(2).map(&:join)
=> ["ワン", "ンラ", "ライ", "イナ", "ナー"]
[]

2010-02-10 [長年日記]

_ 技術者としての道をどこで見切るか(あるいはあきらめないか)

正直なところ僕は自分の技術者としてのクリエイティビティは諦めていて、僕が新しい何かを生み出すことは出来ないと思っているけれど、その新しい何かを生み出すことが出来る技術者を、北海道で育てることこそが、僕のやるべきことなんじゃないかと思ってる。

[[-*煙猴*-]: Q.「技術者が中央に集中してしまう流れは止められないのか」より引用]

geekになれないからこそなりたいと努力する人と、なれないのに口だけでなりたいと言う人と、なれないからこそ別な道を歩む人がいる。 俺は最後の道を歩むことを決断した。 弱みを補強するのはもういいや、弱みを強みに変える人生にしていく。

[Twitter / exLeaf: geekになれないからこそなりたいと努力する人と、な ...より引用]

僕は技術者としてあんまり大成できないかもしれないなぁと自身で思っています。だけど、見切りをつけるにはまだ早いのかなとも思っていて、まだあきらめてはいないです。ダメだとわかっているなら、早めにあきらめて他の能力を磨いた方がいいのかもしれないですが…どのタイミングで判断したらいいんでしょうねぇ。

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

_ ´∀`)Ψ [タイミングってのは難しいですね・・・ 大成ってのも難しいし各自判断が分かれるかもしれませんけど、 この業界で..]

_ ヽ(´・肉・`)ノ [確かに仕事とする上での最低限ラインは「食っていけるかどうか」になるのかもしれませんねー. でも最近「ハイブリッドワ..]

[]

2010-02-11 [長年日記]

_ [photo] 第 61 回雪祭り

たまたま北海道にいたので雪祭りに行ってきました.10年ぶりくらいでしょうか…結構楽しかったです.iPhone で実況しながら進んでいたら手が冷たくなって指がうまく動かなくなりました…

大通り公園に突如ジャンプ台が! 旭山動物園 ミッキーマウスと愉快な音楽隊 混みすぎ… 元々なのか溶けかけているのか… ひらがなのおけいこなのに『「ら」じゃない「5」でしょ』? ちびまる子 クライトーン優勝(コンサドーレファン限定ネタ)

[]

2010-02-13 [長年日記]

_ [local] 「LOCAL DEVELOPER DAY '10 /Winter」に参加した

ちょうど札幌にいたのでLOCAL DEVELOPER DAY '10 /Winterに行きました。LOCAL の人のうち、半分くらいは初めて会ったのかな。IRC ではダラダラやってますが、実際に会うと不思議な感じですねー。単なるお客さんではなくて LOCAL の一員として参加したかったので、会場設営を手伝ったのですが、実際に役に立ったのかは微妙でしたw

以下感想など

Ext JSによるリッチインターネットアプリケーションへの移行

小堤さんの発表。ExtJSって名前はなんとなく聞いたことがありますが、実際に使ってみたことないんですよねー。

こういう手厚い(印象)のライブラリって、誰もサポートしなくなって古びてしまった時、それに掛けてた時間や開発のノウハウが無駄になってしまうのが怖いのですが、ExtJS は開発する会社を作って、マイルストーンも用意してと、「この先もバリバリ進化していきますよ」というメッセージを感じられたのが良かったです。

あとExtJSって Composite パターンで作られているんだなと思いました。いいですよね Composite。

印象に残った一言「ExtJS はただの javascript ライブラリじゃない。RIA フレームワークだ」

Selenium 再入門 (仮)

鈴木さんの発表。Web ブラウザからテストしちゃう Selenium の Tips でした。

Selenium は Web アプリケーションで回帰テストする場合にかなり有力な候補になるんじゃないでしょうか。でも今まではとっかかりがなかったので、抵抗なく試してみる良いきっかけになりました。

これお客さん側の立場から見たものが問題ないのを確認するテストですよね。「ビジネス上の要件を満たしているか」ということになるのかな。むしろ設計書もこれで書いておけばいいのでは…もしくは設計書から自動生成できるといいなぁと妄想しました。

印象に残った一言「ソフトウェアを成長させる。変えたい所だけ変えて、それ以外は変わらない。それを selenium で担保しよう。」

PHPとMongoDBで学ぶ次世代データストア

佐藤さんの発表。スキーマレスなストレージとかいいよね!という話。

CouchDB とか MongoDB はドキュメント指向 DB というもので、簡単に言うと Hash を DB に突っ込む感じで使うみたいです。既存の RDB と違うのは「あらかじめカラムを規定しておく必要がない」という点。作りながら変更していくような開発スタイルには向いているかもしれませんね。あとネイティブに O/R マッパーっぽく書ける点が魅力的でした。

今の所 CouchDB の方がメジャーなそうですが、 MongoDB は http://php.net/mongo にあるように php とは深い仲なので PHPer な佐藤さんは MongoDB を紹介したそうですw

印象に残った一言「KVS と RDBMS のあいだを狙った立ち位置」

LT

Rubyで始めるデジイチlife!

小野寺さんの発表「実家に電話してお母さんにサーバーリセットをお願いする」。話したい内容がギチギチに詰まっていて面白かったです。どう考えてもまにあわない詰め込みにするのが LT のコツかもと感じた。

Where The Street Has No Name

島田さんの発表「プロフェッショナルとして、自分が作るソフトウェアが利用者の生活の向上させられるかどうか」。ちょうどこの間TDDの話題が出てて、この辺ともからむのかなと思いました。あとこれかな

作る技術をバックボーンにして、 話をまとめる力をつけて、 要件をまとめる力をつけて、 交渉をまとめる力をつけて、 費用抑える力つけて、 お客さんの要件を引き出して、実現して、貢献して、 初めて仕事が成り立ってるんだろうが、 ビジネスが成り立つんだろうが。

[2010-02-16 - 山本大@クロノスの日記より引用]

淡々と話しつつ、熱い内容の LT でした。

LOCAL学生部の今までとこれから(仮)

菅井さんの発表「ニーソタイマー」。ニーソ好きとしてはこれが一番印象に残っていますw

「あの人達みたいにうまくできない」って、一番初めの世代は思わないんだよね。だって先例がないから。二番目以降に熱を伝えつつ、負担に思わせないにはどうしたらいいのかなー…ってのは僕の大学時代からの課題で未だに答えは見つかりません。見つけたら教えてください…

セキュリティ的な視点

小岩さんの発表「セキュリティの先輩は軍隊や警察。そのマニュアルからセキュリティを学ぶ」。僕には衝撃の内容でした。開発はパターンランゲージなんかの建築に学ぶことが多いみたいですが、セキュリティは何から学ぶかなんて考えたこともなかったので…個人的には今回一番ささった LT でした。

すげーいいこと言ってたのに、最後にパッションがほとばしってしまいましたがw

GPS座標を短い文字列で扱えるGeoHashが面白い

松井さんの発表「文字の長さによって、範囲の精度が変わる」。この仕様は面白いなーと思いました。ある程度情報が欠落しても大体あってるって何かに使えないかな… LT 中では SQL の LIKE 検索なんかと相性がいいとおっしゃられていましたね。

そろそろ仮想化についてひとこと言っておくか

原さんの発表「仮想化レンタルは、ほっとくと皆同じ脆弱性を持つことになるよ」。ごもっとも…あと NTP ずれまくるってのは知りませんでした

openpear

riafさんによる当日ムチャ LT 振り対応の苦労wネタをストックしておけるのは素晴しいですね。

おとこ.txt

ぬまたさんによる発表「毎日更新、毎日先端、毎日リスキー、 build or may die」。linux-next を追いかけろという話でした。プレゼンの内容よりプレゼンスタイルが熱かったw

Androidのブラウザでスクレイピング

まいむぞうさんによる発表「Android のブラウザを使うと、スクレイピングが楽かもしれない」。ブラウザで表示している内容に直接アクセスできるのは確かに便利ですよね。ruby だと mechanize なんかを使うと似たようなことができ…るのかな?

絵文字Ruby: From Sapporo.rb with Love for Emoji.

設楽さんによる発表。絵文字って統一企画がなくてあんまり…と思っていたのですが、絵文字が現実にここにある以上、取り扱えた方がいいですよね。だいぶん苦労されているんだなーと思いました。

C言語でPostgreSQLを拡張する

石田さんの発表。PostgreSQL の型とか関数とかを追加する方法をライブコーディング。僕には全然馴染がない話だったのですが、こうやって拡張するのか!という驚きがありました。思ったより簡単(そう)に拡張できるんですね。石田さんのプログラマらしいつぶやきと共に進むプレゼンスタイルはおもしろかったですw

印象に残った一言「『C 言語を使ったことがある人』とは聞かないですよ」

メールフィルタの作り方 - Rubyで作るmilter

須藤さんの発表。 MTA に用意されている(ことが多い) milter という仕組みを使ってメールフィルタを作ろうという内容。smtp ネイティブ の挨拶などためになりましたwそういえば僕 ruby/groonga を 32bit 環境で使おうとしてコケたのを ML に報告して解決方法を教えていただいたのでした。須藤さんにご挨拶しそこねたなー…その節はお世話になりました。

印象に残った一言「SMTP はツンデレ」

[]

2010-02-20 [長年日記]

_ [ruby] ruby で"誰得"を"誰得www"にしちゃうよー

# -*- coding: utf-8 -*-
class String
  def inspect
    self + "www"
  end
end
p "誰得"                   # => "誰得www"
p "なんぞこれ"             # => "なんぞこれwww"

オープンクラスおいしいです^q^

[]

2010-02-21 [長年日記]

_ [ruby] ruby で n-gram 解析する最も簡単な方法

"なんぞこれ?".to_ngram # => ["なん", "んぞ", "ぞこ", "これ", "れ?"]

のような振舞を実装しました。

# -*- coding: utf-8 -*-
class String
  def to_ngram n=2
    self.split(//).each_cons(n).map(&:join)
  end
end

"なんぞこれ?".to_ngram           # => ["なん", "んぞ", "ぞこ", "これ", "れ?"]
"お前たちの文化は我々と同化する。".to_ngram(4) # => ["お前たち", "前たちの", "たちの文", "ちの文化", "の文化は", "文化は我", "化は我々", "は我々と", "我々と同", "々と同化", "と同化す", "同化する", "化する。"]

ワンライナーで作る N-gram 解析をちょこっと変えただけです。本当に簡単ですよねー。もしもっと簡単な方法があれば教えてください…

[]

2010-02-22 [長年日記]

_ [tdiary] tdiary2.3.3 でサムネイルを使う方法

サムネイル生成機能つきプラグイン image_ex.rb を有効にしただけではサムネイル生成がされませんでしたので,まとめておきます.

4つ手順があります.

  1. ImageMagic か netpbm を使えるようにする.僕の場合 debian なので sudo aptitude install imagemagic で入りました.netpbm は…やってないのでわかりません.
  2. image_size.rbをダウンロードしてきて,ルート (tdiary.conf 等と同じパス ) に置く
  3. ルートの tdiary.conf に設定をする.値は 本家wiki にある設定方法を参考にしてください.ただし,今回の僕の設定だと @options['image_ex.useresize'] = 1 になります.
  4. image_ex.rb プラグインを misc/plugin 辺りに置いて,設定画面から有効にする

特に2番の作業は,今の所本家wikiにはさらりとしか書かれていないので要注意です.後で直しておきます.

[]

2010-02-23 [長年日記]

[]

2010-02-28 [長年日記]

_ 簿記3級を受けた

たぶんダメでしたー…

プログラマが簿記受ける時の一番の敵は、繰り返し処理を素早く自分でしないといけないところだな…

[Twitter / ヽ(´・肉・`)ノより引用]

これにつきますね.試験前くらいもうちょっと真面目にやろう.

_ 関東地区後援会主催PSM観戦会に行った

http://www.consadole.net/cs-kanto/article/57

見たことのある人達が集まっていました.今年もがんばりましょー

  • 近藤選手は良かったです.もうちょっとターゲットになって欲しい気もする.
  • 攻撃の時,去年よりPAにいる人数が増えたような
  • 守備はまたずたずたに…
  • 高原△
  • 中山選手は消えてた…かな.でも出たときはみんな盛り上ってたw
[]

最新 追記