今日調べたことと今日わかったこと。(久々に3時間ぐらい色々してた)

今日色々引っかかったことでわかったことを書いておこう。

 

TCP/113 AUTH/IDENT に関して

 

前からこの話は知ってたんだけどポート番号を忘れたので調べなおしてたIRCとかは接続されるとidentサーバに接続しようとしてくるんだけど、基本ルータはこのパケットをスルーするのでタイムアウトまで次の処理が行われなかったりする。

113番ポートにきたパケットをRejectしてやればすぐに処理が継続されるようになる。

 

カレントオブジェクトselfについて Ruby - Qiita

 

instance_eval

以前にselfになんか足すのにclass_evalを使ったんだった気がするけど、instance_evalを使うと該当のinstanceにだけ変更を加えることができる?ようだ。そもそもクラスがinstance化されるっていうのはメモリ上でどうなってるんだろうか?以前(Javaをやってたころ)はクラスがinstance化されてもクラスメソッド自体はメモリ上に1つしかないのかと思ってたんだけどJavaでもReflection使ったら中身を書きかえれるよなぁ。。でもあれはclass_evalなのか?なんかよーわからんな。

 

逆引きRuby - スレッド

橋本商会 » Node.jsのEventEmitterをRubyに移植した

橋本商会 » websocket-client-simple 作った

 

shinosaka.rbで書いてたプログラムの続きを少しやってたんだけど、websocketで別のところから情報とってきてLitaのhandlerクラスのメッセージを受けた時のresponseに返そうとしてたんだけど、websocket内でresponseが見えない。

そりゃ使ってたwebsocketのgemは別スレッドで処理してるんだから見えるわけないわなーとか思ってスレッドに引数の渡し方を調べてた。

 

でもこのgemはEventEmitterというnode.jsとかで使われるイベント登録の仕組みと同じことを行えるgem(thread生成、Proc登録とイベントのコールバック処理を簡単に書けるようにするようなやつ)を使ってるんで引数を渡せない・・・。instance_evalとかで無理矢理渡すか。みたいなことを試すのにリファレンス読んでた。Threadとかはやっぱり言語の中でも非常に面白い。

 

そろそろ眠いのでこの辺にしておく。