2012年8月27日

自動opボット for nadoka

俺得の nadokaさん 向けのbot第3弾。

機能: ユーザ情報を正規表現でチェックする自動OP


これも定番機能ですよね!nadokaさんに添付のautoop.nbはhostを見てくれないので書いた。
他の方の自動opと重複しないようにop発動まで2~4秒のディレイ付き。


autoopbot.nb
class AutoOpBot < Nadoka::NDK_Bot
  
  def bot_initialize
    @myfriends = [
     #["#sample",/nick.*!user@host/],
      ["#chouheiwa",/jintan.*!~yadomijinta@M.*\.ppp\.dion\.ne\.jp/],
      ["#chouheiwa",/anaru.*!~anjounaruko@softbank[0-9]{12}.bbtec.net/],
      ["#chouheiwa",/menma.*!~honmameiko@..\.net.........\.t-com\.ne\.jp/],
    ]
  end
  
  def on_join prefix, ch
    if prefix.nick != @state.nick && /o/ =~ @state.channel_user_mode(ch, @state.nick)
      @myfriends.each do |friend|
        if ch == friend[0] && prefix.to_s =~ Regexp.union(friend[1])
          opthread = Thread.new do
            sleep( (rand(20)+20)*0.1 )
            if /o/ !~ @state.channel_user_mode(ch, prefix.nick)
              change_mode(ch, "+o", prefix.nick)
            end
          end
        end
      end #each
    end #if
  end #def
  
end #class



なんとbotファイル内にOP対象ユーザ情報を書き込んでいる!
nadokarc に正規表現で記述して反映させる方法を知らないのでこんなことに!
でもこのほうがわかりやすいのでいいや。

使い方→@myfriendsに好きなだけ追加してください。運がよければたぶん発動します。
2012年8月17日

URLタイトルを発言するbot for nadoka

誰得の nadokaさん 向けのbot第2弾。

機能: ircで誰かがURLを発言すると、それのhtmlを解析してtitleタグ部分をnoticeします。

botの定番機能ですよね!nadokaさんに同様のbotが添付されてたけどうまくうごかなかったので。勉強がてら書いた。
あ、mechanizeを使ってるので、無い人は gem install mechanize してください。

ruby-1.9.3p194
nadoka-0.8.2
mechanize-2.5.1


urltitlebot.nb
require 'uri'
require 'mechanize'
require 'kconv'

class UrlTitleBot < Nadoka::NDK_Bot
  
  def on_privmsg prefix, ch, msg
    if msg.include?("http:")
      
      t = Thread.new do
        urilist = URI.extract(msg, %w[http])
        uri = URI.parse(urilist[0])
        case uri.host
        when /localhost/, /\A127\./, /\A192\.168\./, /\A10\./
          @logger.slog "urltitlebot: local address"
        else
          agent = Mechanize.new
          agent.user_agent_alias = 'Windows IE 7'
          agent.read_timeout = 5 # sec
          begin
            page = agent.get(uri)
          rescue TimeoutError,
                 Errno::ETIMEDOUT,
                 Errno::EINVAL,
                 Errno::ECONNRESET,
                 Errno::EHOSTUNREACH,
                 Net::HTTPBadResponse,
                 Net::HTTPHeaderSyntaxError,
                 Net::ProtocolError,
                 Mechanize::SocketError,
                 EOFError
            @logger.slog "urltitlebot: error"
          rescue Mechanize::ResponseCodeError => ec
            @logger.slog "urltitlebot: #{ec.response_code} error"
          else
            begin
              noticemsg = page.title.gsub(/\n/,"").strip.gsub(/ +/,' ').tojis
              send_notice(ch, noticemsg)
            rescue NoMethodError
            end
          end
        end #case
      end #thread
      
    end #if
  end #def
  
end #class


これも習作なので、ツッコミ希望いたすよ。rescueしきれてないエラーがあったりして。スマートじゃない動かし方をしている気もするので。htmlかどうかはmime-typeで判断したほうが賢いよなぁ、とか。

bot作ってばっかりじゃRubyどころかプログラミングの基本が習得できないぜ。
2012年8月16日

nickをキープするbot for nadoka

Geekな君らはIRCのどこかに常駐するために、自宅サーバで IRC Client Proxy とかを走らせているに違いないよね。
それの代表格でありRubyで作られた nadokaさん 向けのbotを作ったよ。

機能: ping切れ再接続したあと、幽霊が消えたら即nickを元に戻します。

だから yournick_ とかに一時的になってもなるべく速攻で yournick に戻してくれる!・・・たぶん。


