Entries from 2021-01-01 to 1 year

iOSライブラリ管理ツール「CocoaPods」について

CocoaPodsとは iOS/Mac向けのアプリを作成する際のライブラリ管理をしてくれるもの。Rubyで作られている。 これによって、プロジェクトに必要なライブラリの管理を簡潔にできる。 PodfileとPodfile.lockの違い Podfile・・・プロジェクトファイルが存在する…

AWS ECSにおける重要用語

ECSにおける単語の説明 クラスター 複数のEC2インスタンスで構成されている。ECSはクラスター全体でのCPUやメモリの使用量を把握するようにしている。 コンテナインスタンス ECSでは、クラスター管理下にあるEC2インスタンスをコンテナインスタンスと呼ぶ。 …

コンテナとコンテナオーケストレーション

参考サイト AWS Fargateとは?Amazon ECSとの関係性やメリット・デメリットを解説|コラム|クラウドソリューション|サービス|法人のお客さま|NTT東日本 コンテナ そもそもアプリケーションが実行されるには、ソースコードの他にもgemのようなライブラリ…

AWSのlambdaとECS taskについて

参考サイト AWS Batch, Lambda, ECS Task 比較:バッチやジョブにはどれを使う? - Timers Tech Blog Lambda も Batch も ECS Task も、何かのジョブを単発/定期でサーバー無しで実行するための手段として似ている。これらの特徴やメリット/デメリットの比較…

ActiveSupport::Concernモジュール

参照元 ActiveSupport::Concern でハッピーなモジュールライフを送る | TECHSCORE BLOG Active SupportはRuby on Railsのコンポーネントであり、Ruby言語の拡張、ユーティリティ、その他横断的な作業を担っている。言語レベルで基本部分を底上げして豊かなも…

モジュールと名前空間

モジュールには名前空間を分けて、名前の衝突を防ぐ機能がある。 例えば、「ポイント履歴」と「活動履歴」という意味で2つのHistoryクラスが作成されたとする。 class History def initialize(payment, used_point, user_id) @payment = payment @used_point…

LDAP((Lightweight Directory Access Protocol))

参考サイト qiita.com LDAPは正式名称はLightweight Directory Access Protocolという。ディレクトリデータベースへアクセスするためのプロトコル。「ディレクトリサービスへとアクセスするためのプロトコル」である。 ディレクトリサービスとはネットワーク…

ssh-agentのまとめ

参考サイト ssh-agentを使って公開鍵認証方式のsshパスワード入力を省略する方法 | server-memo.net ssh-agentとは 公開鍵認証方式による認証を行っているSSHサーバへ接続する際、秘密鍵に設定されているパスフレーズの入力を代わりにやってくれる(秘密鍵と…

リフレッシュトークン

GoogleアカウントやLINEアカウントなどで、他のアプリのサービスを認証するOAuth 認証を使用している場合、リフレッシュ・トークンを有効にできる。 そもそもトークンとは、ユーザー・クライアントがアクションを実行すべく必要な認証情報である。一般的にjs…

Ruby / Railsにおけるメモリを意識した実装

Rubyとメモリ Rubyのクラスによっては、メモリ割り当てがないのもある。 nil, true, false, 一部のIntegerがそれにあたる。 [325] pry(main)> ObjectSpace.memsize_of(nil) => 0 [328] pry(main)> ObjectSpace.memsize_of(12) => 0 [330] pry(main)> ObjectS…

モジュールのミックスイン

モジュールは様々な用途で使われる。主に以下のような使い方がある。 継承を使わず、クラスにインスタンスメソッドを追加または上書きする。 複数のクラスに共通の特異メソッド(クラスメソッド)を追加する クラス名や定数名の衝突を防ぐために名前空間を作…

New Relicに関するメモ

New RelicはAPM(Application Performance Management。日本語では「アプリケーションパフォーマンス管理ツール」と呼ぶ)である。 New Relicによって、インフラストラクチャ・バックエンド・クライアントサイドの性能を分析するための重要な情報を収集する…

特異メソッド

特定のオブジェクトにだけ紐づくメソッドのことを特異メソッド(singleton method)と呼ぶ。 例えば、以下のような事例。 nakata = "私は中田" suzuki = "私は鈴木" def nakata.show puts "これは特異メソッドです" end nakata.show => これは特異メソッドで…

既存の演算子の再定義と既存クラスの継承

既存の演算子の再定義 Rubyでは一見演算子に見えて、メソッドとして定義されているものがある。 == === + - > < これらはクラスごとに再定義可能である。どの演算子が再定義できる、できないかは公式ドキュメントで確認すること。 例 class User def ==(val)…

クラス構文直下のメソッド呼び出し

Rubyでは、メソッドの定義がなくてもクラス構文で書いたコードを実行できる。 class Foo def self.bar puts "pul2" end # これよりも上にクラスメソッドを定義しておく self.bar end => pul2 class Foo 3.times do puts "pul4" end end => pul4 => pul4 => p…

クラスにおける定数

Rubyのクラスの定数であるが、アルファベット大文字・数字、アンダースコアで構成されるのが多い。 例 USER_NUMBER = 10 COUNTRY_NUMBER = {japan: 10, india: 20, spain: 30} 定数はインスタンスメソッドからでもクラスメソッドからでも、参照できる。 clas…

非同期処理(Promise, async/await)

ポーリング フロント側からサーバーに対して一定間隔にhttpリクエストを投げる処理。 サーバから新しい情報を取得する目的で利用する。 Promsie 非同期処理を行う最も代表的なオブジェクト。 PromiseにはPromiseStatusという状態があって3種類ある。 pending…

APIの概要や設計

APIのエンドポイントにアクセスする主なHTTPメソッドは以下のとおり。 GET -> データの取得 POST -> 指定したリソースに実体を送信するために使用。サーバー上の状態を変更したり、副作用が発生したりすることがよくある。新規登録やコメント投稿などに使う…

書籍「入門 監視 モダンなモニタリングのためのデザインパターン」のまとめ

メトリクスは高頻度で取得する 最低でも1分に1回はメトリクスを取得すること。トラフィックが多いなら、10秒や30秒に1回は取得する。 メトリクスは2種類ある カウンタ・・・増加していく指標。車の走行距離とか。サイト訪問者の累計数とか。 ゲージ…

Active Record ModelのActive Record Relationの違い

Active Record Model User.find(10) User.last User.find_by(id: 10)など単体のはActiveRecord::Modelのインスタンス。 ActiveRecord::Relation User.allやUser.where(name: "taro") などで複数で返ってくるものが ActiveRecord::Relation のインスタンス。U…

pluckとmapの違い

そもそもCar.find(12)と実行された時、以下のようなことが起こっている。 与えられたオプションを同等のSQLクエリに変換 SQLクエリを発行し、該当する結果をデータベースから取り出す 得られた結果を行ごとに同等のRubyオブジェクトとしてインスタンス化する…