読者です 読者をやめる 読者になる 読者になる

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)) 出力レコード区切り…

Rubyで100マス計算

ruby勉強会の演習問題を解いてみた - rochefort's blog これはrubyを書き始めた頃のソースですが たまたま目にして、あまりにもアレだと思ったので、 カッとなって書き直してしまいました。 コード class Game100Cell CELLS = (1..9).to_a.freeze def initia…

Kernel#test が便利

Array#sort_byのマニュアルを見ていたら便利そうなKernel.testの記述がありました。 Array#sortのマニュアルより抜粋 まずはsortとsort_byのbenchmark require 'benchmark' a = (1..100000).map {rand(100000)} Benchmark.bm(10) do |b| b.report("Sort") { …

rubyのsort_by / shuffle から学ぶシュワルツ変換とフィッシャー - イェーツのシャッフル

ffakerのsourceを眺めていたら以下のようなコードがありました。 # ffaker-2.1.0/lib/ffaker/utils/array_utils.rb module FFaker module ArrayUtils def self.shuffle(array) array.sort_by{Kernel.rand} end これ自体は、Array#shuffleがない頃のrubyでshu…

Rubyのテストデータ作成gem

少し古い WebDB Press(vol.85)のRubyの記事(Railsらくらくテストデータ準備)を見ていたら fakerの紹介がされていました。 ちゃんと使ったことなかったので今更ながら触ってみました。 記事中はおそらくtypoでffakerとなってしまっていたと思われるので、…

米がうまい

私は米が大好きです。特にツヤツヤ炊きたての米が大好きです。 ここ最近自炊していなかったのですが 魚沼産コシヒカリの新米を久しぶりに入手したので 土鍋で炊いてみたら予想通り美味かったのと 昨年、何かのニュース番組で米のランキングが紹介されており…

RE:「進捗・どう・です・か」

3連休終わって、明日もPHP書かないといけないと思うと、少し気が滅入ってきました。 「進捗・どう・です・か」をランダムに表示し「進捗どうですか」が完成したら煽ってくるプログラム | ぞうさんの何でもノート rubyで書いてみる 「進捗 どんな感じですか」…

「非Railsアプリケーションのマルチデータベース対応と高速化の取り組み」が面白かった

RubyWorld Conference 2015の動画を見ています。 18分ほどの短めのセッションでしたが、とても面白かったです。 MySQLにしか製品していなかった製品を大人の事情でPostgreSQLにも対応したというお話。 ORMとしてSequel を導入したがいろいろ問題があり、それ…

Ruby2.3.0 の新機能

Ruby 2.3.0 リリース まずはInstall $ brew update $ brew upgrade ruby-build $ RUBY_CONFIGURE_OPTS="--enable-shared --with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl` --with-libyaml-dir=`brew --prefix liby…

git-stars というgemを作りました

rochefort/git-stars 経緯 普段からgithubでstarはよく付けるけど、見返すこともあまりなく もったいないと思っていました。 consoleアプリでなんか良いツールがないか探してみると JacksonGariety/galileo というのがあり 直近のstarsをカラフルに罫線付き…

mb_stringというgemを作りました

console applicationを作っていると、マルチバイトに対応した String#ljust, String#rjust, String#center が欲しくなるケースがちょいちょいあり、こないだ同じやつ書いたなぁということがあったので gem化しました。 rochefort/mb_string padding文字列も…

rubyのBundlerでgemの雛形作る際の注意事項

$ bundle gem mygem とすると、rubygemsの雛形が作れてとても捗るのですが 実行ファイルを配置する場所が、bin から exe に変更されていました。 spec.bindir = 'exe' spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } $ bundle --v…

upgrade ruby 2.2.3

webmockのvesionを上げたら、あんまり見たことないwaning(warning: private attribute?)が出るようになりました。 .rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/webmock-1.22.3/lib/webmock/request_body_diff.rb:20: warning: private attribute? .rb…

公開したGemを削除する方法

Cocoapods Core Teamからメールが来ていました。 pod search をGem化するから cocoapods-search のGem名を譲って欲しいとのこと。 名前譲ってくれ問題は、今後増えていくでしょうね。 Core Team からの依頼なので断れないし、むしろ公式のツールとして作成さ…

terminal-table-unicode という gemを作りました

consoleで表形式を表示するgemで tj/terminal-table というのがあり とても便利なのですが、マルチバイトに対応していなかったので、 rochefort/terminal-table-unicode という gemを作りました。 実装自体は、miaout17/hirb-unicode を参考にしています。 u…

Re: マルコフ連鎖で日本語をもっともらしく要約する

以前から気になっていたマルコフ連鎖をザリガニさんの記事を元に試してみました。 マルコフ連鎖で日本語をもっともらしく要約する - ザリガニが見ていた...。 マルコフ連鎖とは マルコフ連鎖を説明してみる。 | 分析のおはなし。 個人的にはこちらの図と確率…

Re: 1時間以内に解けなければプログラマ失格となってしまう5つの問題が話題に

1時間以内に解けなければプログラマ失格となってしまう5つの問題が話題に を解いてみた。 一応1時間以内にできたけど、あまり綺麗ではない。 問題1〜3は簡単なので省略。 問題4 正の整数のリストを与えられたとき、数を並び替えて可能な最大数を返す関数を記…

AWSのIPアドレスかどうかを調べるgemを作りました

