tusbasaのブログ

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

2023-01-01から1年間の記事一覧

IPアドレスを知る方法

google chromeの開発ツールでネットワークタブを使用する。 digコマンドでもIPアドレスを知ることができる。しかしサブディレクトリでサーバーが異なる場合は調査できない。(DNSプロトコルを使用している為) 参考 atmarkit.itmedia.co.jp

【Nmap】

ネットワーク探索やセキュリティ監査に使用されるオープンソースツール ポートにSYNフラグをたてたTCPリクエストをサーバに送信します。サーバはポートが開いていた場合、SYN+ACKをNmap側に返します。この時、Nmapはそのポートが開いていると判断し、ACKをポ…

【Nuxt.js】関数の依存とテストのしやすさ

composition apiでロジックを別ファイルに切り出して実装している。 関数Aを一つ定義して、そのプロパティとして関連する関数を複数定義する際に、プロパティとして定義した関数同士で呼び出す実装は良くない。 単体テストを書く際モックしたくなった場合に…

【javascript】nameプロパティ

Nuxt.jsでcomposition apiを使って開発している際に関数オブジェクトを定義して、そのプロパティに関数を定義することが多いが、その際既存のプロパティ名を上書きしない方が良い。 デバッグの際に紛らわしくなる。 既存のプロパティは他にはlength, prototy…

【Javascript】関数の参照と実行

関数は()をつけないと参照になり、()をつけると実行される function sayHi() { console.log('Hello'); } // 関数の後ろに括弧が無い console.log(sayHi); /* function sayHi() { console.log('Hello'); } */ 参考 tcd-theme.com

【SQL】ALL

副問い合わせに対して比較述語(=、!=、<>、<、<=、>、>=)を使用した比較を一度にすることができる。 すべての条件に一致しているレコードだけを抽出することができる。 副問い合わせでは、複数のカラムを返すようなSELECT文を使用することはできない。 SEL…

【Nuxt.js】contextとは

Nuxt から Vue コンポーネントに追加のオブジェクト/パラメータを提供する。 asyncData 、fetch 、plugins 、middleware そして nuxtServerInit のような特別な Nuxt ライフサイクル内で使用できる。 <script lang="ts"> import { fetch } from '@nuxtjs/composition-api' ... …

プロセスとスレッドの違い

プロセスとは OSが実行しているプログラムのインスタンス 各プロセスは同じメモリ領域を一切共有しない スレッドとは CPUから見たプログラムの「実行単位」 プロセスに含まれる プロセス内の同じメモリ領域を共有する マルチスレッド環境で適切なメモリ管理…

【AWS】EFSについて

Amazon EC2、Amazon ECS、を含む複数のコンピュートインスタンスから同時にアクセスできるファイルシステム。 VPCを選択して作成する。その為同じVPC内からアクセスすることが一般的。異なるVPC間で利用するにはEFS マウントヘルパーを使用してVPC ピアリン…

【AWS】サービスディスカバリ

プライベートネットワーク内での名前解決の仕組み。 ECSのサービスに対してDNS名を付与する。(DNS名はサービス名+名前空間名) DNS名の付与に関しては裏でaws cloud mapとroute53が使われている。 DNS名とプライベートIPアドレスが紐づいている。 ECSのサ…

【MySQL】DAYOFWEEK関数

日付を渡して曜日が返却される DAYOFWEEK( 'YYYY-MM-DD' ) 1=Sunday, 2=Monday, 3=Tuesday, 4=Wednesday, 5=Thursday, 6=Friday, 7=Saturday. 参考 db.yulib.com

カバレッジの種類

Statement coverage、Branch coverageを参考にすると良さそう(simpleCov、jestの場合Condition Coverageはデフォルトでは測定できない) Statement Coverage プログラム内の各命令が実行されたかの網羅率(命令網羅率) 三項演算子の条件分岐は見れない Bra…

【elasticsearch-rails】 import処理の戻り値を取得

importメソッドからブロックを受け取りitemsをキーにしてドキュメントごとの処理の結果を見ることができる Article.import do |response| puts response['items'] end 参考 rubydoc.info

【rails】enum 値取得

enumを設定した属性で元の値を取得するには属性名 + _before_type_castが必要(rails5以降) rails4 user[:role] => 1 だったのが、Rails5だと・・・、 rails5 user[:role] => 'admin' 参考 qiita.com

【rails】__callee__ メソッド

現在のメソッド名を返す aliasが設定されている場合は実行中のメソッド名ではなく呼び出されたメソッド名を返す def foo p __callee__ end alias :bar :foo foo # => :foo bar # => :bar 参考 qiita.com

【rails】aliasメソッド

alias 新メソッド名 旧メソッド名 def aaa puts "aaa" end alias bbb aaa # bbb でaaaメソッドを実行できる 参考 docs.ruby-lang.org

【ruby】ハッシュ、キーワード引数の省略記法

ruby3.1から有効 # ハッシュ h = { x: x, y: y } h = { x:, y: } # キーワード引数 def aa(b: b) puts b end def aa(b:) puts b end 参考 techlife.cookpad.com

【ruby】エンドレスメソッド

ruby3.1からエンドレスメソッドを使えるようになった # エンドレスメソッド def greet = puts 'Hello' # 以前の記法 def greet puts 'Hello' end 参考 secret-garden.hatenablog.com

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

サブクラスはそのスーパークラスと置換可能であるべき すべてのサブクラスはスーパークラスのすべての振る舞いを持つべき 参考 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ファイルで差異が出るとエラーの原因になる。(コンソールから…