constアサーション「as const」とreadonlyの違い

オブジェクトの末尾にconstアサーション「as const」をつけると、オブジェクトすべてのプロパティに「readonly」がついた状態になる。「as const」がついたオブジェクトのプロパティに、再代入はできない。 const foo = { nation: "India", sex: "male", nam…

【Swift】RxSwift

主な特徴として、値変化の検知や非同期処理を簡単に書けるというものがある。UI変更の検知やAPIで取得した値の検知などが書きやすくなる。メソッドチェーンでかける。 例えば、以下の場合、ボタンが増えるに従い、IBActionも増えて可読性が低下する。RxSwift…

【Swift】コレクションに関する処理

for -in- > 終了値を含まない for i in 1..<4 { print("i: \(i)") } => i: 1 i: 2 i: 3 for -in- > 終了値を含む for i in 1...4 { print("i: \(i)") } => i: 1 i: 2 i: 3 i: 4 for-in コレクション let arrayData = [3, 5, 8, 10] for data in arrayDat…

プロトコル

プロトコルとは型が特定のプロパティやメソッドを持つために必要なインターフェースを定義するものである。プロトコルが要求するインターフェースを型が満たすことを準拠と呼ぶ。 定義方法と準拠方法 protocol User { func printName() } struct JapaneseUse…

構造体・クラス・列挙型

構造体 値型の一種。ストアドプロパティの組み合わせで、一つの値を示す。 構造体のプロパティを変更することは、その構造体を別の値にすることであり、変数への再代入が必要である。 struct User { let name = "Murata" let age = 20 } 定数のストアドプロ…

型の構成要素

Swiftの型には、 クラス 構造体(struct) 列挙型(enum) の3種類がある。標準ライブラリの型の多くはstructで実装されている。 型に共通する要素 型が持つ値を保存するプロパティ(型に紐づく変数や定数) 振る舞いを示すメソッド(型に紐づく関数) 初期…

AppDelegateのまとめ

AppDelegateはアプリの起動や終了といったライフサイクルを司る重要な仕組み。 AppDelegate.swift Xcodeでプロジェクトを生成した時点で自動生成されるファイルの一つであり、アプリ全体のライフタイムイベントを管理するためにAppDelegateクラスが記述され…

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オブジェクトとしてインスタンス化する…

ruby における配列操作

簡単なまとめ 一つ目の引数にインデックスを、二つ目の引数に取得したい要素の数をいれると、そのインデックスから引数分だけ要素を取得する。 a = [0, 1, 2, 3, 4, 5] a[2, 2] #=> [2,3] 要素数を指定した代入 a = [0, 1, 2, 3, 4, 5] a[1, 3] = "a" #=> [0…

I18nとlocale

I18nとは、ある言語の文言を別の言語の文言に翻訳してくれる機能のこと。 多言語化以外にも、何度も使う文言を一限管理するために使われる。 住所、会社名、時間をフォーマットする時の形式、今日の日付を出力する時の形式などを管理する。 まずconfig/appli…