ruby

rbenv から anyenv に乗り換えました

yak shaving (ここは読まなくていい) 最近数学ガールを読んでいまして、複素数平面とかのplotをrubyでできないかと 探していたら nyaplot というのが使えそうでした。 動作環境は IRuby notebook で IRuby notebook は Anaconda の利用が推奨されています…

Gemnasium の Rubygems Monthly

Gemnasium が Rubygems Monthly というレポートを毎月出してくれるようになりました。 Gemnasium 自体はとても便利で、利用している Rubygems の更新を通知してくれるやつです。このMontylyは自分が使っていない主要なGemについても教えてくれるので、これは…

Mechanize の hook 処理について

RubyでScrapeする時はmechanizeを使って書いているのですが、ふと毎回入れていた sleep 処理を hook で対応できないかと調べてみたところ、以下の記事を見つけました。 Regulating / rate limiting ruby mechanize - Stack Overflow なるほど、 history_adde…

Simple or trump(CodeEval)

簡易版大富豪の実装。 Scoreが80%ぐらいで、何かの考慮漏れがありそうなんだけど、よくわからないので一旦諦め。 CHALLENGE DESCRIPTION: First playing cards were invented in Eastern Asia and then spread all over the world taking different forms an…

Not so clever(CodeEval)

Bubble Sort のような(よりも効率の悪い)ソートアルゴリズムを実装する問題。 CHALLENGE DESCRIPTION: Imagine that you have to arrange items in a certain order: pencils from black to white in a color palette, photographs by the date taken, ban…

Football(CodeEval)

「チーム毎のメンバーが所属する国のリスト」を「国別のチーム一覧」に変換する問題。 日本語にすると一見複雑で、途中で何やってるかわからなくなる。 nested な配列生成が少し汚い。injectにしてもあまり変わらない。 メソッド分割をすれば良いのかもしれ…

Real Fake(CodeEval)

Credit Card のcheck tool。 実際のものではなく、架空のもの。グループごとに1, 3 番目の数字を倍にして、足し上げた結果10で割り切れれば本物と判定する。 CHALLENGE DESCRIPTION: The police caught a swindler with a big pile of credit cards. Some of…

Testing(CodeEval)

文字列の差を求める問題。 CHALLENGE DESCRIPTION: In many teams, there is a person who tests a project, finds bugs and errors, and prioritizes them. Now, you have the unique opportunity to try yourself as a tester and test a product. Here, y…

gem-search を完全一致で検索できるように修正

