すみません控えのみです。 まずsortメソッド、sort_byメソッドの復習 instance method Enumerable#sort sort -> [object] sort {|a, b| ... } -> [object] 全ての要素を昇順にソートした配列を生成して返します。 ブロックなしのときは <=> メソッドを要素に対して呼び、 その結果をもとにソートします。 <=> 以外でソートしたい場合は、ブロックを指定します。 この場合、ブロックの評価結果を元にソートします。 ブロックの値は、a > b のとき正、a == b のとき 0、 a < b のとき負の整数を、期待しています。 ブロックが整数以外を返したときは例外 TypeError が発生します。 Enumerable#sort_by は安定ではありません (unstable sort)。 安定なソートが必要な場合は
こんにちは。 「綺麗なコードを書く」って難しくないですか?僕は結構悩んでます。 そんな「コードの品質向上」という僕の課題に対し、マネージャーから「デザインパターンを勉強してみては」とアドバイスをいただき、「Rubyによるデザインパターン」で紹介されているデザインパターンを毎週1つずつアウトプットしはじめました。 やりはじめてから5ヶ月経ち、 Rubyによるデザインパターン で紹介されている16パターン全てをアウトプットし終えたので、まとめておこうと思います。 ほとんどの記事の中でオリジナルのコードを使って説明しているので、気になるデザインパターンがあれば見てみてください。文章での説明よりもコードを見た方がわかりやすいと思います。 各デザインパターンの概要 Template Method パターン Strategyパターン Observerパターン Compositeパターン Iterato
この記事は Money Forward Engineering 2 Advent Calendar 2022 18日目の投稿です。 こんにちは。マネーフォワード関西開発拠点でマネーフォワード クラウド会計Plus (以下会計Plus)のエンジニアをしているぽっけです。 この記事では、私が行った高速化について紹介します。 私は最近Railsアプリケーションの高速化を行っており、ある画面のレスポンスタイムを50%以上削減しました。そしてこの改善はRubyレベルの変更のみで達成しました。 この記事での「Rubyレベルの変更のみ」は、MySQLやRedis、Web APIなどへのアクセスには全く手を入れず、Rubyのプロセスが消費する時間のみを変更した、ということを意図しています。 MySQLなどへのアクセスは通常ボトルネックになりがちな箇所です。今回そこに手を入れずに高速化を達成できたのは、1つ
Rubyで型チェック!動かして理解するRBS入門 〜サンプルコードでわかる!Ruby 3.0の主な新機能と変更点 Part 1〜RubyrbsSteepTypeProf はじめに Ruby 3.0ではRubyのコードに型定義情報を提供するRBSという仕組みが導入されます。 この記事では簡単なサンプルプログラムを通して、RBSとその周辺ツールの使い方や役割を説明します。 なお、説明する内容はあくまで初歩的な内容です。予めご了承ください。 動作確認時の実行環境 本記事の執筆時点ではまだRuby 3.0は正式にリリースされていません。 正式リリース時、または今後のバージョンアップによってこの記事の内容と実際の挙動が異なる可能性もあります。 本記事の執筆時に使用した実行環境は以下のとおりです。 Ruby 3.0.0dev (2020-11-13T16:46:08Z master 782621054
僕はRubyで開発をする時は毎回Pryを使うくらいの熱狂的Pryユーザーだったのだが、PryはGemfileに書いてないと binding.pry できなくて不便。任意のgemをdefault gem化するgem default コマンドも作ったのだが、これをやるのすら面倒だと思っていた。 ある日、nobuさんがRubyに binding.irb という機能をいれた。Pryがdefault gemになるのを待つよりPryで僕が使う機能をIRBに全部移植してしまった方が早いのではないかと思い、4年前からPryの機能の移植活動を始め、今日僕がよく使う機能を全て移植し終えた。 その記念に、この記事ではIRBのPry互換の機能を紹介する。昔 今更聞けないpryの使い方と便利プラグイン集 という記事を書いたんだけど、この中で僕が毎日のように使うコマンドは全てIRBに移植したので、それを紹介する本稿を
普段何気なく書いている Ruby なんですが実はメソッドの引数の種類って思ったよりも多くてまとめてみました。 実際自分も Ruby の AST をいじっている時に引数の種類が多すぎて混乱したのでまとめておくと色々と役に立つかなーと。 と、軽い気持ちで書いてみたんですが結構なボリュームになってしまいまsた。 引数の名称とかは調べつつ独断と偏見で書いてあるのでそこら辺はご注意ください。 諸注意 この記事は基本的に Ruby 3.1 を元にして動作確認しています 下にも書いてあるんですが 仮引数(parameter) についての解説で 実引数(argument) の話はあんまりでてきません 引数の名称は日本語に寄せていますが Ruby 界隈だと英語で書いてある事が多いかも 調べる時は英語の方で調べてもらったほうが情報はでてくると思う 引数という言葉の意味とは 『引数』という言葉には厳密に言うと『
Ruby Advent Calendar 2018の 15 日目です! 定数よ。お前はなぜそんなに難しいのか 使いやすいRubyのメソッドやクラスインスタンス変数に比べて、定数は難しいですね。 私自身、半年に一回は泣かされている弱小エンジニアのひとりです。 せっかくのアドベントの機会を借りて、このハマりがちなRuby定数の謎を徹底的に読み解いてみたいと思います12 対象としてはこんな方を想定しています。 Rubyにおけるselfの扱い、継承チェーン、メソッド探索は理解している 定数の挙動でハマったことがある この機会にマニアックな理解をしたい 参考文献としてはCRubyのソースコードに加えて、最後に列挙した数々の貴重な資料を頼らせていただきました(ぺこり)。 定数クイズ さっそくですが、定数に関する簡単な問題です。 Rubyistなら全部答えられます・・よね? まず、こんな形であちこちにM
A PDF generation tools for Ruby, with design tool for editing templates. Thinreports Thinreports is a PDF generation tool that provides Thinreports Basic Editor and Thinreports Section Editor, a design tool for editing templates, and Thinreports Generator, a Ruby library for generating PDFs. Getting Started Thinreports allows you to create PDF layouts using the Thinreports Editor, and then load th
「初学者から上級者までが楽しめるWeb系の技術カンファレンス」、Kaigi on Rails。ここでKakutani氏が、「Polishing on "Polished Ruby Programming" 」をテーマに登壇。『Polished Ruby Programming』という書籍について紹介しました。 今回のセッションで伝えたいこと 角谷信太郎氏:みなさんこんにちは。角谷と言います。Rubyist-istをやっています。 Rubyist-istとは、Rubyistが好きな人のことです。この話は4年前に島根のRubyWorld Conferenceでして、YouTubeに動画とかもあるのでよかったら見てください。 いいカンファレンスで2021年もあるので、ぜひ3万円の松葉ガニを買って、一緒にカニを食べながら楽しみましょう。 『Polished Ruby Programming』という
本カレンダーは、Qiita Top Contributor の @jnchito さんからのお題です。 みなさまの素敵な記事をお待ちしています。 この企画では「プロを目指す人のためのRuby入門」の著者である伊藤淳一(@jnchito)から、Rubyを使ったプログラミング問題を出します。「我こそは!」という人は解答となるコードを書いて、アドベントカレンダーの記事として投稿してください。 提出されたコード(記事)中から、僕・伊藤淳一が「これはイケてる!!」と思ったコードを表彰します。 「あれ?アドベントカレンダーってそういうもんだったっけ?」 特別企画なので細かいことは気にしないでください!! 告知:銀座Rails#41で僕の解答例を公開します! (2021-12-21追記) 2022年1月25日(火)に開催される銀座Rails#41にて、僕の解答例を公開します。アドベントカレンダーに参加し
rubyで行列を扱いたい場合には標準クラスでMatrixクラスが用意されていますが、そこまで複雑な操作をしないのであれば、二次元配列で簡単に行列を表現することが可能です。 require 'pp' mat = [[1,2,3],[4,5,6],[7,8,9]] pp mat [[1, 2, 3], [4, 5, 6], [7, 8, 9]]これで下図のような行列が出来ました。 ・回転も欲しくなるよね 行列の回転を行うにはtransposeメソッドとreverseメソッドを使用します。 require 'pp' mat = [[1,2,3],[4,5,6],[7,8,9]] pp mat.transpose.map(&:reverse) #=> 右回転 pp mat.reverse.map(&:reverse) #=> 180度回転 pp mat.transpose.reverse #=>
問題はこちら 問題概要 解説 Pythonでの解法 感想 問題概要長さの木材がある.以下の個のクエリを処理せよ.番目のクエリはで与えられる. のとき:木材の左端からの地点で木材を切る. のとき:木材の左端からの地点を含む木材の長さを出力する. 解説現在の木材の区間を管理します.を初期状態とし,の木材をの地点で切ると,との木材になります. C++のstd::setでおよび切れ目を管理することで,の地点を含む木材の値が両端が取得できます. 具体的にはそれぞれのクエリで以下の操作を行います. クエリ1:をsetに入れる. クエリ2:setの以上の最小の要素と以下の最大の要素を取得し,を出力する. Pythonでの解法C++にはstd::setというデータ構造があり,クエリ1がinsert,クエリ2がlower_boundで実現できるのですが,PythonにはSTLにsetのようなものがない(Py
トライ トライは文字列の集合を表すのに都合のよいデータ構造です。トライの語源は、「検索 (retrieval) 」という言葉の真ん中 (trie) に由来しています。トライは木構造の一種であり、根から葉までの経路がひとつの単語に対応します。次の図を見てください。 図 : 文字列の集合を表したトライ 上図は文字列の集合をトライで表現したものです。ここでは葉を $ で表しています。たとえば、葉 $7 までたどると、それは "THEN" という文字列を表しています。また、文字列 "THE" をトライから探す場合は、節を順番にたどっていって、葉 $6 に達した時点で "THE" を見つけることができます。もし、節 E の子に葉 $6 がなければ、THE はトライに存在しないことになります。 ●参考文献 A.V. Aho, J.E. Hopcroft, J.D. Ullman, 『データ構造とアルゴ
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10140254400 どうも。Rubyを2年半ぐらいやってる者です。 もしかすると、 ~0b1100 == 0b0011 となる事を期待されていますか?残念ながら、そうはなりません。 コンピュータは整数値を、 符号(1bit) + 2進数の数(任意の桁数) で管理しています。因みにRuby(の小さい整数を扱うFixnum)では、多くの場合で30桁です。つまり、0b1100は + 000000000000000000000000001100 になります。ビット反転を行うと、符号を逆にし、0と1を入れ替えます。~0b1100は - 111111111111111111111111110011 ということです。 ここで注意して頂きたいのが、負の数の管理方法です。一言で言うと、「そ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く