tusbasaのブログ

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

【Nuxt.js】contextとは

Nuxt から Vue コンポーネントに追加のオブジェクト/パラメータを提供する。 asyncData 、fetch 、plugins 、middleware そして nuxtServerInit のような特別な Nuxt ライフサイクル内で使用できる

<script lang="ts">
import { fetch } from '@nuxtjs/composition-api'
...
export default defineComponent({
  fetch(context) {
    console.log(context);
    },
<ref *1> {
  isStatic: false,
  isDev: true,
  isHMR: false,
  app: {
    head: [Function: head],
    router: VueRouter {
      app: [Vue],
      apps: [Array],
      options: [Object],
      beforeHooks: [],
      resolveHooks: [],
      afterHooks: [],
      matcher: [Object],
      fallback: false,
      mode: 'abstract',
      history: [AbstractHistory],
      resolve: [Function (anonymous)]
    },
    nuxt: {
...

以下のキーも参照できる

const {
    app,
    store,
    route,
    params,
    query,
    env,
    isDev,
    isHMR,
    redirect,
    error,
    $config
  } = context

以下のような形でカスタムプロパティを追加できる takacc.hatenadiary.jp

参考

techblog.roxx.co.jp

v2.nuxt.com

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

  • プロセスとは

    • OSが実行しているプログラムのインスタンス
    • 各プロセスは同じメモリ領域を一切共有しない
  • スレッドとは

    • CPUから見たプログラムの「実行単位」
    • プロセスに含まれる
    • プロセス内の同じメモリ領域を共有する

マルチスレッド環境で適切なメモリ管理を行うことをスレッドセーフと呼ぶ

参考

webpia.jp

【AWS】EFSについて

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

  • マウントターゲット

  • アクセスポイント

    • クライアントからEFSをマウントする際のディレクトリや権限を指定する
    • EFSの特定の領域のみクライアント側からアクセスさせることができる
    • NFSクライアントによって使用されるユーザー ID とグループ ID を上書きできる
  • ユーザーの指定

    • デフォルトでは、ルートユーザー (UID 0) のみが読み取り/書き込み/実行のアクセス許可を持つ
      • この為、書き込みを行う際はアクセスポイントを使用する必要があるかも(ユーザーID=0を指定してユーザーIDを上書きする)
      • NFSクライアント側で実行ユーザーがルートユーザーであることを確認したが、アクセスポイントを使用しないと書き込みが行えなかった(要調査)

参考

qiita.com

blog.serverworks.co.jp

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

プライベートネットワーク内での名前解決の仕組み。 ECSのサービスに対してDNS名を付与する。(DNS名はサービス名+名前空間名) DNS名の付与に関しては裏でaws cloud mapとroute53が使われている。 DNS名とプライベートIPアドレスが紐づいている。 ECSのサービス間だけではなくEC2インスタンス、lamda関数などに対しても使用できる。

参考

blog.serverworks.co.jp

カバレッジの種類

Statement coverage、Branch coverageを参考にすると良さそう(simpleCov、jestの場合Condition Coverageはデフォルトでは測定できない)


  • Statement Coverage

    • プログラム内の各命令が実行されたかの網羅率(命令網羅率)
    • 三項演算子の条件分岐は見れない
  • Branch Coverage

    • ifやcaseなどの全ての分岐の処理が実行されたかの網羅率
    • 各決定ポイント( if 文など)の真と偽の両方のパスがテストされたかどうかを測定
    • if(a > 0 && b > 0) の場合4通りの条件があるが、全体がtrueとfalseの2通りテストした場合100%になる
  • Function Coverage

    • プログラム内の各関数が呼び出されたかの網羅率
    • 関数が一度でも呼び出されれば良い
  • Line Coverage

  • Condition Coverage

    • 各決定ポイント内の各個別条件が独立して true と false の両方の値を取るかどうかを測定
    • if(a > 0 && b > 0) の場合2通りの条件のテストが必要
      • (a = -1, b = 1) , (a = 1, b = -1) この2条件でテストすれば100%になる
  • multipule Condition Coverage

    • 各決定ポイント内の各個別条件の組み合わせ全ての網羅率
    • if(a > 0 && b > 0) の場合4通りの条件のテストが必要
    • 条件の組み合わせは 2^各個別条件数必要になる


参考

www.qbook.jp

www.youtube.com