Skip to content

Instantly share code, notes, and snippets.

View yukikim's full-sized avatar
😵
It is busy

takayuki_kimura yukikim

😵
It is busy
View GitHub Profile
@yukikim
yukikim / note.md
Created November 17, 2024 22:18
2つのオブジェクトを比較

JavaScriptで2つのオブジェクトを比較し、一方に存在しないプロパティや値を特定するには、以下のような方法を使えます。具体的には、オブジェクトのキーをループで調べる方法や、再帰的に比較する関数を作る方法があります。

以下は、基本的なプロパティの比較を行う例と、再帰的に比較する例を示します。


1. 基本的なプロパティの比較

以下の関数では、片方のオブジェクトに存在して他方にないプロパティを特定します。

@yukikim
yukikim / note.md
Last active November 17, 2024 17:02
特定のプロパティを使用して値を検証

TypeScriptで、特定のプロパティを使用して値を検証し、結果をbooleanとして取得するには、関数を定義して実現します。このとき、型安全性を確保しながら特定のプロパティを検証するために、keyofやインデックス型クエリを使用します。

以下に具体的な例を示します。

例: プロパティ値の検証

interface User {
  id: number;
  name: string;
@yukikim
yukikim / sample.md
Created November 16, 2024 09:19
Typescript mapの型など

マップ型を設定する3つの方法

type Things = Map<string, ThingValue>;

interface ThingValue {
  label: string;
  count: number;
}
@yukikim
yukikim / info.md
Last active November 15, 2024 07:58
log設定log4js

log.ts

import log4js from "log4js";
import path from "path";
import util from "util";

const logDirectory = path.join(process.cwd(), "logs");
const logLayout = {
  type: "pattern",
@yukikim
yukikim / note.md
Created November 15, 2024 04:03
fetchでpino

fetchで行うリクエストの前後にpinoを利用して、リクエスト内容やレスポンス、エラーのログを記録する方法を紹介します。fetchは通常クライアントサイドで使用されますが、Node.js環境でもnode-fetchなどを使えば同様に使用可能です。

以下に、pinoを使ってfetchリクエストをラップする方法を解説します。

1. 必要なライブラリをインストール

Node.js環境でfetchを使用する場合は、node-fetchをインストールします。また、pinoをインストールして、ロギング機能を追加します。

npm install pino node-fetch
@yukikim
yukikim / note.md
Created November 15, 2024 03:36
pino使い方

pinoexpress.jsアプリケーションに組み込むことで、リクエストごとのログやエラーログなどを効率よく管理できます。以下では、express.jspinoを使った詳細なログ管理の方法を紹介します。

1. pinopino-httpのインストール

pinoに加えて、express.jsに特化したpino-httpというミドルウェアを利用します。これにより、HTTPリクエストやレスポンスに関するログを簡単に記録できます。

npm install pino pino-http
@yukikim
yukikim / sample.md
Created November 14, 2024 15:35
express.js 非同期データを返す

fetch を使って非同期でデータを取得する場合も、同様に async/await を使います。fetch はブラウザでは直接使えますが、Node.js で使用する場合は node-fetch のようなパッケージが必要です。以下に例を示します。

1. 必要なパッケージをインストール

Node.js 環境で fetch を使用するために node-fetch をインストールします。

npm install node-fetch
@yukikim
yukikim / log.md
Created November 14, 2024 11:57
node ログ管理

Node.js でログ管理をするためのおすすめのモジュールとしては、winstonpinoがよく使われます。それぞれの特徴と基本的な使い方について解説します。

1. winston の概要と使い方

winston は、柔軟で多機能なロガーライブラリで、以下の特徴があります。

  • ログレベル: デフォルトで6つのログレベル(error, warn, info, http, verbose, debug)が用意されており、目的に応じたログの詳細度を設定できます。
  • トランスポート: ログをファイル、コンソール、データベースなど、複数の場所に出力できます。
  • フォーマット: JSON形式や独自フォーマットなどでログを出力できます。
@yukikim
yukikim / sample.md
Created November 14, 2024 07:46
React非同期コンポーネント

TypeScript と React を使って非同期 (async) コンポーネントを作成する方法について説明します。非同期処理が必要な場合、通常は API リクエストやデータフェッチを行うことが多いです。このため、非同期コンポーネントを作成するには、React の useEffectuseState フックを利用して、非同期処理をコンポーネント内で管理することが一般的です。

以下に、非同期コンポーネントの作成手順を示します。

1. 基本的な非同期コンポーネント

非同期データを取得する最も一般的な方法は、useEffect フックを使用してデータを取得し、useState フックでそのデータを保持することです。

import React, { useEffect, useState } from 'react';
@yukikim
yukikim / sample.md
Created November 14, 2024 07:29
Node jsonToCsv

TypeScript と Node.js を使って JSON データを CSV に変換する方法について解説します。

以下では、json2csv ライブラリを使って簡単に JSON を CSV に変換する方法を紹介します。

1. json2csv ライブラリのインストール

json2csv は、Node.js の環境で JSON を CSV に変換するための人気のライブラリです。