keepnickbot.nb
class KeepNickBot < Nadoka::NDK_Bot

  def on_quit prefix, reason
    if prefix.nick == @config.nick && reason.include?("Ping timeout")
      @logger.slog "keepnickbot: ping timeout"
      send_msg Cmd.nick(@config.nick)
    end
  end
  
end


みじか!
想定外のエラーが起きる可能性ありまくり。
プログラミング初心者が勉強がてら作った習作なので、ツッコミ希望いたすよ。

# ping切れ以外に対処するため、定期的にnickチェックする機能も付けたかったけど、ircのisonコマンドがうまく通らなかったので保留。ざんねん。
2012年8月4日

iPhone4Sケース BookBook Classic Black 買った

欲しいなぁと思ってたiPhoneケースに黒バージョンが出たというニュースを見た。
今のケース(日本では販売してないやつ!)は気に入ってるけどヘタってきていて、縫い糸とか汚れてきてて、代わりを探してたので、渡りに船!
さっそくその日のうちにamazon.com(Twelve South BookBook for iPhone 4/4S - Classic Black)で注文した!

本体$59.95 送料$9.29 計$69.24

注文時の為替レートは$1=78.87円だったので、クレジットカードの為替交換手数料が1.6%とすると日本円で5,548円。本家サイトで買うより送料がかからない。
前も書いたけど、amazon.comの決済時にはドル建てがおとくですよ!
で、7/19発注→7/20発送→7/28到着。意外に早い。


見た目
なんか仰々しい。ガジェットマニアっぽい。
ある意味いさぎよい。
造りはしっかりしている。


使い勝手ファーストインプレッション
表紙を開く手順が増えたので、ポケットから片手で取り出して片手で画面にアクセスができなくなった。
左手片手で操作派だったので、背表紙の分右上のほうに指が届きにくくなった。
いままで親指の付け根が画面左下に触れて誤操作してたのがなくなった。
写真撮影するときはケースから本体のカメラが出る程度スライドして出さなければいけないのですごいめんどい化した。
全部あらかじめ判ってて注文したんだけどね!

念のためいいことも書いておく。
見た目。
以上。

(クレカを一番手前にいれて写真とったら番号まるみえだったので撮影しなおした。)


1週間使用後のインプレッション
慣れたらこんなもんかなって感じるようになってきた。
しっかり収納されてる感。
机から落としても画面にキズが付かなくなった。


総評
カードが3枚と紙幣数枚が収納できるので、電車生活の都会の人なら普段は財布を持たずにSuica+銀行カード+クレカ+3万円という組み合わせで外出できる気がしてきた。お釣りはポケットに入れて、帰宅したら小銭は缶とかにポイッするかっこいい生活ができそうだよ。しないけど!
しかし、ぼくは車生活のうえ、よく考えたらしょうもないポイントカード類は持ち歩かないけど免許とかJAFカードとか健康保険証とか重要度の高いものは持っておきたいのでカードは6枚くらいになるから、結局別に財布は必要だったぜ。BookBookに入れとこうと思うカードは財布と一緒の必要がないけど持ち歩く免許証くらいか。

前述のデメリット含め、そういう割りきりができない人にはあまりおすすめしない。
シンプルな生活ができ、スタイルのためにちょっとくらい利便性を犠牲にできる一部の限られた方には超オススメ。
ぼくはというと、使いにくいことは承知で買ったので革に味がでるまでは使い込んでみるつもり。革にカメラ穴を開けようかなと画策中。

片手で使えないけど、使用中は手帳を開いてるみたいでスマートでよいよね。


いつのまにか日本でも買えるようになってた。日本で発売まではもっと時間かかると思ってたから個人輸入したのにな!
2012年8月1日

iRacing 2012 S3 FFB Settings

FanatecポルコンPWGT2で iRacing 2012 Season 3 ビルドのフォースフィードバック周りのアップデートについていろいろ試した。StarMazdaちゃんを基準にしていろいろ試した。


いままでのiRacingはFFB情報の出力にコンプレッサーがかかっていたらしい。可変抵抗のCカーブのイメージかな。つまり、あんまり小さい力はステアリングコントローラが表現しきれないので、小さい力の領域はある程度増幅してわかりやすくしてあげてた(下グラフの緑カーブ)んだね。その代わり大きい力の領域の表現力が落ちてた。
それを無効にして、小さい力も大きい力も比例グラフのように(下グラフの青直線)たぶんそのまま出力するオプション steeringFFBLinearForce=1 (可変抵抗でいうとBカーブ化)が、今ビルド最大の目玉だと(ぼくが勝手に)思っている。


