最新 追記

会長@腹部日記


2010-01-01 [長年日記] この日を編集

_ 2010年も腹部日記をよろしくお願いいたします

読み方は「はらぶ」日記です。

ですが、タイピングする際は面倒なので「ふくぶ」と変換しています。

今年もつらつらと更新いたしますので、よろしくお願いいたします。

Tags: まじめ

_ きょうのつぶやき : 61回


2010-01-02 [長年日記] この日を編集

_ JRuby Project Wiki Home Page / Design: Internals を訳して勉強する - (3) JRubyInternalDesign

前回の続きです。

Interpreter:

The current interpreter engine is a big switch, with each AST node having a switch value.
Each case calls out to a separate method; this layout appeared to work best for HotSpot
(presumably because the switch gets inlined into the cases,
 rather than vice-versa being too complicated to optimize).
  • 現在のInterpreterエンジンは、それぞれの切替え値を持つASTノード(抽象構文木)を含む大きい切替え器である。
  • それぞれのケースは、別メソッドとして外部呼び出しを行う。これらのレイアウトはHotSportにて最適に動作する。
    • 最適化するにはあまりに複雑なその逆よりむしろ、おそらく切替え器がにインラインされている*1

意味が繋がらないので、一旦中断してよく読み返す、同期に聞いてみることにする。

斜め読みはtwitterで身についた悪い癖なので、封印。

*1 うーん意味不明

_ habitforge.comが便利になってきている

小遣いを使わない運動で利用している、habitforge.comの使い勝手が良くなってきました。

目標を一つ設定、21日間目標に対するアクションを実行できたかどうか、毎日リマインダメール or web経由でユーザがチェックしていくスタイルです。*1

2009年までは

一つの目標に対するリマインダメールが1通届く仕組みでした。数が多いとそれなりにうっとうしいものでした。

また、それぞれのメールからチェック用URLを開くため、メールのURLクリック=>webを新しいタブで開く=>クリック=>閉じる の繰り返しとなり、面倒くささを増していました。

2010年からは

メールは1通になりました。メールの中身は1つのURLとなりました。

photo

ジャンプ先では、複数の目標に対するチェックがwebページ内の遷移だけで実行可能となりました。

photo

