-
Rubyでの静的分析
ソースコードを解析して、すべてのメソッド、それらが定義されている場所、およびそれらが取る引数を見つけたいとします。 どうすればこれができますか? あなたの最初のアイデアはそれのために正規表現を書くことかもしれません… しかし、もっと良い方法はありますか? はい! 静的分析 は、ソースコード自体から情報を抽出する必要がある場合に使用できる手法です。 これは、ソースコードをトークンに変換する(解析する)ことによって行われます。 さっそく始めましょう! パーサージェムの使用 Rubyには標準ライブラリで利用可能なパーサーがあります。名前はRipperです。出力を操作するのは難し
-
Rubyで再帰とメモ化を使用する方法
Rubyの再帰とは何ですか? 再帰関数は、最終目標に到達するまで自分自身を呼び出し続ける関数です(ベースケースとも呼ばれます)。 )。各関数呼び出しの後、この基本ケースに向かって前進し、残りの作業量を減らします。 基本ケースに達すると、再帰が終了し、関数が戻り始めます。 ルビー再帰 再帰について学び始める典型的な例は、階乗数の計算です。 反復と再帰の両方を使用して、Rubyでこれを行う方法を見てみましょう! 数値の階乗を計算するには、1から目標数値までのすべての数値を乗算する必要があります。たとえば、5の階乗は次のとおりです。1 * 2 * 3 * 4 * 5 = 120 。 Ru
-
Ruby NLP:楽しさと利益のためのNグラム分析
大量のテキストのコレクションが与えられ、そこから何らかの意味を抽出したい場合はどうしますか? 良いスタートは、テキストをn-gramsに分割することです。 。 ここに説明があります : 計算言語学と確率の分野では、n-gramは、テキストの特定のシーケンスからのn個のアイテムの連続したシーケンスです。 –ウィキペディア 例 : 「こんにちは、お元気ですか?」というフレーズをとると、その場合、ユニグラム(1つの要素のngram)は次のようになります:Hello, there, how, are, you 、およびバイグラム(2つの要素のngram):[Hello, there],
-
Rubyのケースステートメントの多くの用途
if / elsifを使用する必要があるときはいつでも 代わりにRubyのcaseステートメントを使用することを検討できるステートメント。この投稿では、いくつかの異なるユースケースと、それが実際に内部でどのように機能するかを学びます。 注:他のプログラミング言語では、これはスイッチとして知られています。 ステートメント。 Rubyのcaseステートメントのコンポーネント: キーワード 説明 ケース ケースステートメントの定義を開始します。使用する変数を取得します。 いつ 一致する可能性のあるすべての条件は1つのwhenステートメントです。 その他 一致
-
Rubyリファクタリングテクニック:はじめに
この用語に慣れていない場合、リファクタリングとは、コードの機能を変更せずにコードの品質を向上させる行為です。これにより、コードの操作が非常に簡単になります。 この投稿では、いくつかの一般的なRubyリファクタリング手法を学習します 始めましょう! 抽出メソッド 最も一般的なリファクタリングの1つは、「抽出メソッド」として知られているものです。このリファクタリングでは、コードを古いメソッドから新しいメソッドに移動します。これにより、わかりやすい名前の小さなメソッドを使用できるようになります。 例を見てみましょう: @sold_items = %w( onions garlic pota
-
Rubyの時刻と日付のクラスの使用方法
時間は、特定の時点を表すのに役立つRubyのクラスです。 この記事を読むと、Rubyタイムウィザードになるために知っておく必要のあるすべてのことを学ぶことができます! 対象トピック : 文字列を時間オブジェクトに変換する方法 時間をコンポーネントに分割する方法(日/時間/ミリ秒…) Dateの使用方法 、DateTime &Time Rubyのクラス 任意の方法で時刻をフォーマットする方法 2つのTimeの違いを見つける方法 オブジェクト やってみましょう! ルビータイムクラス Timeを使用できます 時刻と日付を表すRubyのクラス。 この日付 3つのコンポーネントがあり
-
Ruby Freezeメソッド–オブジェクトの可変性を理解する
オブジェクトが可変であるとはどういう意味ですか? 派手な言葉で混乱させないでください。「可変性 」は、オブジェクトの内部状態を変更できることを意味します。これは、凍結されたオブジェクトを除く、すべてのオブジェクトのデフォルトです。 、または特別なオブジェクトのリストの一部であるもの。 つまり、Rubyのすべてのオブジェクトが変更可能というわけではありません! 例 : 数字や記号、さらにはtrueには意味がありません またはfalse (オブジェクトでもあります)変更します。 数字の1は常に1になります。 ただし、他のオブジェクト、特に配列オブジェクトやハッシュオブジェクトなどのデー
-
これまでに見たことのない11のRubyトリック
クールなRubyのトリックをお探しですか? あなたはそれらを見つけました! この記事では、私のお気に入りのいくつかをあなたと共有したいと思います。 コンテンツ 1ディープコピー ラムダを呼び出す2つの方法 3事前に入力された配列の作成 4 true、false、nilはオブジェクトです 5ラムダは引数に厳密ですが、Procsは気にしません 6irbやファイルを使用せずにコードを直接実行する 71つのコマンドで独自のミニirb 8オブジェクトのフリーズを解除します(危険です!) 特別なアイデンティティを持つ9つのオブジェクト 10irbまたはpryで大きな出力を避ける 11呼び出し
-
ブロック、Procs、Lambdasの究極のガイド
Rubyブロック、プロシージャ、ラムダ。 それらは何ですか? どのように機能しますか? それらは互いにどのように異なりますか? この投稿を読むことで、それ以上のことを学ぶことができます! コンテンツ 1Rubyブロックを理解する 2RubyYieldキーワード 3つの暗黙的ブロックと明示的ブロック 4ブロックが与えられたかどうかを確認する方法 5ラムダとは何ですか? 6つのラムダとProcs 7つの閉鎖 8バインディングクラス 9ビデオチュートリアル 10まとめ 10.1関連 Rubyブロックについて Rubyブロックは、メソッドに渡すことができる小さな無名関数です。
-
MRIソースコードの調査
しばらくRubyを使用している場合は、内部でいくつかのものがどのように機能するかについて興味があるかもしれません。 Rubyの内部を深く掘り下げる1つの方法は、Rubyを機能させるソースコードを読み取ることです。 Cを知らなくても、面白いものをいくつか拾うことができます。 ソースコードは、Rubyのgithubリポジトリにあります。 理想的には、クラス名とメソッド名を簡単に見つけることができるCodequeryのようなツールを使用する必要があります。 コアクラスの調査 ほとんどの探索はルートフォルダで行われます。ここに、Objectなどのすべてのコアクラスのソースコードがあります。 o
-
Ruby Enumerable Moduleの基本ガイド(+私のお気に入りの方法)
列挙可能とは何ですか? 列挙可能は反復法のコレクションです 、Rubyモジュール、そしてRubyを優れたプログラミング言語にする大きな部分です。 列挙可能には次のような便利なメソッドが含まれます : マップ 選択 注入 列挙可能なメソッドは、ブロックを与えることで機能します。 そのブロックで、すべての要素で何をしたいのかを伝えます。 例 : [1,2,3].map { |n| n * 2 } すべての数値が2倍になった新しい配列を提供します。 正確に何が起こるかは、使用する方法、 mapによって異なります。 すべての値を変換するのに役立ちます、 select リス
-
RubyでTwitterAPIを使用する方法を学ぶ
Rubyを使用してTwitterアプリケーションを作成する方法を学びたいですか?そうすれば、あなたは正しい場所にいます! この投稿では、Twitter APIと対話し、特定のキーワードを検索したり、自動返信を送信したりできるプログラムを作成する方法を段階的に説明します。 始めましょう! セットアップ まず、twitterをインストールする必要があります 宝石。この手順は非常に簡単です: gem install twitter その後、https://apps.twitter.com/にアクセスして、新しいアプリケーションをセットアップする必要があります。これを行うには、右側の[新し
-
Rubyメタプログラミング:実際の例
以前にRubyメタプログラミングについて読んだことがあるかもしれません。 しかし… 具体的な例がいくつかない場合は、少し混乱する可能性があります。 そのため、この記事では : Rubyメタプログラミングを使用した人気のあるオープンソースプロジェクトをいくつか見ていきます。 次のようなプロジェクト : レール シナトラ ペーパークリップの宝石 それらはすべて、何らかの形式のメタプログラミングを使用しています 。 コードを調べて、彼らが何をしているのかを正確に調べましょう! Railsの例 Railsはメタプログラミングを多用しているため、探し始めるのに適した場所です。 例
-
加重乱数を生成する方法
乱数は通常、「一様分布」と呼ばれるものに従います。つまり、いずれかの番号が選択される可能性が同じです。 ただし、一部の数値を他の数値よりも頻繁に選択する場合は、別の戦略が必要になります。加重乱数ジェネレーター 。 いくつかの実用的なアプリケーションは次のとおりです。 ビデオゲームの戦利品テーブル。敵はさまざまなドロップ率でさまざまなアイテムをドロップできます。 より多くのチケットを持っている人が勝つチャンスが多いラッフル。 シンプルな戦略 ラッフルの例を考えると、明らかな解決策を思いつくことができます。「チケット」ごとにアイテムのコピーが1つある配列を生成します。 たとえば、ジョン
-
Ruby標準ライブラリからの5つの有用な例
Ruby標準ライブラリは、Rubyに付属しているが、言語自体の一部ではない一連のモジュールとクラスです。 これらのクラスは、次のようなさまざまなユーティリティを提供します。 Base64エンコーディング 素数の生成 DNS解決 この記事では、これらのクラスのうち5つを役立つ例とともに紹介します。 Rubyロガークラス エラーやデバッグメッセージをログに記録する必要がある場合は、Rubyが Loggerでカバーしています。 クラス。 このクラスは、ロギングを開始するために必要なすべてを提供します! Loggerを使用するには クラスでは、 Loggerを簡単に作成できます オブジ
-
Ruby Ranges:どのように機能しますか?
Rubyの範囲とは何ですか?どのように機能しますか? 範囲は、開始値と終了値を持つオブジェクトであり、これら2つの値の間の範囲全体にまたがるシーケンスを作成するのに役立ちます。 1から行くことができます 20へ 、または aから zへ 。 この記事では、次のことを発見します : Ruby範囲を作成する方法 stepの使用方法 & include? Rubyのメソッド 範囲が内部でどのように機能するか やってみましょう! 範囲を理解する 念のため、Rubyの範囲の構文は次のようになります。 (1..20) Rangeを定義するために括弧は必要ありません 。 ただ
-
Rubyプロジェクトのアイデア:独自のLinuxツールを構築する
一緒にプロジェクトを作りましょう! psなどのLinuxツール 、top &netstat 素晴らしいです。 システムで何が起こっているかについて多くの情報を提供します。 しかし、それらはどのように機能しますか? 彼らはどこからすべての情報を入手しますか? これを使用して独自のツールを構築するにはどうすればよいですか? この投稿では、3つの人気のあるLinuxツールを一緒に再作成します。 2×1の食事を取り、Rubyのトリックを学び、同時にLinuxの有用な知識を習得します。 🙂 ステータス情報の検索 それでは、これらすべてのツールが情報をどこで見つけるかという質問に答えてみま
-
25行のRubyコードでシェルを書く
LinuxまたはMacを使用している場合は、ターミナルを開くたびにシェルアプリケーションを使用しています。 シェルは、システムでコマンドを実行するのに役立つインターフェースです。 シェルは環境変数をホストし、コマンド履歴やオートコンプリートなどの便利な機能を備えています。 あなたが内部で物事がどのように機能するかを学ぶのが好きな人なら、この投稿はあなたにぴったりです! シェルはどのように機能しますか? 独自のシェルアプリケーションを構築するために、シェルが実際に何であるかを考えてみましょう。 まず、プロンプトが表示され、通常は現在のユーザーや現在のディレクトリなどの追加情報が表示され
-
Rubyで数値がどのように機能するか:整数、浮動小数点数、およびBigdecimalを理解する
Ruby2.4はFixnumをマージしました &Bignum 同じクラスに(Integer )ですから、Rubyのさまざまな数値タイプを確認する良い機会だと思います! それがこの投稿で話し合うことです🙂 数値タイプの概要 まず、Rubyのすべての関連クラスのクラス階層を見てみましょう。 Numeric Integer Fixnum Bignum Float Complex Rational BigDecimal (Standard Library) ご覧のとおり、Numeric classは、すべての数値クラスの親です。 ancestorsを使用
-
Rubyで独自のWebサーバーを構築する
Rubyを使用して独自のWebサーバーを構築したことがありますか? すでに次のような多くのサーバーがあります: プーマ 薄い ユニコーン しかし、これはすばらしい学習演習だと思います 単純なWebサーバーがどのように機能するかを知りたい場合。 この記事では、これを行う方法を学習します。 ステップバイステップ! ステップ1:接続をリッスンする どこから始めますか? 最初に必要なのは、TCPポート80で新しい接続をリッスンすることです。 Rubyでのネットワークプログラミングについての投稿をすでに書いたので、ここではそれがどのように機能するかを説明しません。 コードをお渡ししま