Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Railsのリファクタリングの際に、クラスを細かく分ける手段として、Railsのdelegateを使ってみました。 直しづらい、クラスの長さ プロジェクトにRubocopを入れて、ヤバそうなコードをチェックしているのですが、書式の問題はものによっては自動解決も可能ですし、長すぎるメソッドも、どうにか分けられるものです。 一方で、「長すぎるクラス」というのは、そう簡単に分割できるものではありません。クラスは最終的に1つものとして動作させることになるので、メソッドみたいに「一部切り出す」というのが、あまりスッキリしません。 Moduleは使える、けど もちろん、一部を別なモジュールに分けてincludeする、という手段はあります。 Railsのモデルではhas_manyとかvalidatesとか、DSL的なメソッドを多用しますが、これに関しては「クラスに直接書く」あるいは「Concernのin
はじめに この記事は Ruby Advent Calendar 2017 21日目の記事です。 paizajackというゲームで1位を取るために、Rubyを使って自動化したので、そのことについて書いていこうと思います。 この自動化ツールは以下のGitHubページに公開していますので、気になる方は参照ください。 https://github.com/TomoProg/paizajack-automation それでは頑張っていきましょう。 paizajackって何さ? ITエンジニアのための転職サービスサイト Paiza が提供しているサービスでブラックジャックを対戦するコードを書いて億万長者を目指そうというゲームです。 https://paiza.jp/paizajack BETする処理や山札からもう一枚引くといった処理を追加しながら運営側が用意したディーラーとブラックジャックで対戦してい
はじめに Ruby Advent Calendar 2017 - Qiita の18日目の記事です。 動作環境 Ruby - 2.4.3 OpenCV - 2.4.13.4 モチベーション 個人開発でNakamyというサービスを開発しています。Nakamyは下記のようなサービスです。 Nakamy | 友達のiPhoneの中身を覗けるサービス Nakamyは友達のiPhoneの中身を覗けるサービスです。ホーム画面のスクリーンショットをアップロードすることで、Facebook上の友達とホーム画面を共有でき、友達がインストールしているアプリを見ることができます。 MVPとしてホーム画面のスクリーンショットをアップロードして友達と共有できる機能のみでα版としてリリースしたのですが、ゆくゆくは個人がどのアプリを保持しているのかという情報まで取得し、レコメンドなどに繋げたいと思っています。 そこで、
この記事はRuby Advent Calendar 2017 17日目の記事です。 benchmark_driver.gem とは Rubyの処理系を高速化していく上で重要な計測環境を改善するため、Ruby本体のリポジトリにあるbenchmark/driver.rbの後継として作られたベンチマークツールです。普通にRubyのスクリプトのパフォーマンスを比較するのにも使えます。 また、このgemはRuby Association開発助成金2017に採択されたプロジェクトとして開発されています。 何が便利なのか Procの起動を行なわない精度の良い計測ができる 皆さんがベンチマークによく使うのは、標準ライブラリの benchmark.rb か、見易い比較結果を得られる benchmark-ips.gem 等でしょう。 benchmark-ips.gem でよく使われるインターフェースや ben
背景 使いどころ ブロック引数を使う 所感 背景 Ruby Advent Calender 2017、16日目の記事です。 最近までブロック引数をどの場面で使うのかわからなかったです。 プロダクトコードではあまり見たことがなく(経験が少ないからかも)、OSSのコードで良く見るなという印象でした。 一回うまく使えたことを皮切りに、使い所がパターン化できたので書いてみます。 使いどころ メソッド内の処理の流れが類似しているが、ほんの少し内容が違う際の共通化 def hoge get_up # 起きる wash_my_face # 顔を洗う eat_breakfast # 朝食を食べる running # 走る take_a_nap # 昼寝をする end def fuga get_up # 起きる wash_my_face # 顔を洗う laugh # 笑う wash_hands # 手を洗う
はじめに この記事はRuby Advent Calendar 201715日目の記事です。 << DXRubyのススメ](https://qiita.com/S_H_/items/85111f9ef9d8d513d010) || [ブロック引数の使いどころになる時のパターン >> 遅くなってすみません💦 GTKについても調べながら書いているので、 間違いなどあったらご指摘お願いします。 今回はRubyでGTKを使ったクリエィティブコーディングについて書きたいと思います。 GTKと言ってもOpenGLを使った描画など、 色々あるそうなので今回はCairo(Gtk::DrawingArea)を使ったものを紹介します。 まずruby-gnome2をインストールします。 インストール方法は以前こちらに書いたので参考にしてください。 使い方 まずシンプルに円を表示します。 context.scal
はじめに この記事はRuby Advent Calendar 2017 の14日目です。 << RubyGemコードリーディングのすすめ](https://blog.freedom-man.com/try-rubygem-codereading/) || [Rubyでクリエィティブコーディング >> DXRubyって? Rubyを使って、Windows向けのゲームが簡単に作れるDirectXライブラリです。 Ruby 2.1.x/2.2.x/2.3.x にて利用することができます(ただし、32bit版のみ) Rubyist Magazine でも取り上げられてたことがあるので、ご存知の方もおられると思います 公式ページはこちら 制作者は mirichi 氏 何がいいの? 何といっても、Rubyでゲームが作れるところですね! Rubyの自由かつストレスのないコーディングで、気楽にゲーム制作が
この記事はRuby Advent Calendar 2017 10日目の記事です。 こんにちは、SHOYANです。2017年ももうすぐ終わりますね。みなさんにとって2017年はどのような年だったでしょうか。 おそらくこの記事を読んでいるほとんどの方がRubyを好きなのだと思います。であれば、2017年にRubyでどのようなことが起こったのか気になりませんか?そんなRubyが大好きなあなたに向けて、本記事では2017年のRubyについてまとめました。 2017年にRubyについて書かれた記事ってどれくらい?まずは、Rubyについて書かれた記事からいってみましょう。 インターネット上の全ての記事を探してくるのは膨大な時間がかかるので、ここでの対象はQiitaで書かれた記事とします。 2017年は2,969件の記事が書かれました。 最もいいねのついた記事は@gazayasさんの書いた外国人が語る
で+pythonになっているかを確認します。 インストールはShougo/dein.vimなどを使って、インストールしてください。 VdebugはDBGpというプロトコルを使うため、デバッグしたい言語でDBGpが使えるように設定する必要があります。各言語の設定はVdebugのヘルプに載っています(:help VdebugSetUp<言語>)。 PHP まずはPHPを例にして使い方を説明していきます(:help VdebugSetUpPHP)。 Xdebug PHPでデバッグするにはXdebugが必要です。xdebugのinstallのドキュメントなどを見てインストールしましょう。 Xdebugのremote debugのついての説明はXdebugのRemote Debuggingのドキュメントに書かれています。 XdebugとVdebugを使ったwebページのdebugは以下のように行われ
「Rubyで遅延評価」と言えば、Enumerator::Lazyをよく見かけますが、それ以外の手段を使うことになった話をしてみます。 遅延評価、とは Rubyを含め多くの言語では、a = foo(b)のようにすれば、foo(b)の処理が行われて、その結果がaに代入される、という挙動になります。これを先行評価といいます。 一方で、Haskellでは、(そもそも変数は再代入不可、関数も結果は引数のみで一意に決まる、という特徴があるからこその話という面も大きいですが)実際にaの値が必要となるまでfoo(b)の処理は行われません。これを遅延評価といいます。 遅延評価が便利な面 遅延評価にしてメリットがあることといえば、 無限リストや、ものすごく長いリストも簡便に扱える(Enumerator::Lazyもこれです) 引数に渡すために計算はしたけど、関数内で使わなかった…という余計な計算をカットできる
ごくまれですが、Railsで作ったサイトでSEOをする時にgoogle botからアクセスを出来る限り早く検出したい場合があります。 新しく公開したページがいち早くGoogleにクロールされて検索結果に表示されるようにしたいからです。 この記事ではrailsでbotからのアクセスを特定する方法を紹介します。 アクセスログを利用する 最も分かり易い方法はアクセスログのユーザーエージェントを見る事です。ユーザーエージェントがGoogle クローラに列挙されているものであればGoogle botからのアクセスです。 ニュース用、PC用、スマホ用、広告確認用、など結構多くのクローラーが動いています。 ただしユーザーエージェントは偽装できます。そのためアクセスログ上のユーザーエージェントでは本当にGoogle botが来たのかを特定できません。 正確に特定するにはアクセスログのIPアドレスからDNS
去る10月に彼女がいないRubyistに送るインタプリタとして公開したRubieを作ったときのことを書きます。 本題 作成に至ったきっかけ なんか変わったgemを作ろうと思った結果、ペルソナとして彼女のいないRubyist(というよりRubyが彼女というRubist)が思いつき、ならRubyが喋ってくれたらいいよねっとなったからでした。 開発の経過 STEP1 プロジェクトの作成 gemを作成するプロジェクトを作成しました。 $ bundle gem rubie -t tオプションによってテスト(RSpec)付きのプロジェクトが作成できます。 この後、rubie.gemspecで諸々設定するのですが、本題ではないので省略します。ただ下記のコードはあると公開できない仕組みになっているので消しておきます。 # Prevent pushing this gem to RubyGems.org.
Ruby処理系 Ruby C言語で実装されたRubyの公式処理系。すべてのプラットフォームで動作可能。Rubyアソシエーションの理事長である まつもとゆきひろ により開発され始めたもので、最も広く使われている。 http://www.ruby.or.jp/ja/tech/install/ruby/implementations.html JRuby(じぇいるびー) http://jruby.org/ https://ja.wikipedia.org/wiki/JRuby JRubyは、JVM(Java仮想マシン)上に構築されたRubyです。 JVMの最適化されたJITコンパイラやGC、並行スレッド、ツール群、そして膨大なコレクションのライブラリを使うことができます。 https://www.ruby-lang.org/ja/about/ Java言語で実装されたRubyの処理系。Rubyの
この記事は 表参道.rb #29 ~ Module ~ におけるLT発表資料です hask(_ _)eller 自己紹介 山本悠滋 (@igrep) Haskell歴 ≅ プリキュア歴 ≅ 社会人歴 ≅ 約5年半。 仕事はJavaじゃば! 前職はSansanで、EightのバックエンドをRailsで書いておりました。 元なので私がいた時代の話ならあんなこともこんなことも話せちゃうよ! 軽い宣伝 Haskellでリッチな静的型付けの世界にハマりましょう! Haskell-jpというコミュニティーグループで、Slack Workspaceなどを運営しています。 続きは haskell.jp で hask(_ _)eller Vagrantめんどい チームで使っているVagrant boxとVagrantfileがあった。 一方自分には丹精込めて育てている、Vagrantで管理されてないVMがあ
Ruby Advent Calendar 2017 1日目の記事になります。 Ruby 3 では静的型づけが入るとか言われていますが、今回は Ruby で動的に『型チェック』を行うコードを実装してみようと思います。 前書きという名の注意点 型チェックといいながら一般的な意味での型の話はしない あくまでも Ruby で『型チェックのようなもの』を実装するという話 型過激派の人は生暖かい目で見てください 今回は動的に型チェックを行うのでパフォーマンスに関しては考慮しない 今回実装する機能 メソッドの引数に対して型チェック(精査)を行う 型によってメソッドの多重定義を行う ゴール class Person attr_accessor :name, :age def initialize end # name は String # age は Integer # で受け取る initialize
はじめに Ruby Advent Calendar 2017 5日目の記事です。 この記事では、Ruby標準ライブラリにある tsort について、説明します。 tsort を使うことで、依存関係を解決して、順番に処理することなどが簡単にできます。 今回の内容は Meguro.rb #9 での発表資料をベースにしています。 トポロジカルソートとは グラフ理論でのアルゴリズムの1つ 依存関係を順に処理したいときに使える Ruby 標準ライブラリの tsort でトポロジカルソートができる トポロジカルソートの利用例 Set#divide 標準ライブラリの Set#divide は内部実装で tsort を使っています。 その前に Set#divide について説明しましょう。 以下、るりまでの説明です。 元の集合をブロックで定義される関係で分割し、その結果を集合として返します。 ブロックパラ
はじめに Ruby on Rails Advent Calendar 2017 - Qiita の5日目の記事です。 うまいRailsの使い方などを紹介したかったのですが、全然思い浮かびませんでした zipを作成するgemの紹介でご勘弁を やりたいこと こんな感じのディレクトリを含むデータを 圧縮したい!! 使用するgem rubyzip 導入はREADMEを読みましょう。 ziprubyってのもあるから間違えないように。 rubyzipの基本的な使い方 READMEに書いてある基本的なzip作成方法は以下の通り Basic zip archive creation require 'rubygems' require 'zip' folder = "Users/me/Desktop/stuff_to_zip" input_filenames = ['image.jpg', 'descri
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く