iPhoneでも操作するのが楽になったので、今年も継続して続けていけそうです(`・ω・´)

*1 未達成なんですけどねorz

_ 数学ガールを購入しました(twitterの影響有り)

以下のようにtwitterでつぶやいたところ、

かの結城先生のtwitter検索にhitしたようで、見事RTされてしまいました。

というわけで一冊amazonで購入しました。

数学ガール (数学ガールシリーズ 1)
結城 浩
SBクリエイティブ
¥1,980

それまでに溜まってる下記をやっつけよう。

インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践
Ken Pugh
オライリージャパン
¥603

_ きょうのつぶやき : 51回



2010-01-04 [長年日記] この日を編集

_ 逮捕されることを願った凄い絵馬の画像

すごい絵馬

ずらーーーーーーっと並んでたらよかったのに。

Tags: まぬけ

_ きょうのつぶやき : 52回



2010-01-08 [長年日記] この日を編集

_ Mongrelの排他制御を解除し、並列実行を可能にするパッチ

Rails2.2.2以降でサポートされた、threadsafeに関するMongrelのパッチです。 さばこうとするHTTPリクエストの分、マルチスレッドで動作します。

Mongrel's bundled Rails handler always uses a mutex around dispatching.

Now that Rails is thread safe and all, mongrel should respect

ActionController::Base.allow_concurrency flag.

[Mongrel rails handler should use allow_concurrencyより引用]

patchコマンドで適用した後、production.rb の中で以下のコメントを外します。

 # config.threadsafe!
 #↓とる
 config.threadsafe!

中身を覗いてみる

config.threadsafe!内部で、ActionController::Base.allow_concurrency = trueとしているため、@guard.synchronize が迂回されます。

 -            @guard.synchronize {
 -              @active_request_path = request.params[Mongrel::Const::PATH_INFO] 
 -              Dispatcher.dispatch(cgi, ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS, response.body)
 -              @active_request_path = nil
 -            }
 -
 +            if ActionController::Base.allow_concurrency
 +              _dispatch_unlocked(cgi, request, response)
 +            else
 +              @guard.synchronize { _dispatch_unlocked(cgi, request, response) }
 +            end
 
 +      private
 +
 +      def _dispatch_unlocked(cgi, request, response)
 +        @active_request_path = request.params[Mongrel::Const::PATH_INFO] 
 +        Dispatcher.dispatch(cgi, ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS, response.body)
 +        @active_request_path = nil
 +      end

JRuby環境でも動作しました

試した環境は以下のとおりです。

 # jruby --version
 jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (Java HotSpot(TM) Client VM 1.6.0_17) [i386-java]
 # jruby -S gem list                                                                                                          
 
 *** LOCAL GEMS ***
 (略)
 mongrel (1.1.5)

_ きょうのつぶやき : 85回



2010-01-11 [長年日記] この日を編集

_ この日記

最近携帯電話の検索からのアクセスが多いな・・・

_ きょうのつぶやき : 63回


2010-01-12 [長年日記] この日を編集

_ Gumblar対策の基本的な作業 from Yahoo

これは大切大切(((( ;゜Д゜)))

_ きょうのつぶやき : 118回



2010-01-14 [長年日記] この日を編集

_ さくらインターネットレンタルサーバのOSがバージョンアップ

FreeBSD4からFreeBSD7になりました。

すっかり忘れていて、FreeBSD4でコンパイルしたruby、zsh、svnが動かなくなりました(´・ω・`)

rubyは 1.8.7の最新版が入っていたため、tDiaryだけiPhone経由でパスを修正。

帰ったらその他復旧作業予定です

zshはすぐコンパイルできるけども、svnはどうだろう。。。手間かかりそうだ。

_ きょうのつぶやき : 70回


2010-01-15 [長年日記] この日を編集

_ ruby1.9.1をインストール、tDiaryもruby1.9で運用

FreeBSD7へのバージョンアップにより自前コンパイルruby-1.8.6が動作しなくなったため、これを機にruby1.9.1をインストールしました。

意外と簡単で拍子抜けです。

ruby1.9.1のインストール手順

  • 実に普通です
    • disk quotaに引っかからないよう、--disable-install-docを指定
    • その後 --with-baserubyの指定を要求されたため、サーバにインストール済みのものを指定

 $ cd ~/local/src
 $ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.bz2
 $ tar xjvf ruby-1.9.1.p378.tar.bz2
 $ cd ruby-1.9.1.p378
 $ ./configure --prefix=/home/harabu/local --enable-shared --program-suffix=-191 --disable-install-doc --with-baseruby=/usr/local/bin/ruby
 $ ./make | tee make_log.txt
 $ ./make install | tee make_install_log.txt

tdiaryの対応手順

  • shebang行を修正
  • アクセスすると、エラーになる
  • キャッシュ、カテゴリ用キャッシュの削除

