今日から京都に来ています。
沖縄から京都まで色々あって疲れた。。。
17:40の便で京都へ
搭乗するまで、暇だったので那覇空港内の店でうどん食べたけど完全にハズレだった。(ネギの味が強すぎてうどんの味がしない)
23:30ホテル着
無事到着。疲れたー。
今年を振り返ってみようかなと思います。
今年自分はこんな記事を書いていました。
・topcoder Algorithm部門のレート1500以上(未達成)
・topcoder Marathon部門のレート2000以上(未達成)
・モバイルアプリを1つ作る(作ってない)
・新しい言語に挑戦(挑戦してない)
何も達成できていないですね。
「じゃあ今年自分は一体何をやっていたんだろう」と思って振り返ってみました。
・24コンテスト参加
・オレンジソン
・PlatinumRift優勝
・RubyKaja2014に選ばれました!(Okinawa.rb代表として)
こうして見ると割りと活動していたのかなと思います。社会人1年目で色々なことがあり、すごく長く感じた1年でした。
来年はどうなるかわかりませんが、実りのある1年にしたいと思います。
「How Many Divisors?」
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_3_D
AOJの問題を解いてて「約数の配列だして、upper_boundとlower_boundをとれば終わりやな」と思ったのですが、Rubyに今の要素全部無かったので、作りました。
require 'prime' class Array def upper_bound(x) bsearch_index { |v| v > x } end def lower_bound(x) bsearch_index { |v| v >= x } end end class Integer def divisor_list return [] if self <= 0 return [1] if self == 1 prime_division.map.with_index { |(base, k), i| s = i.zero? ? 0 : 1 (s..k).map { |n| base ** n } }.inject { |res, e| res + res.flat_map { |t| e.map { |v| t * v } } }.sort end end a, b, c = gets.split.map(&:to_i) list = c.divisor_list x = list.upper_bound(b) || list.size y = list.lower_bound(a) || list.size puts x - y
Array#bsearch_index を使うことで簡単に実装出来た。
Rubyで文字列連結のメソッドの動作速度を比較してみました。
require 'benchmark' Benchmark.bm do |x| NUM = 10000 word = "Hello" x.report(:add) do str = "" NUM.times { str += word } end x.report(:concat) do str = "" NUM.times { str.concat(word) } end x.report(:shift) do str = "" NUM.times { str << word } end end
user system total real add 0.050000 0.050000 0.100000 ( 0.098366) concat 0.000000 0.000000 0.000000 ( 0.001402) shift 0.000000 0.000000 0.000000 ( 0.001213)
結果としては「+=」が飛び抜けて遅かったです。理由としては連結の際に新しい文字列インスタンスを生成しているからだと思われます。「concat」や「<<」は高速に動作しますが、元のオブジェクトを破壊するので注意が必要です。
今年も沖縄でOSCが開催されたので、1人で行ってきました!
今年は「去年に比べて、発表内容の理解が出来たかな」と思うと同時に「学ぶべきことがまだたくさんある」と感じたカンファレンスでした。
今年勧告されたhtml5の仕様について色々知ることができました。重要な機能としては「WebSocket」と「SPDY」これらが今後のアプリ開発において重要な機能になるみたいです。
他にもhtml5ではオフラインにおけるアプリ開発をサポートするAPIが出てきており
・Application Cache
・Web Strage
・Indexed Database API
・File API
これらのAPIを駆使することで、オフラインでも動作するWebアプリが作れるとのこと。
html5が騒がれて数年が経ちますが、そろそろ本格的に勉強する時がきたのかなーと個人的に感じたセッションでした。
先週のAWS勉強会で聴けなかった発表でした。最新の技術「Docker」に惹かれてホイホイやってきたのですが、とても面白かったです。
Dockerというコンテナ型仮想技術によって「環境を使い捨てる」という新たな概念に驚きました。Dockerでは仮想イメージを差分管理することもできるらしく、どんどんインフラな部分もプログラミング化されてきたなーと思いました。
展示ブースでは前から気になってきたEjectコマンドユーザ会の展示を見に行きました。
Raspberry PiとCDドライブを駆使した電子工作に正直感動しました。電源のON/OFFをドライブのトレイの(出る/戻る)で実現していたのは、発想力がなんかもうスゴイなと。
ステッカーを頂いたのですが、キャラクターがなんとなくconohaのキャラに似てるなと思いました。(☝ ՞ਊ ՞)☝ウイーン
LTセッションで、参加者を募集していたので、15分ぐらいで発表資料を作って参加してきました。
まだ開発途中のgemですが、よければ遊んでやって下さい
「shiritori」
https://github.com/siman-man/shiritori
最終的に150人近くの参加者がいたらしく、沖縄で開催されるカンファレンスとしてはかなり大規模になったと思います。アンケートに答えるのを忘れて、くじ引きが引けなかったのが心残りです。。。