またチンピラgemを作ってしまった。 rochefort/aws-ip Amazon Web Services ブログ: 【AWS発表】AWSのIPアドレスレンジをJSONで提供 というのが発表されたので、便利かもと思って勢いで作りました。実行ファイルもおまけ程度につけています。 ipaddress blue…

BIG DIGITS(CodeEval)

hatenaでは見にくいか。 CHALLENGE DESCRIPTION: In this challenge you're presented with a situation in which you need to output big symbols on devices which only support ASCII characters and single, fixed-width fonts. To do this you're going…

DELTA TIME(CodeEval)

CHALLENGE DESCRIPTION: You are given the pairs of time values. The values are in the HH:MM:SS format with leading zeros. Your task is to find out the time difference between the pairs. INPUT SAMPLE: 14:01:57 12:47:11 13:09:42 22:16:15 08:0…

Roller Coaster(CodeEval)

CHALLENGE DESCRIPTION: You are given a text. Your job is to write a program to set the case of text characters based on the following: First letter of the line should be upper case. Next letter should be lower case. Next letter should be u…

Nice angles(CodeEval)

CHALLENGE DESCRIPTION: Write a program that outputs the value of angle, reducing its fractional part to minutes and seconds. INPUT SAMPLE: Write a program that outputs the value of angle, reducing its fractional part to minutes and seconds…

READ MORE(CodeEval)

すごい久しぶりにcodeeval。 CHALLENGE DESCRIPTION: You are given a text. Write a program which outputs its lines according to the following rules: 1. If line length is ≤ 55 characters, print it without any changes. 2. If the line length is …

gsubよりtr の方が早い

railsのcommitに use tr instead of gsub when possible · 56d26d1 · rails/rails というのがありました。 そういえば私もtrあんまり使わずにgsubで書いている気がします。 どんぐらい早いかbenchmarkをとってみると require 'benchmark/ips' str = 'aaaaa_a…

git-trendを修正しました(v1.0.3)

rochefort/git-trend デフォルトでdescriptionを表示させるように修正しています。 別にたいした修正ではないのですが、ふとforkをみると 前からforkされているのは知っていたのですが、なんかしこしこコミットされているようでした。 sheharyarn/github-tre…

RACING CHARS(CodeEval)

CHALLENGE DESCRIPTION: In this challenge you will be given a file where each line is a section of a race track with obstructions, gates and checkpoints. The goal is to find a way of passing this track, using the following rules: Each secti…

rbenv-default-gems が便利

ginza.rb に参加したときに、ちょろっと紹介されていた rbenv-default-gems が便利でよいです。 setup自体は話聞いたときに即installしていたのですが、恩恵を今ruby2.1.3 install入れながら受けています。 機能としては、新しくrubyをinstallする際にお決ま…

Rubyによるクローラー開発技法 読了

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例作者: るびきち,佐々木拓郎出版社/メーカー: SBクリエイティブ発売日: 2014/08/25メディア: 大型本この商品を含むブログ (1件) を見る を読みました。 発売時はえらいニッチな本が出るもんだ…

vimでrubocopするにはsyntasticが便利

普段、大体atom使っていますが、たまにvimが恋しくなります。最近rubocopを使っていて 、vimでも使いたくなったので調べてみました。 結論から syntastic を使うのがよいです パッケージ管理でinstall。 私はvimのパッケージ管理にvundleを使っているので以…

RubyでiCalの作成とGoogleCalendarでの公開

試合日程 - 長友 佑都 - 海外サッカー - サッカー - SANSPO.COM を見ていてgoogle calendarに突っ込めたら便利だなと思ったのでRubyで作ってみました。 リーグ戦しか無いので、データソースとしては今一ですが、カッとなって作ってしまいました。 多分データ…

THE MAJOR ELEMENT(CodeEval)

CHALLENGE DESCRIPTION: The major element in a sequence with the length of L is the element which appears in a sequence more than L/2 times. The challenge is to find that element in a sequence. INPUT SAMPLE: Your program should accept as it…

SPLIT THE NUMBER(CodeEval)

CHALLENGE DESCRIPTION: You are given a number N and a pattern. The pattern consists of lowercase latin letters and one operation "+" or "-". The challenge is to split the number and evaluate it according to this pattern e.g. 1232 ab+cd -> …

COMPRESSED SEQUENCE(CodeEval)

美しくない。 CHALLENGE DESCRIPTION: Assume that someone dictates you a sequence of numbers and you need to write it down. For brevity, he dictates it as follows: first says the number of consecutive identical numbers and then says the numb…

ROAD TRIP(CodeEval)

CHALLENGE DESCRIPTION: You've decided to make a road trip across the country in a straight line. You have chosen the direction you'd like to travel and made a list of cities in that direction that have gas stations to stop at and fill up y…

HIDDEN DIGITS(CodeEval)

CHALLENGE DESCRIPTION: In this challenge you're given a random string containing hidden and visible digits. The digits are hidden behind lower case latin letters as follows: 0 is behind 'a', 1 is behind ' b ' etc., 9 is behind 'j'. Any oth…

MORSE CODE(CodeEval)

CHALLENGE DESCRIPTION: You have received a text encoded with Morse code and want to decode it. INPUT SAMPLE: Your program should accept as its first argument a path to a filename. Input example is the following: .- ...- ..--- .-- .... .. .…