decode

技術ブログ 本の紹介

Nacl様インターン1日目

こんにちは、kawasakikouです!!!

今年の春に、Ruby合宿に参加させて頂きました。

kkou0801.hatenadiary.com
kkou0801.hatenadiary.com
kkou0801.hatenadiary.com
kkou0801.hatenadiary.com
kkou0801.hatenadiary.com


この時に「Naclさんすごい...!!」と感じました。
技術力と、なんか雰囲気がいいな、と思った(優しい雰囲気)という理由と、Matzさんの様なスーパーヒーローがいて、憧れ(初めてお会いしたメジャー言語設計者)だったからです。

すごいと思った場所には行くべきだと思うので、インターンをお願いしました。

本当にありがたい事に、この夏インターンを許可して頂いて、7/21~8/7まで働かせて頂く事になりました!

kawasakikouが感じた島根県松江

島根は田舎と言いますが、宮崎とは違う感じで和を感じられて、最高です。
松江城の周りがすごい和です。本当いい。いいな〜〜こんな最高のプレイスが近くにあるのは本当に羨ましい。
最も高いと書いて最高です。

ちょっとデメリットがあるとすれば、

とかですね、

スーパーまで遠いのはびっくりしました。

Nacl様インターン

インターンの内容ですが、

  • smalrubyを使った高校生以下対象の甲子園があるが、そこで少しバグがあるからバグ取り
  • smalrubyがDXRubyに依存している。dxruby_sdlというものを開発しているのでお手伝い
  • ruby合宿が夏あるが、レゴマインドストームの不具合がつらいのでどうにかしたい
  • ruby合宿の実施内容(ルール)とか一緒に考える


って感じです。
とりあえず一日目なので、smalruby甲子園のデバッグをしました。

smalruby-koshien.jp

ここの対戦環境がデバッグ対象です。
内容としてはAIの名前がマルチバイト文字の場合、webrickが500番を吐いて倒れるという、バグです。

自己紹介をしたり、途中で地元の高校生がNaclさんにインタビューという事でご一緒させて頂いたりさせて頂いたので、進捗はあんまりありませんでしたが、ユーザAIプログラムがjsonでgame_serverにpostリクエスト投げてる所で失敗していたので、って感じでした。

E, [2015-07-21T16:27:58.188097 #3796] ERROR -- : #<Encoding::UndefinedConversionError: "\xE3" from ASCII-8BIT to UTF-8>
E, [2015-07-21T16:27:58.188097 #3796] ERROR -- : C:/tmp/koshien/game_server/lib/api/base.rb:38:in `encode'
C:/tmp/koshien/game_server/lib/api/base.rb:38:in `to_json'
C:/tmp/koshien/game_server/lib/api/base.rb:38:in `to_json'
C:/tmp/koshien/game_server/lib/api/base.rb:38:in `res'
C:/tmp/koshien/game_server/lib/api/viewer.rb:29:in `do_GET'
C:/tmp/koshien/Ruby216_32/lib/ruby/2.1.0/webrick/httpservlet/abstract.rb:106:in `service'
C:/tmp/koshien/Ruby216_32/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
C:/tmp/koshien/Ruby216_32/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
C:/tmp/koshien/Ruby216_32/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'

日本語部分がUnicodeコードポイントにエスケープされていて、つらいって話だと思います。


Ruby文字列のUnicodeエスケープシーケンスをデコードする | TechRacho
メモ: Ruby で JSON のパース/シリアライズ | anobota
オデの日記@WEB系: rubyでASCII-8BIT~のエラーがでる



今日覚えた事は、

rescueで例外を拾ってlogに吐く

   rescue => e
      LOGGER.error e.inspect
      LOGGER.error e.backtrace.join("\n")
    end

inspect backtraceとかちゃんと調べました...申し訳ありません。
恥ずかしいですが、忘れそうなので記しておきます。

Ruby で debug する7つの方法 - 2nd life

dvorak配列でも、いつも自分の環境でできるわけでは無いからなかなかつらい

windowsライセンス欲しい(vm立てたい)

って感じです。
windowsライセンスなんか安くなってないかなぁ...

明日も頑張ります。




広告を非表示にする