このグラフは観測して検証したものではなく、ぼくの勝手な妄想で書いたものなので、カーブ具合などは勘。実態と合ってるかどうかまでは責任とれないよまじで!
steeringFFBBaseOffsetは"おそらく"グラフを↑矢印方向にドリフトさせるイメージ。Offsetの数値を上げると緑は黄色方向に、青は紫方向にずれる。突き出た部分はこのグラフのようにクリップされるのか、それともグラフがカーブを保ったまま圧縮されるのかまではわからない。
これも憶測だけど、デフォルト(従来までの)FFBはこのグラフの黄色カーブに近いんじゃないかなーとも思う。


レースシム界ではやっぱりG25/G27が主流のようで、Fanatecに関する話題は少ない。
そんなぼくの研究途中のFFB設定と、そう設定した理由メモ。シムが出力するデータをなるべく忠実に受け取るということを目指してる。
ただし、ぼくもこれから走りこみ理解が進むうちに考えが変わるだろうし、アップデートがくると使い物にならなくなる予感もするので妄信せずに参考程度に。積極的にいろんな設定を試していただきたい。


ポルコン本体の設定
Driver 129 BETA
Firmware 742 BETA
  • FF 100 後述のsteeringFFBLinearForce=1でFFBが広範囲に広がったため。
  • DRI 4 ポルコン内部のフリクションを補正して無かったことにしてくれる。そのため、電源を入れてiRacingを起動してない状態でステアリングに軽く勢いをつけて回すと、軸にベアリングしかついてないかのようにくるーっと回る。DRI5はそれが加速していくくらい過剰なのでおすすめしない。説明だけ読むとsteeringFFBLinearForce=1と非常に相性が良い気がしてならない。


app.iniの設定
  • steeringFFBLinearForce=1 1にすると、グラフの青ラインになる。FFBが大きな領域でも表現力が落ちないため、タイヤのスリップアングルやセルフアライニングトルクがわかりやすくなる。おしりがズルッといったときにお釣りを貰わずに立て直すのがすごい成功率上がった!ドリフトもできる!相対的にFFBが弱くなったように感じる。直進中のバンプなどが感じにくくなる。
  • steeringFFBSmooth=0.4 デフォルトは1.0。ポルコンはバカ正直にシムから来たFFBを出力するから、1.0だとFFBのガツガツ感が過剰すぎるため、0.1まで落として平滑化するのが推奨されていたのがいままでの話。しかし、そのままLinear=1にしたらバンピーなはずのSebringがSpaや鈴鹿のようなスムーストラックになってしまった。FFB平滑化ってことは情報量を減らしてるってことだから、Linear=1とあいまってこうなったんだろう。Sebringでコツコツきて、鈴鹿で滑らかに走れる数値を探ったところ0.3くらいになった。0.3はちょっと体感的にツマラナイかなと思ったので、最終的に0.4とした。ここはある程度好みで設定していい項目かも。数値が大きいとゲーム的なわかりやすさが増えるよ。G25/27は試してないのでわかりません。
  • steeringFFBBaseOffset=0 シムから微小FFBが出力されたときモーターの力も小さすぎて、パワーがハンコン内のフリクションでスポイルされて手のひらでは感じられないようなときのための補正設定。0.1くらい増やすとデッドゾーンが減ってリニアに反応するような気分が味わえるけどそれはまやかしであり、おまけに直進時にステアリングが暴れる。ポルコンの場合前述の本体設定をしたらこの設定に数字を入れると不自然に感じたので0にした。G25/27では0.06くらい付けてもいいらしい。なるべく少ない数値のほうが良いと思う。


シム内の設定
  • FFB Strength 16~24 今まではデフォルトの12で十分だった。Linear=1で弱くなった分FFBをあまりクリッピングしない程度に補間。しかし、このFFBの強さは車種ごとに設定しなければならない予感がする。車によってはクリップしっぱなしだったりしたので。
全車で固定値にできなさそうなのがめんどうです!
Star Mazda : 20
MX-5 : 24
みたいに車種ごとにFFBの最適っぽい設定を見つけていく作業が必要かもー。



ここに書いてないけど、ダンパーとか余計な補正は基本オフだよ。


運営が各種ハンコンの推奨設定を公開してくれればいいのに!それぞれのハンコンについてゲーム的わかりやすさを重視したFFB設定と、リアル寄りFFB設定を!指標がないからみんな混乱するんだ!

いつものことながら、間違いや勘違いがあったら指摘をおねがいします。


(長文をだらだら書く癖を直したい!)


追記:steeringFFBBaseOffsetを0.12くらいにするともっと良いとの情報が散見されるようになった!調査中!