(σ´∀`)σ動いた動いた

もっとも手こずったのは

quotaによるファイル数制限でございました。rubyのコンパイルで数千のファイルができていた?ようです。

_ かかりつけ小児科のお知らせページをスクレイピングすることにしました - (3) ruby1.9対応

tmailを利用していたスクリプトでしたが、tmailがうまいことruby1.9で動作しないため、直接メールを送るようにしました。

ぶつかった問題は文字コードの扱いだけでした。

 #!/home/hoge/local/bin/ruby
 # -*- encoding: UTF-8 -*-
 
 require 'open-uri'
 require 'yaml/store'
 require 'net/smtp'
 require 'kconv'
 
 #
 # clinic's url for mobile
 #
 URL = "http://www.dokoka.clinic.jp/mobile/"
 
 #
 # Mail
 #
 @smtp_server = "dokoka.smtp"
 @from = "from@dokoka.smtp"
 
 #
 # contents
 #
 def contents(url_suffix)
   text = ""
   begin
     text = open("#{URL}#{url_suffix}").read.scan(/<p class=columnM>(.*)<\/p>/).flatten.join("\n").gsub("<br>", "\n").toutf8
   rescue
     text = ""
   end
 end
 
 #
 # send mail
 #
 def send(body, from, to)
   Net::SMTP.start(@smtp_server, 25) do |smtp|
     smtp.send_message(<<-EndOfMail, from, to)
 From: from <#{from}>
 To: to <#{to}>
 Message-Id: <unique.message@smtp.dokoka>
 #{body.tojis.tojis.force_encoding("US-ASCII")}
     EndOfMail
   end
 end
 #
 # read cache
 #
 cache_data = {}
 parse_data = {}
 yaml_path    = File::join(current_path, 'cache.yaml')
 cache_data = YAML::load(File::read(yaml_path)) if File.exists?(yaml_path)
 
 #
 # parse html for mobile
 #
 open(URL).read.scan(/(information\/\d+.html)/).flatten.sort.each do |url|
   parse_data[url] = contents(url)
 end
 
 parse_data.keys.sort.each_with_index do |url, index|
   if cache_data[url].nil? || cache_data[url] != parse_data[url]
     send("Subject: Topic #{index+1}\n#{parse_data[url]}\n\n#{URL}#{url}\n" , @from, "to@dokoka.address")
   end
 end
 #
 # save url for cache
 File.open(yaml_path, 'w'){|f|f.puts parse_data.to_yaml}

むしろ、さいきん全く小児科のお知らせページが更新されていない(´・ω・`)

Tags: Ruby family

_ きょうのつぶやき : 62回


2010-01-16 [長年日記] この日を編集

_ きょうのつぶやき : 31回

_ tDiary用のバナーが新調されました!

twitterで#gustav問題が問い立たされている中で、

gustavを使ったtDiaryのバナーがほしいなぁ

とつぶやいたところ tDiaryの作者 tdtdsさんから、ありがたいことにバナーが公開されました!

というわけで本日記にもめでたくバナーが設置されることになりましたლ(╹◡╹ლ)

Twitpic - Share photos on Twitter

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

_ ただただし [ちょw]

_ 会長@腹部 [公式ページのアナウンスをお待ちしております(‾ー‾)にやり]

_ ただただし [「ブログツール」と書いてある時点でネタだと認識してもらわないとw]




2010-01-19 [長年日記] この日を編集

_ さくらインターネットでSubversion-1.6.6をコンパイルする

Ruby1.9.1をコンパイルした後はsubversionをコンパイルします。

環境

 $gcc --version
 gcc (GCC) 4.2.1 20070719 [FreeBSD]
 Copyright (C) 2007 Free Software Foundation, Inc.
 (略)

目的

  • tDiaryのSVN環境を追いかけるため

コンパイル対象

細かい手順は省きます

configure時、 環境変数INSTALL_PREFIXを --prefixの値として指定。

expatは$INSTALL_PREFIXにインストールした後、環境変数LD_LIBRARY_PATHを指定しておく

 export LD_LIBRARY_PATH=$INSTALL_PREFIX/lib

sqlite.c はconfigure時に subversionソースディレクトリ内に配置しろと言われるのでその通りに配置

  • tDiaryのリポジトリはhttps接続のため、neonは忘れないように
    • neonは解凍した後、subversionソースディレクトリ内にneonという名前でコピーするか、シンボリックリンク

subversionのconfigureは以下のように実施。あとは普通にmake、make installで終わりました。

 $ ./configure --prefix=$INSTALL_PREFIX --with-ssl --with-neon=/home/harabu/local/lib/neon --disable-static --with-libs | tee ../svn_configure.log
 $ make
 $ make install

