tusbasaのブログ

業務や勉強中に調べたことを自分用にメモするブログ

【オブジェクト指向】リスコフの置換原則

サブクラスはそのスーパークラスと置換可能であるべき すべてのサブクラスはスーパークラスのすべての振る舞いを持つべき 参考 Sandi Metz. オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方 (Japanese Edition)

【http】レスポンスヘッダーのLocationとは

Location レスポンスヘッダーはリダイレクト先の URL を示します。 3xx (リダイレクト) または 201 (created) ステータスレスポンスを返すときのみ意味を成します。 絶対パス、相対パスどちらでも可能 参考 developer.mozilla.org

【Nuxt.js】staticディレクトリ

/static の内容が /.nuxt ディレクトリにコピーされることはない。 /static の内容は、本番環境でそのままルートからアクセスできるようにサーバーから直接提供される。 参考 aik0aaat.hatenadiary.jp 参考 moneyforward-dev.jp .nuxt ディレクトリにはWebpa…

【rails】privateメソッド

privateメソッドを呼び出す時は、レシーバは指定できない。 自分(self)以外のオブジェクトのメソッドを呼び出すには、レシーバを指定する必要がある。 → クラス外部から呼び出せない private def _private_method p "aa" end => self.private_method # こ…

【Nuxt.js】serverMiddlewareでpathを設定する際の注意点

nuxt.config.jsでserverMiddlewareを設定する際、pathを指定できる。 handlerとして呼びだされるファイルの中でNode.jsのHTTPリクエストオブジェクトを使用してreq.urlを表示するとserverMiddlewareのpathで指定した部分は除外されている。 nuxt.config.js s…

【Javascript】ES6 exportとimport

named export モジュール(ファイル)ごとに複数のexportを行う default export モジュールごとに1つのexportを行う デフォルトエクスポートは一つのファイルにつき一つしか存在できない。 インポートの仕方が異なる [named export] // prefectures.ts expor…

【オブジェクト指向】単一責任の原則

単一責任のメリット 変更が容易 再利用が可能 (着脱可能なユニットになっている為) クラスが単一責任か見極める方法 クラスの持つメソッドを質問に言い換えたときに、意味を成す質問になっているか確認する。 メソッドが単一責任か見極める方法 役割が何であ…

【Ruby】Struct

簡易的なクラスを作成できる。 構造体のメンバに対するアクセスメソッドが定義されている。 User = Struct.new(:name, :age) user = User.new("taro", 20) user.name => "taro" user.age => 20 複雑なデータ構造を振る舞いに変換する際に便利。 「振る舞いに…

【Ruby】継承とmixin

継承したクラスとmixinしたモジュールではmixinした方のメソッドが先に呼び出される。 参照 qiita.com

【javascript】async

asyncキーワードを使って関数を定義した場合返却される値は必ずPromiseになる。(Promiseにラップされた値が返る) 返された値を利用したい場合は、その関数の呼び出しに対してawaitを使うか、thenメソッドを使ってその値を利用することができる。 async fun…

【javascript】Promise.all

引数にPromiseを返す非同期処理を配列形式で複数渡せる。全てのPromiseが解決された時、または1つでも拒否された時に単一のPromiseを返す 。複数の処理を並列で実行して全てが完了した時に次の処理に進みたい場合に便利。 参考 zenn.dev

【terraform】リソースの矛盾とエラー

terraformでは3箇所でリソースの状態を記録している。 stateファイル (s3に保存 terraform state listで管理しているリソースを確認できる) aws本番のリソース terraformのコード 本番とstateファイルで差異が出るとエラーの原因になる。(コンソールから…

【terafform】terraform.tfvars

ファイル名はterraform.tfvars固定。 variableを使って変数定義を行った変数に対して、指定の値をセットする。 variableで定義していない変数は扱えないので注意。 参考 zaki-hmkc.hatenablog.com

【Javascript】オブジェクトリテラルの省略記法

JavaScriptのオブジェクトリテラルでは、プロパティ名と変数名が一致する場合、その変数の名前を一度だけ記述することでプロパティ値を定義できます。 const company = { name: 'google', location: location, } const company = { name: 'google', location…

jest学習サイト

参考 zenn.dev

webページ表示に関して

参考 tadtadya.com

【git】カレントブランチの派生元確認

git show-branch | grep '*' | grep -v "$(git rev-parse --abbrev-ref HEAD)" | head -1 | awk -F'[]~^[]' '{print $2}' 参考 qiita.com

【TypeScript】is演算子

引数名 is 型 で定義。 関数は真偽値を返します。 そして true を返す時は、引数の型が特定の型であることを保証する。 urlAry.filter((item): item is { url: string; name: string; priority: number } => item !== null) 参考 note.affi-sapo-sv.com

【Nuxt.js】パス生成時の注意  絶対パスはスラッシュつける

nuxt-linkでパスを設定する際に最初にスラッシュ/がないと、相対パスと認識されて現在のパス + to オプションで設定したパスが設定されてしまう

ホストベースルーティング

HTTP リクエストの Host ヘッダフィールドは、アクセスしたい URI とポートの情報をもちます。 サーバーは単一の IP アドレスについて複数のホストネームを持つことができます。どのホストネームでリソースを要求されたかによって、提供するリソースを振り分…

【Nuxt.js】browserBaseURL

クライアト側からバックエンド側のAPIを叩く場合など、リクエストに使うベースのURLを指定 参考 blog.cloud-acct.com

【AWS】ALB 

リスナールール 送信対象はターゲットグループ ALBはDNS名を持つ

【Javascript】?. オプショナルチェーン

オブジェクトのプロパティが存在しない場合でも、エラーを起こさずにプロパティを参照できる安全な方法。 ネストしたオブジェクトにも使用できる。 const book = undefined; const title = book?.title; console.log(title); undefined const book = undefin…

【TypeScript】keyof

型に対して使用する。 オブジェクト型のプロパティ名(key名)を取得 する。 type someType = { foo: string; bar: string; baz: number; } const someKey: typeof someType; // someKey: 'foo' | 'bar' | 'baz' 参考 qiita.com

【メソッド命名】

Bool値を返すメソッドの命名規則とは、「オブジェクトを主語とした命題の述語」である。 例えば、オブジェクトが承認済みか確認するメソッドの場合には、「Object is approved.(オブジェクトは承認された)」が命題となります。この命題が真(承認済み)の…

【設計】単一責任の原則

クラスは責務を一つにする。 クラスの中で条件分岐を増やさない。 改修する時に責務が一つではない場合、改修したい部分以外にも考慮しなければならない点が出てきて、改修が難しくなる。

【Nuxt.js】パスパラメータを取得する

// template内 // パスパラメータを取得 {{ $route.params.id }} // クエリパラメータを取得 {{ $route.query.id }} // script内 this.$route.params.id this.$route.query.id 参考 qiita.com codelikes.com developer.mamezou-tech.com blog.microcms.io

【Nuxt.js】カスタムルーティング

nuxt.config.jsでextendRoutesプロパティを使って設定する。 参考 ti-tomo-knowledge.hatenablog.com devsakaso.com vlike-vlife.netlify.app blog.naoty.dev

【SQL】union

sqlの結果を縦に結合する。 カラム名と型が同じであることが必要。カラム名が違う際はasで別名を付けて同一の名前でselectすれば良い。 unionは同じ結果であれば重複を除外する。union allは除外しない。 同じ構造の別テーブルのデータを結合するのにも使え…

【Nuxt.js】$axiosを使えるようにする

npm install @nuxtjs/axios // nuxt.config.js export default { modules: ['@nuxtjs/axios'] } 参考 qiita.com