-
Rubyでの挿入ソートを理解する
注:これは、Rubyを使用したさまざまなソートアルゴリズムの実装を検討するシリーズのパート4です。パート1ではバブルソート、パート2では選択ソート、パート3ではマージソートについて説明しました。 データを並べ替えるためのさまざまな方法を引き続き検討するため、挿入並べ替えに目を向けます。挿入ソートが好きな理由はたくさんあります!まず、挿入ソートは安定です。 、これは、等しいキーを持つ要素の相対的な順序を変更しないことを意味します。 インプレースアルゴリズムでもあります 、は、並べ替えられた要素を格納するための新しい配列を作成しないことを意味します。最後に、挿入ソートは、すぐにわかるように、実
-
React on Rails:シンプルなアプリの構築
アプリケーションのフロントエンド側全体を構築する企業は、多くの場合、バックエンドを構築するためにRailsなどの同じフレームワークを選択します。長年にわたり、これは最良かつ最も信頼できるオプションでした。 今日、絶えず進化するフロントエンドユニバースにある多数のライブラリとフレームワークにより、開発者はバックエンドとフロントエンドの両方に異なるプラットフォームを選択し、それらを簡単に統合できます。 Reactはフロントエンドのパンゲアの巨人になりました。 Ruby on Railsを使用している場合は、デフォルトのRailsページをReactコード(またはその他のフロントフレームワーク)に
-
Railsのセキュリティの脅威:インジェクション
ユーザーデータを扱う場合は、それが安全であることを確認する必要があります。ただし、セキュリティを初めて使用する場合は、扱いにくく、退屈で、複雑に見える可能性があります。 この記事は、一般的なタイプのセキュリティの脆弱性と、それらがRailsの開発にどのように影響するかについて説明するシリーズの最初の記事です。この地形を通るマップとして、OWASPトップ10Webアプリケーションセキュリティリスクを使用します。 OWASPは、 Open Web ApplicationSecurityProjectの略です。 これは、Web上の重大なセキュリティ問題について世界を教育するために働く専門家のグル
-
Rubyメソッドルックアップを理解する
メソッドを呼び出すとどうなると思いますか?同じ名前の別のメソッドがある場合、Rubyはどのメソッドを呼び出すかをどのように決定しますか?メソッドがどこに格納または供給されているのか疑問に思ったことはありますか? Rubyは、定義された「ウェイ」または「パターン」を使用して、呼び出す適切なメソッドと「メソッドエラーなし」を返す適切なタイミングを決定します。この「ウェイ」をRubyメソッドルックアップパス 。このチュートリアルでは、Rubyのメソッドルックアップについて詳しく説明します。最後に、Rubyがオブジェクトの階層をどのように通過して、参照しているメソッドを判別するかを十分に理解できます
-
RBS、Rubysの新しいタイプ注釈システムを理解する
RBSは、Rubyの新しい型構文フォーマット言語の名前です。 RBSを使用すると、 .rbsという新しい拡張子を持つファイルのRubyコードに型注釈を追加できます。 。次のようになります: class MyClass def my_method : (my_param: String) -> String end RBSで型注釈を提供することにより、次のような利点が得られます。 コードベースの構造を定義するためのクリーンで簡潔な方法。 クラスを直接変更するのではなく、ファイルを介してレガシーコードに型を追加するより安全な方法。 静的および動的タイプチェッカーと普遍的に統合できる
-
Rubyでの新しいプログラミング言語の構築:インタープリター
Githubのフルソース Stoffleプログラミング言語の完全な実装は、GitHubで入手できます。バグを見つけたり質問がある場合は、遠慮なく問題を開いてください。 このブログ投稿では、完全にRubyで構築されたおもちゃのプログラミング言語であるStoffleのインタープリターの実装を開始します。このプロジェクトの詳細については、このシリーズの最初の部分をご覧ください。 これから作成するインタプリタは、一般にツリーウォークインタプリタと呼ばれます。このシリーズの前回の投稿では、トークンのフラットシーケンスをツリーデータ構造(抽象構文木、または略してAST)に変換するパーサーを構築しま
-
Railsのセキュリティの脅威:認証
このシリーズのパート1、インジェクションアタックについて説明しました OWASPトップ10Webアプリケーションセキュリティリスクに関するシリーズの2番目の記事では、認証の失敗とデータ漏洩の脅威の世界に飛び込みます。 具体的には、ハッカーが作成したコードをだまして攻撃を実行し、ユーザーのデータを取得するのがいかに簡単かについて説明します。 ユーザー列挙 :データベースに存在するかどうかを確認するためだけに、可能性のあるユーザーのリストをブルートフォーステストしてログインページを悪用した場合。 弱いパスワード :システムで弱いパスワードが許可されている場合、ハッカーはブルートフォース攻撃を
-
RailsアプリをテストするためのDockerコンテナを設定する
Ruby / Rails開発者として、私たちはテストを書くのが大好きです。テストはソフトウェア開発の不可欠な部分です。優れたテストは、高品質のコードを書くのに役立ちます。これらは開発プロセス全体に付加価値をもたらしますが、テストを適切に管理しないと、速度が低下する可能性があります。不適切に管理されているテストの症状の一部を次に示します。 テストの実行には長い時間がかかります。 テストは信頼性が低く、ランダムに失敗します。 テストはマシンによって動作が異なります。 すべてのテストスイートを実行すると、CIの速度が低下します。 このブログ投稿では、コンテナを使用してテストの信頼性を高める方法
-
Rbenv、RubyGems、Bundlerがどのように連携するかを理解する
Rubyでの依存関係の管理には、通常、プロジェクトが依存するRubyとgemのバージョンを指定することが含まれます。 Rubyでの作業経験では、依存関係のデバッグは私の最大の課題の1つです。多くのものが「うまくいく」ので、失敗は一般的ではありません。ただし、問題が発生した場合、通常、デバッグと修正は不必要に困難になります。この記事では、Rubyの依存関係管理に関連する部分について説明します。これは、これらの奇妙な問題が発生したときにデバッグするのに役立ちます。 ルビーコードの読み込み デフォルトでは、Ruby言語は、他の場所で定義されたコードをロードするための2つの主要なメソッドを提供
-
Railsアプリをサービスオブジェクトでリファクタリングする
サービスオブジェクトは、単一のアクションを実行するRubyオブジェクトです。ドメインまたはビジネスロジックのプロセスをカプセル化します。架空のライブラリアプリケーションで本のインスタンスを作成する必要があると想像してください。プレーンなRailsアプリでは、次のようにします。 class BookController < ApplicationController def create Book.new(*args) end end これは単純なことには問題ありません。ただし、アプリが大きくなるにつれて、アプリを囲む多くの定型文になってしまう可能性があります: cla
-
Railsでのドキュメントワークフローの構築
最新のドキュメントワークフローは、ソフトウェア開発ワークフローとますます絡み合っています。 GitHubまたはJiraでドキュメントの問題を追跡したり、コードコメントやMarkdownファイルにドキュメントを書き込んだりできます。チームの開発者は、テクニカルライターと直接連携している場合もあれば、ドキュメントを個別に作成している場合もあります。多くの場合、ドキュメントはコードリポジトリに保存され、リンターを使用して品質がテストされ、静的サイトで継続的に公開されます。テクニカルライターは最近、 docs-like-codeという用語を作り出しました。 またはdocs-as-code このタイプの
-
Rubyニュースブリーフ(2021年第2四半期)
Honeybadgerの四半期ごとのブリーフィングでは、プログラミングコミュニティの最も重要な開発について最新情報を入手できます。本当に重要なことに集中できるように、ニュースを厳選しています。 イベント:会議や交流会。今後および最近完了しました。 セキュリティ:最近の脆弱性レポート プロジェクト:主要なコミュニティプロジェクトに関するニュース トレンドトピック:みんなが話している大きなトピックの要約 傑出したコンテンツ:他のセクションには収まらなかったが、クールすぎて除外できないコンテンツ。 イベント 4月12〜15日のRailsConf 2021 RailsConfは、Ruby o
-
RailsをAWSLambdaにデプロイする
サーバーレスコンピューティングは、サーバーの管理とプロビジョニングの作業をクラウドプロバイダーに任せるのに役立ち、ほとんどのテクノロジーチームにとって急速に重要になっています。 AWS Lambdaは、多くのテクノロジーチームで使用されているサーバーレステクノロジーの一種です。 AWS Lambdaは、NodeJS、Java、Python、Rubyなどのコアプログラミング言語のほとんどをサポートしています。コアプログラミング言語はサポートされていますが、これらの言語で構築されたフレームワークの一部である機能に依存してサーバーレス関数を実行したい場合があります。この投稿では、AWSLambdaで
-
ActiveRecords#update_countersを使用して競合状態を防止する
Railsは、特定の状況に対応する多くの便利なツールが組み込まれた大規模なフレームワークです。このシリーズでは、Railsの大規模なコードベースに隠されているあまり知られていないツールのいくつかを見ていきます。 シリーズのこの記事では、ActiveRecordのupdate_countersを見ていきます。 方法。このプロセスでは、マルチスレッドプログラムでの「競合状態」の一般的なトラップと、この方法でそれらを防ぐ方法について説明します。 スレッド プログラミングの際には、プロセス、スレッド、そして最近では(Rubyでは)ファイバーやリアクターなど、コードを並行して実行する方法がいくつかあ
-
Rubyでのプログラミング言語の構築:インタープリター、パート2
Githubのフルソース Stoffleプログラミング言語の完全な実装は、GitHubで入手できます。バグを見つけたり質問がある場合は、遠慮なく問題を開いてください。 このブログ投稿では、Rubyで完全に構築されたおもちゃのプログラミング言語であるStoffleのインタープリターを引き続き実装します。以前の投稿で通訳を始めました。このプロジェクトの詳細については、このシリーズの最初の部分をご覧ください。 前回の投稿では、Stoffleのより単純な機能(変数、条件、単項および二項演算子、データ型、コンソールへの出力)を実装する方法について説明しました。今度は、袖をまくり上げて、関数定義、
-
Vue、Vuex、Railsを使用したフルスタックアプリケーションの構築
スケーラビリティを念頭に置いてフルスタックアプリケーションを構築することは、特に、完全なタイプスクリプトをサポートする最新バージョンのVueおよびVuexを使用して構築する場合、威圧的になる可能性があります。この記事では、不健康な家畜への治療の処方を管理するCRUDアプリケーションを探索することで、APIリクエストとデータベースの相互作用を処理するVuex4.0を使用した状態管理からスケーラブルなフルスタックアプリケーションを構築するために知っておく必要のあるすべてを読者に教えます。バックエンドはRailsで構築され、フロントエンドによる統合のために基本的なCRUDAPIを公開します。 ほと
-
RailsでのTailwindCSSの使用
CSSは魔法のようですが、時間がかかります。美しく、機能的で、アクセスしやすいサイトを使用するのは楽しいことですが、独自のCSSを作成するのは大変です。 Bootstrapなどの多くのCSSライブラリは近年爆発的に増加しており、Tailwindは2021年にパックをリードしています。 RailsにはTailwindが付属していませんが、この記事では、TailwindCSSを新しいRubyon Railsプロジェクトに追加する方法を説明します。これにより、設計の実装にかかる時間を節約できます。また、Tailwindのユーティリティクラスを使用した設計のウォークスルーも行います。このチュートリア
-
Rubyの線形回帰で未来を予測する
私たちが行う多くの選択は、数値的な関係を中心に展開します。 科学がコレステロールを下げると言っているので、私たちは特定の食品を食べます 給与が上がる可能性が高いため、教育をさらに進めています。 私たちは、最も価値が高くなると信じている近所の家を購入します どうすればこれらの結論に達することができますか?ほとんどの場合、誰かが大量のデータを収集し、それを使用して結論を出しました。一般的な手法の1つは、教師あり学習の形式である線形回帰です。教師あり学習の詳細と、それがよく使用される例については、このシリーズのパート1をご覧ください。 線形関係 2つの値の場合—それらをxと呼びます およ
-
Railsのパフォーマンス:適切な選択を行うのはいつですか?
プログラミング用語では、キャッシングとは、将来すばやく取得できるように1つまたは複数の値を格納することを指します。通常、これは、何らかの理由で計算が遅い値を使用して行います。たとえば、取得するために外部APIをヒットする必要がある場合や、生成するために多くの数値計算が必要になる場合があります。 キャッシュされた値は、多くの場合、memcachedやRedisなどの別のサーバーに保存されます。それらはディスクまたはRAMに保存できます。コードでは、高価な関数を何度も呼び出さないように、変数内にデータを「キャッシュ」することがよくあります。 data = some_calculation()
-
Rubyでおもちゃのプログラミング言語を構築する
プログラミング言語は素晴らしいが神秘的なツールだと思いますか?彼らのフードの下を覗いて、何が彼らを機能させるのかを理解する機会が与えられたらどうしますか?手を汚してプログラミング言語をゼロから開発することに興味がある場合は、このブログ投稿とこのシリーズの次の投稿が役立ちます。 一連の記事では、非常に単純なインタプリタで動的に型付けされたプログラミング言語を段階的に構築します。ただし、今のところ、これらの用語の正確な意味について少し不確かな場合や、目前のタスクに少し不安を感じている場合でも、心配する必要はありません。素敵なRubyプログラミング言語を使用してインタープリターを実装し、各ステップ