ruby

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: .- ...- ..--- .-- .... .. .…

gem-searchにbrowse機能を追加

gem-search gem探すのによく使っているのですが、gemの詳細を見るのは 結局githubのREADMEだったりソースだったりするので、rubygemsに登録しているhomepage(たいていはgithub)を開く機能と表示する機能を追加しました。 つまり gem名からrubygemsのhomepa…

Bundlerをparallelで動かす方法

こちらのスライドを見ていて22 tips目辺りに記載されていました。 Random Ruby (and Rails) Tips // Speaker Deck このスライドを見るまでの流れとしては Rebuild: Aftershow 53: Because We Are Global (Matz, zzak) を聴く Zakkのtalkが面白そう Show Note…

Rubocopが良い

Atomを使うようになってrubyの静的解析ツールである rubocop を常用するようになりました。もう手放せません。 Atom では yujinakayama/atom-lint というpackageを利用しており、保存時に自動でチェックされていろいろ捗ります。自分ではソースコード書くと…

MIXED CONTENT(CodeEval)

CHALLENGE DESCRIPTION: You have a string of words and digits divided by comma. Write a program which separates words with digits. You shouldn't change the order elements. INPUT SAMPLE: Your program should accept as its first argument a pat…

MULTIPLY LISTS(CodeEval)

CHALLENGE DESCRIPTION: You have 2 lists of positive integers. Write a program which multiplies corresponding elements in these lists. INPUT SAMPLE: Your program should accept as its first argument a path to a filename. Input example is the…

SWAP ELEMENTS(CodeEval)

CHALLENGE DESCRIPTION: You are given a list of numbers which is supplemented with positions that have to be swapped. INPUT SAMPLE: Your program should accept as its first argument a path to a filename. Input example is the following 1 2 3 …

LONGEST WORD(CodeEval)

CHALLENGE DESCRIPTION: In this challenge you need to find the longest word in a sentence. If the sentence has more than one word of the same length you should pick the first one. INPUT SAMPLE: Your program should accept as its first argume…

SHORTEST REPETITION(CodeEval)

CHALLENGE DESCRIPTION: Write a program to determine the shortest repetition in a string. A string is said to have period p if it can be formed by concatenating one or more repetitions of another string of length p. For example, the string …

ROMAN NUMERALS(CodeEval)

CHALLENGE DESCRIPTION: Many persons are familiar with the Roman numerals for relatively small numbers. The symbols I (capital i), V, X, L, C, D, and M represent the decimal values 1, 5, 10, 50, 100, 500 and 1000 respectively. To represent …

WORD TO DIGIT(CodeEval)

CHALLENGE DESCRIPTION: Having a string representation of a set of numbers you need to print this numbers. All numbers are separated by semicolon. There are up to 20 numbers in one line. The numbers are "zero" to "nine" INPUT SAMPLE: Your p…

LOWEST UNIQUE NUMBER(CodeEval)

CHALLENGE DESCRIPTION: here is a game where each player picks a number from 1 to 9, writes it on a paper and gives to a guide. A player wins if his number is the lowest unique. We may have 10-20 players in our game. INPUT SAMPLE: Your prog…

JSON MENU IDS(CodeEval)

CHALLENGE DESCRIPTION: You have JSON string which describes a menu. Calculate the SUM of IDs of all "items" in the case a "label" exists for an item. INPUT SAMPLE: Your program should accept as its first argument a path to a filename. Inpu…

EVEN NUMBERS(CodeEval)

CHALLENGE DESCRIPTION: Write a program which checks input numbers and determines whether a number is even or not. INPUT SAMPLE: Your program should accept as its first argument a path to a filename. Input example is the following 701 4123 …

CALCULATE DISTANCE(CodeEval)

CHALLENGE DESCRIPTION: You have coordinates of 2 points and need to find the distance between them. INPUT SAMPLE: Your program should accept as its first argument a path to a filename. Input example is the following (25, 4) (1, -6) (47, 43…

FIND A WRITER(CodeEval)

西村京太郎先生は海外でも有名なんですね。 CHALLENGE DESCRIPTION: You have a set of rows with names of famous writers encoded inside. Each row is divided into 2 parts by pipe char (|). The first part has a writer's name. The second part is a…