rubygemのダウンロード件数を表示するツール。 rochefort/gem-search: search gems with using rubygems.org API Rubygems APIの仕様のため、部分一致検索しかできなくて不便だなと以前から思っていたので 完全一致で検索できるように修正しました。(gem se…

Black Card(CodeEval)

ババ抜きのような海賊ゲーム。 CHALLENGE DESCRIPTION: You must have heard about pirates, their customs, pirates code, and the “black spot”. If a pirate is presented with a “black spot”, he is officially pronounced guilty, meaning he will soo…

Trick or Treat(CodeEval)

一定ルールで数値計算して平均値を求める問題。 CHALLENGE DESCRIPTION: Everyone knows what Halloween is and how children love it. Children in costumes travel from house to house asking for treats with a phrase “Trick or treat”. After that, th…

atom-test-switcher という packageを作ってみました

久しぶりにatomのpackageを書いてみました。開発時にはpackageの auto reload 欲しいなぁ。ショートカットのreload遅すぎる。 atom-test-switcher rochefort/atom-test-switcher: Switch between source and test files. こんなの option - t で テストコー…

Rubyのtest-unitで自動でテスト実行を行う

RSpec時代は rspec-guard を使ってテストの自動実行を行なっていましたが、test-unitではどういう選択肢があるのか調べて見ました。 guard, guard-minitest(NG) かつてはguardのプラグインであるguard-minitest を利用すればtest-unitでも動作していたよう…

Ruby test-unit の rake task

RSpecからの移行時に少しはまりました。 class Rake::TestTask (Ruby 2.4.0) を見ながら Rake taskを書いてみたのですが、RSpecの--fomat documentのようにtestの名称(メソッド名)も実行時に表示させる方法について誤解があり、少し悶々とした時間を過ごし…

Time to eat(CODEEVAL)

猫の餌やり時間を逆順でソートする問題。 凝っているのは問題文だけで、実装はつまらない。 CHALLENGE DESCRIPTION: It’s amazing how fast time flies by and we don’t even realize it. As we are getting older, time seems to move so much faster than …

CHARDONNAY OR CABERNET (CODEEVAL)

だんだん問題文が物語風になってきました。 文字列の中に文字列の断片が含まれるかどうかを探索する問題。 当初正規表現で書きましたが、どうもscoreが100にならないので 1文字ずつ探索しては置換する方法で実装。 CHALLENGE DESCRIPTION: Your good friend …

Find the highest score(CODEEVAL)

配列の行列変換後、それぞれの最大値を求める問題。 RubyならArray#transpose/zip を使えば楽勝ですね。 CHALLENGE DESCRIPTION: You decided to hold a banquet in honor of the World Art Day, where you invited all designers and artists that you know…

Clean up the words(CODEEVAL)

英数字以外を抽出する問題。簡単。 CHALLENGE DESCRIPTION: You have a list of words. Letters of these words are mixed with extra symbols, so it is hard to define the beginning and end of each word. Write a program that will clean up the words…

Strings and arrows(CODEEVAL)

文字列に含まれる全てのパターンをカウントする問題。 count_all_pattern がごちゃっとしてしまっている。もう少し良い方法がありそう。 CHALLENGE DESCRIPTION: You have a string composed of the following symbols: ‘>’, ‘<’, and ‘-’. Your task is to …

Stepwise Word(CODEEVAL)

最大文字数の単語を抽出し、段階的に表示させる問題。 inject を with_index と組み合わせて利用できるというのを知れたのが収穫。 CHALLENGE DESCRIPTION: Print the longest word in a stepwise manner. INPUT SAMPLE: The first argument is a path to a …

String Mask(CODEEVAL)

単語内の指定された文字だけ大文字に変更する問題。 CHALLENGE DESCRIPTION: You’ve got a binary code which has to be buried among words in order to unconsciously pass the cipher. Create a program that would cover the word with a binary mask. I…

Swap Numbers(CODEEVAL)

文中の文字列の前後を入れ替える問題。今回はつまらない。 CHALLENGE DESCRIPTION: Write a program that, given a sentence where each word has a single digit positive integer as a prefix and suffix, swaps the numbers while retaining the word in …

Compare Points(CODEEVAL)

2つの座標から方角を求める問題。 CHALLENGE DESCRIPTION: Bob’s hiking club is lost in the mountains on the way to a scenic overlook. Fortunately, Bob has a GPS device, so that he can see the coordinates where the group is currently at. The G…

minimum_distance(CODEEVAL)

配列の距離の和の最小値を求める問題。 CHALLENGE DESCRIPTION: Alice is looking for a sorority to join for her first year at Acme University. There is a street consisting entirely of sorority houses near the university, and some of her high s…

Max Range Sum(CODEEVAL)

配列から連続したN個を取り出し、合計数の最大値を算出する問題。 最初のinjectの引数を無しで書いてしまったため、10分ほど悩んでしまいました。 injectあるあるについて補足。 CHALLENGE DESCRIPTION: Bob is developing a new strategy to get rich in th…

Details(CODEEVAL)

問題の意味がとても分かりにくいのですが、matrixを作成し左側をx、右側をyが陣取り、 yがいくつ左に動くとxと衝突するかというのを求める問題のようです。 問題が悪い気がします。 CHALLENGE DESCRIPTION: There are two details on a M*N checkered field.…

Knight Moves(CODEEVAL)

チェスのナイトの移動位置を求める問題。 横がa-h、縦が1-8。これらの変換をしつつ、以下の数式を満たすパターンを求める。 # 現在位置を(x, y)、次の移動候補を(a,b)とした場合 |a| + |b| = 3 1 <= x + a <= 8 1 <= y + b <= 8 CHALLENGE DESCRIPTION: In c…

Matrix Rotation (CODEEVAL)

行列回転の問題。今回は面白かったです。 CHALLENGE DESCRIPTION: You are given a 2D N×N matrix. Each element of the matrix is a letter: from ‘a’ to ‘z’. Your task is to rotate the matrix 90° clockwise: a b c g d a d e f => h e b g h i i f c I…

Prefix Expressions(CODEEVAL)

ポーランド記法の問題。 何度かtryしましたが、scoreが100にならないです(85-95)。なんかケース漏れがありそうだけど、どういうケースでNGになっているのかcodeeval上ではわからないのが残念。 些細なミスのような気がしますが、一旦諦めました。 CHALLENGE …

SLANG FLAVOR(CODEEVAL)

句読点を変換する問題。 1個飛ばしで変換させるのが面倒。 CHALLENGE DESCRIPTION: Long serious texts are boring. Write a program that will make texts more informal: replace every other end punctuation mark (period ‘.’, exclamation mark ‘!’, or…

WEB+DB Press Vol.91 データ構造の基礎知識 が良い

簡単なアルゴリズムの話かと思い、さらっと流そうかと思ったら、配列、連結リスト、ハッシュテーブルをRubyで実装し、B木/B+木にも言及した良記事でしたので、手を動かしなら、B+木の絵も手元で沢山書いて理解しながら熟読してしまいました。 計算量の違いの…

STRING PERMUTATIONS(CODEEVAL)

文字列の組み合わせをアルファベト順で並び替える問題。 今回も組み込みメソッドで対応。 instance method Array#permutation (Ruby 2.4.0) Codeevalとかやると、かゆいところに手が届くrubyは非常に良いと実感できます。 (本来的にはこれを素で実装しろと…

WITHOUT REPETITIONS(CODEEVAL)

すごく久しぶりにcodeevalやって見た。 繰り返し文字列を削除する問題。 愚直にできなくはないのですが、なんか便利メソッドないかと調べて見たら そのものズバリの instance method String#squeeze (Ruby 2.4.0) というものがありました。 CHALLENGE DESCRI…

Dropbox SDK から Rubyがサポート対象外に!

公式SDKあるし簡単かなぁと思ったら、なんと v2 でサポート対象外となっていました。 Ruby API v2 Client - Dropbox Community - 142019 特に理由が書かれていないのですが、community のライブラリがあるからええやろってことなんでしょうか? じゃどれ使お…

blogタイトルにgithubのgrass-graphを設定してみた

PCだけ対応してみました。 最近、全然GitHub使ってなかったので自責の念も込めて作成。 Grass-Graph / Imaging your GitHub Contributions Graph でGitHubのGrass-Grappを画像として取得できるWebサービスを運営してくれているので、これを使おうかと思った…

tsvを mask するスクリプト(勝手にリファクタリング)

はじめて触ったRubyでTSVをマスキング処理。 | Developers.IO を見ていて、(初めてという記載があるので、全然致し方ないと思います。斧投げてるつもりは全くないです。頑張って欲しいです。)全然rubyっぽくないscriptだったので、反射的にリファクタして…

Nokogiri Install Error

もう何度目でしょうか。nokogiriのinstallに失敗するのは。 ものすごいデジャブ感。 今回のは、xz の liblzma の依存関係が悪さしているようでした。 これはちょっと初体験。 Nokogiri 1.6.8 Install Fails on Mac OS X with xz installed from Homebrew · I…

git-trend v1.1.0 release

コマンドラインでTrending repositories on GitHub today を参照できる rochefort/git-trend: をbump upしました。 新機能追加では無いのですが、HTMLの構造が微妙に変更されていたのと 言語毎のページがurlのpathに含まれるようになっていたのに対応しまし…

共通.rubocop.ymlの管理

rubyを会社で利用している方なら、 複数プロジェクトにまたがるような .rubocop.yml をどう管理するか ということを考えるのは、ごくごく自然なことです。 (私は会社でruby使ってないですけど) rubocop のしつけ方 - onk.ninja を見ていて、 inherit_from …

dilute.rb@東京Rubykaigi 11 について

tenderloveさんが発表されていた摩訶不思議な dilute.rb の原理について 発表では種明しなしでモヤモヤが止まらないので調べてみました。 動画はこの辺りから。 【招待講演】Image Recognition and Code that shouldn't exist Aaron Patterson氏 デモ概要 ま…

東京RubyKaigi 11 に参加してきました

Tokyo RubyKaigi 11 #tkrk11 今回のロゴとてもかっこいいです。 スライド・動画などはこちら(もう動画見れる!)。 スケジュール - Tokyo RubyKaigi 11 #tkrk11 JSONに型を持たせる仕組みや、rubyでNES(ファミコン)が動くとかいろいろ面白かったです。 ru…

RubyのSymbol GCの翻訳記事が良い

(翻訳) Ruby 2.2 のシンボル GC | FIVETEESIXONE この翻訳記事が良かったです。 RubyのSymbolの問題は、Rails の security update の内容などを何度か見て知ってはいたのですが 仕組みについては知りませんでした。 対応方法 Narihiro Nakamura は、この問題…

yard diff が素敵すぎる

パーフェクトRuby (PERFECT SERIES 6)作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一出版社/メーカー: 技術評論社発売日: 2013/08/10メディア: 大型本この商品を含むブログ (22件) を見る 14章より。 rdoc の代…

イベントをフックする

パーフェクトRuby (PERFECT SERIES 6)作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一出版社/メーカー: 技術評論社発売日: 2013/08/10メディア: 大型本この商品を含むブログ (22件) を見る 10-3 イベントをフッ…

Procオブジェクト

パーフェクトRuby (PERFECT SERIES 6)作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一出版社/メーカー: 技術評論社発売日: 2013/08/10メディア: 大型本この商品を含むブログ (22件) を見る Proc#curry がとても…

eval族の親戚exec族

パーフェクトRuby (PERFECT SERIES 6)作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一出版社/メーカー: 技術評論社発売日: 2013/08/10メディア: 大型本この商品を含むブログ (22件) を見る メタプログラミングに…

source_locationでメソッドの定義場所を調べる

積読状態だった パーフェクトRuby を読んでいます。 パーフェクトRuby (PERFECT SERIES 6)作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一出版社/メーカー: 技術評論社発売日: 2013/08/10メディア: 大型本この商…

Rubygemsの本日のダウンロードランキング

今日のyak shaving rubygems/gems: Ruby wrapper for the RubyGems.org API のソースを見ていたら 以下のようなAPI及び、most_downloaded_today というメソッドが用意されていることに気づきました。 https://rubygems.org/api/v1/downloads/top.yaml 便利か…

RSpecのベストプラクティスとRSpec3の新機能

WEB+DB PRESS Vol.89 の いまどきのRSpecテスト が良かったです。 日本人で唯一のRSpec core teamに所属するyuji nakayamaさんの記事ですので読み応えがあります。 余談ですがcore teamの中でもアイコンが目立っています。かっこいい。 https://github.com/r…

git ls-files -z

bunlderで生成されるgemspecの記述でちょっと気になったところがあったので調べてみました。 以前の記述 gem.files = `git ls-files`.split($\) git ls-filesの結果をセット。 引数は Kernel.$\ のようで(module Kernel (Ruby 2.3.0)) 出力レコード区切り…