_ きょうのつぶやき : 96回

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

_ 会長@腹部 [忘れないよう自分でツッコミ sqlite-amalgamation のソースを展開して --with-sqlite..]


2010-01-20 [長年日記] この日を編集

_ 2010年初の雪遊び

昨年までは、雪世界連れ出すと次男はびびってしまい、半べそで外にいる間中、私に抱っこされていました。

しかしながら今年に入ったとたん、雪遊びの楽しさを知ったようで一人で遊び始めました。

こちらもゆっくり雪遊びにつきあうことができました。

さらにバーベキュー用の椅子を出しまして、のんびりすぎるくらい雪遊びを眺めておりました(・∀・)


Created with Admarket's flickrSLiDR.

iPhoneで撮影すると

とても大きく見える滑り台です

で、でかすぎた滑り台

Tags: family ゆき

_ きょうのつぶやき : 35回





2010-01-24 [長年日記] この日を編集

_ 便利なNailgun

JavaVMの起動時間短縮のために利用します。JRubyでは1.3以降で利用可能です。

JRuby 1.3.0 and later support execution with Nailgun.

Nailgun allows you to start up a single JVM as a background server process and

toss it commands from a fast native client almost eliminating JRuby's annoyingly slow start up time.

To use Nailgun with JRuby ...

[JRuby Nailgun Supportより引用]

$jruby --ng-server &
NGServer started on all interfaces, port 2113.
$jruby hogehoge.rb # クラスをロードしない分、結果的に以降のJRubyの処理時間が短くなりいます

仕事でのちょっと処理時間が3[sec]のスクリプトを、Nailgun環境で実行すると1[sec]で終わってしまいました。役に立ちそうです。

Linuxは

自分でコンパイル

Windowsでは

同梱されていてすぐに使えます。

JRubyだと

javaのコードもちょちょっと記述できるので、結構恩恵があるのではと思っています。ちょこちょこしたスクリプトにも積極的に使っていこうかなぁと思い始めました。

ちょっとバグもあるようです

ソースにはちゃんと、書いてあるように見えるけどなぁ。

Windows版もバグってる

> jruby --ng-server

で立ち上げた後、コードを実行します。

 # hutuu.rb
 p "hogehoge"

> jruby --version --ng hutuu.rb
jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (Java HotSpot(TM) Client VM 1.6.0_16) [x86-java]
"hogehoge"

この後、Nailgun側でファイルをつかんでしまっているようです。Nailgun側を終了させないと、実行させたファイルの修正ができません(´・ω・`)これはちょっと、いけてない。。。

_ きょうのつぶやき : 34回



2010-01-28 [長年日記] この日を編集

_ TOEICがさんざんな予感のため

Smart.fmで勉強を始めることにしました。

様々なジャンルのスペシャリストの協力でつくり出された

Smart.fmは豊富なコンテンツで溢れています。

テスト・検定対策や映画、スポーツ等

あなたの興味ある事から語学学習をスタートできます。

またユーザーみんなが参加して、

オリジナルの新しいコンテンツもつくる事ができるので、

きっとあなたの探している答えが見つかるはずです。

[Smart.fmトップページより引用]

iPhoneアプリもあるのでちょっとずつちょっとずつ。。。

_ IQテスト?のページ

眠いので途中であきらめました。明日昼間くらいに(´・ω・`)

Tags: まぬけ

_ きょうのつぶやき : 56回

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

_ チョッパー [IQ 106...]

_ 会長@腹部 [残業中にやってたら体力がつきて、ブラウザ閉じちゃった]




2010-01-31 [長年日記] この日を編集

_ きょうのつぶやき : 25回

_ 週末のついったーつぶやき回数

次男がやんちゃになってきていて、おちおちiPhoneも触っている状況ではございません。

というわけで、40回に満たない状況でございます。

むしろ

寝かしつけ途中に、枕元からiPhoneを勝手に奪っていって遊んでいる有様orz