Node.js関連のことを調べてみた

Node.js関連のことを調べてみた

[paiza]野球の審判

# だんだんやる気が。。。
千葉大会の市船の決勝戦、監督が直接審判とやり取りできないからって、キャプテンの子が審判と監督の間を行ったり来たりの板挟み状態で、これは将来立派な中間管理職になれそうですね!
ってか、オリンピックもそうだけど、これだけカメラだったりAIの技術が上がったんだから、誤審して叩かれる人間の審判ってもういらなくね?

あとサッカーの超演技的痛がり方はもはや芸術の域だよね!
あんなに痛がってたのに、数秒で立ち上がってプレー再開できるとか超人なのか?

https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire

# 面倒くさいので画面パタメータをListでもらった後のFunctionだけ
ちなみに引数のListを作ってる箇所は[こっちの記事](https://qiita.com/AsilHatake/items/842548e48ae4a0eae119)に書いてあるYO!!

“`javascript:umpire.js
// [問題文(原文)]
// 野球の各打者はストライクが 3 つたまるとアウトと

元記事を表示

[paiza]宝くじ (paizaランク C 相当)

# Cランク解いてイキりたい
サマージャンボが当たったら、フルテレOKな会社に転職して、犬のブリーダーやりたい。。。
こんなクソ暑い中、~~コロってても~~出社を推進してくる会社があるとか頭おかしいよね~

https://paiza.jp/works/mondai/c_rank_skillcheck_archive/lottery

# 面倒くさいので画面パタメータをListでもらった後のFunctionだけ
ちなみに引数のListを作ってる箇所は[こっちの記事](https://qiita.com/AsilHatake/items/842548e48ae4a0eae119)に書いてあるYO!!

“`javascript:lottery.js
// [問題文(原文)]
// 今年もパイザ宝くじの季節がやってきました。パイザ宝くじ券には 100000 以上 199999 以下の 6 桁の番号がついています。毎年1つ当選番号 (100000 以上 199999 以下)が発表され、当たりクジの番号が以下のように決まります。
//
// 1等:当選番号と一致する番号
// 前後賞:当選

元記事を表示

Backlog Gitリポジトリの更新をトリガーに、Amazon S3にコンテンツを自動でアップロードする

# はじめに

## この記事の概要

この記事では、タスク管理ツールBacklogのGitリポジトリとAmazon S3(以下、S3)との連携方法についてまとめています。
流れとしては、Backlog GitリポジトリのWebフックを使用して、リポジトリの更新をトリガーにLambda関数が実行されるようにします。そして、Lambda関数がS3にファイルアップロード処理を行います。
この一連の流れの具体的な構築方法や注意点をまとめています。

## BacklogのGit機能について

[Backlog](https://backlog.com/)はタスク管理ツールです。そして、その機能の一つにGit機能があります。
ソースコード管理といえば、IT業界全体では、おそらくGitHubを使用しているチーム(人)が多いと思いますが、タスク管理にBacklogを使用しているケースでは、タスクとソースコードの紐付けが行いやすかったり、タスク管理とソースコード管理(他にもWiki機能もあるのでドキュメント管理なども)を一元化できるなどのメリットがあります。

このGit機能は基本的には特に不自由な

元記事を表示

【Docker Compose】Node.js / TypeScript / MySQL の Docker 開発環境構築

# はじめに
この記事では、Docker Compose を利用した Node.js / TypeScript / MySQL の Docker 開発環境構築手順について記載します。

https://docs.docker.com/compose/

# 開発環境
開発環境は以下の通りです。

– Windows11
– Docker Engine 27.0.3
– Docker Compose 2
– MySQL 9.0.0
– Node.js 20.15.1
– npm 10.8.2
– @types/node 20.14.11
– ts-node 10.9.2
– TypeScript 5.5.3

# Node.js / TypeScript の環境構築
まずは Node.js / TypeScript の環境構築をおこないます。

## `package.json` の作成
`package.json` を作成します。

https://docs.npmjs.com/cli/v10/commands/npm-init

コマンド実行中の質問をスキップするため、`-y` をつ

元記事を表示

[Node.js] [Jest] Jestでテストを行う

# 環境
MacBook Pro (2.3 GHz 8コアIntel Core i9)
macOS 14.0(23A344)
Homebrew 4.3.8
gh 2.52.0

# 目次
– []()
– []()

# プロジェクトを作成する
1. プロジェクト(ディレクトリ)を作成する
~~~sh
mkdir jest-tutorial
~~~
1. ディレクトリに移動する
~~~sh
cd jest-tutorial
~~~
1. [プロジェクトルート※1](※1:プロジェクトルートは、すべてのプロジェクトソースの親であるフォルダーです。)にpackage.jsonを作成する
~~~sh
touch package.json
~~~
1. package.jsonに下記を記載する
~~~json:package.json
{
“name”: “jest-tutorial”,
“license”: “UNLICENSED”
}
~~~
1. package

元記事を表示

[paiza]N倍の文字列

# 下から順に。。。

https://paiza.jp/works/mondai/d_rank_skillcheck_archive/square

# 面倒くさいので画面パタメータをListでもらった後のFunctionだけ
ちなみに引数のListを作ってる箇所は[こっちの記事](https://qiita.com/AsilHatake/items/842548e48ae4a0eae119)に書いてあるYO!!

“`javascript:square.js
// [問題文(原文)]
// 整数 N が入力されるので、N 個の*を繋げた文字列を出力するプログラムを作成しましょう。
// 例えば N = 3の場合
// ***
// のように出力してください。
function square(lines) {
if (!Array.isArray(lines) || lines.length !== 1) {
console.log(“1行入れろや!”);
return;
}
const repCnt = Number(lines[0]);
if (

元記事を表示

[paiza]文字の一致

# 同じ文字かどうかチェック
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str

# 面倒くさいので画面パタメータをListでもらった後のFunctionだけ
ちなみに引数のListを作ってる箇所は[こっちの記事](https://qiita.com/AsilHatake/items/842548e48ae4a0eae119)に書いてあるYO!!

“`javascript:sameStr.js
// [問題文(原文)]
// 2 つの文字列 a, b が入力されます。文字列が一致していれば “OK” 、異なっていれば “NG” と出力してください。
function sameStr(lines) {
if (!Array.isArray(lines) || lines.length !== 2) {
console.log(“2個の文字を入れろや!”);
return;
}
if (!lines.every(line => line.length > 0 && line.le

元記事を表示

[paiza]足し算するだけの簡単なお仕事

# Dランクをわかりにくく解く
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/addition

# 面倒くさいので画面パタメータをListでもらった後のFunctionだけ
ちなみに引数のListを作ってる箇所は[こっちの記事](https://qiita.com/AsilHatake/items/842548e48ae4a0eae119)に書いてあるYO!!

“`javascript:add.js
// [問題文(原文)]
// 2つの正の整数 a, b が半角スペース区切りで入力されるので a と b を足した数を出力してください。
// ※「掛け算」の問題では入力が改行区切りで与えられましたが、今回は半角スペース区切りで与えられます。
function add(lines) {
if (!Array.isArray(lines) || lines.length !== 1) {
console.log(“1行入れろや!”);
return;
}
const vals = lines[

元記事を表示

[paiza]文字列をつなげるだけの簡単なお仕事

# でぇベテランだけど、Dランク解いてイキりたい

https://paiza.jp/works/mondai/d_rank_skillcheck_archive/email_address

# 面倒くさいので画面パタメータをListでもらった後のFunctionだけ
ちなみに引数のListを作ってる箇所は[こっちの記事](https://qiita.com/AsilHatake/items/842548e48ae4a0eae119)に書いてあるYO!!

“`javascript:createMailAddress.js
// [問題文(原文)]
// Eメールアドレスとはローカル部とドメインを「@」を繋いだ文字列で表されます。
// ローカル部を s ,ドメインを t として、それぞれ長さ n の文字列が改行区切りで入力されます。
// 以下の構文に沿った文字列を出力してください。
//
// s(ローカル部)@t(ドメイン)
//
// 例えば
// info
// paiza.jp
// のような入力の場合
// info@paiza.jp
// と出力して下さい。
f

元記事を表示

Electron+Vue3でマルチウィンドウを理解したい

:::note info
viviONグループでは、DLsiteやcomipoなど、二次元コンテンツを世の中に届けるためのサービスを運営しています。
ともに働く仲間を募集していますので、興味のある方は[こちら](#一緒に二次元業界を盛り上げていきませんか)まで。
:::

# Electronでマルチウィンドウを制御したい
知り合いの自転車屋さんに、商品のポップを簡単にデザインできるツールを作れないか相談を受けたので、Electronを使ったデスクトップアプリで作ってみることにしました :bike:
ポップのプレビュー画面が必要になるのですが、その際のマルチウィンドウ制御に少し悩まされたので、自身の備忘録も兼ねて検証内容をまとめてみました。

# 検証環境
Windows10
Node:20.10.0
Vue CLI:5.0.8

# 環境構築
ある程度これに倣えば同じように検証ができるように記載しています。

今回は、VueでElectronを利用するために[Vue CLI Plugin Electron Builder](https://nklayman.github.io/vu

元記事を表示

error: We can’t find the necessary environment variables to replace the Node version.

# 事象

Windows環境にて、fnmを使用してnode.jsのアップグレードを実行しようとしたところ、タイトルどおりのエラーが発生した。

https://nodejs.org/en/download/package-manager

# 原因

環境変数が設定されていない模様。

“`
error: We can’t find the necessary environment variables to replace the Node version.
You should setup your shell profile to evaluate `fnm env`, see https://github.com/Schniz/fnm#shell-setup on how to do this
Check out our documentation for more information: https://fnm.vercel.app
“`

# 対処

環境変数を追加するコマンドを実行した。

“`
fnm env –use-on-cd | Out-String

元記事を表示

TypeScriptを初めて触ってみた

# 概要
今までJavaScriptは多少触ってきましたが、近年のTypeScriptの勢いを見て、そろそろ触らないといけないなぁ、と思ったエンジニアの備忘録です。

# 目的
何事もまずは動かしてみる、の精神で、まずは最低限TypeScriptが実行できる環境をvscode上で整え、簡単なコードを実行するまでを目的とします。

# 想定読者
・JavaScriptを触ったことがあり、TypeScriptはなんとなく聞いたことがあるがよくわからない方
・コマンド実行に苦手意識が無い方

# 全体の流れ
環境構築
・Node.js、npmインストール

JSONファイルの作成
├package.json
└tsconfig.json

サンプルコード作成

実行

デバッグ
└ブレイクポイントの設定

ESLint設定

感想

# 環境
・Windows 11
・Visual Studio Code(以下、「vscode」)
・Node.js v20.16.00
・Node Package Manager(以下、npm) 10.8.2

# 環境構築
### Node.j

元記事を表示

Lambda関数で日本語ファイルを処理する際にエラーが出た

# はじめに

Lambda関数でAWS CLIコマンドを使用して、日本語ファイル名のファイルをS3にアップロードしようとしたところ、エラーが出ました。

“`
‘utf-8’ codec can’t encode characters in …
“`

Lambda関数のランタイムは `Node.js20.x (OS: Amazon Linux 2023)` です。

# エラーの原因

まずは、環境変数設定で `LANG` に `ja_JP.utf8` を設定してみますが、結果は変わらず。

![スクリーンショット 2024-07-29 15.15.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3687813/fc945b3b-4e9d-94cd-144c-6edab6db41ab.png)

Amazon Linux 2023のDockerコンテナを起動して確認してみると、そもそもデフォルトで日本語のロケールデータが存在していませんでした。

“`bash
$ docker run

元記事を表示

【Express.js】簡易なOAuth認可サーバを実装してみた

OAuth 2.0 の勉強のために認可コードグラントに対応した簡易認可サーバをExpress.jsで実装してみました。

https://github.com/fcf-koga/oauth-authz-server-express

## エンドポイント
下記のエンドポイントを実装しています。
– 認可エンドポイント
– トークンエンドポイント

トークンエンドポイントでは、リフレッシュトークンの発行にも対応させました。

“`javascript:config.js
const authzServer = {
authorizationEndpoint: serverAddress + “/authorize”,
tokenEndpoint: serverAddress + “/token”,
responseType: [“code”, “token”],
};
“`
## クライアント
クライアント情報は静的に登録しています。

“`javascript:config.js
const clients = [
{
client_id: “client

元記事を表示

[paiza]1番小さい数字

# 初心に返って
どんどん、解いていこうね~

https://paiza.jp/works/mondai/d_rank_skillcheck_sample/min_num

# これからも解いていく可能性を信じて
まだまだ問題いっぱいあるっぽいので、やろうという気持ちがあるうちに。。。
全問題で共通となるパラメータの取得部分はもうindex.jsに書いてしまって、
処理の部分をmodule化してindex.jsから呼び出すようにしてみた

“`javascript:index.js
process.stdin.resume();
process.stdin.setEncoding(‘utf8’);

const lines = [];
const reader = require(‘readline’).createInterface({
input: process.stdin,
output: process.stdout
});

reader.on(‘line’, (line) => {
lines.push(line);
});
// paizaで公開されてる

元記事を表示

[paiza]すごく普通に書いてみた

# こういう問題大好き
[コレ](https://paiza.jp/works/mondai/s_rank_skillcheck_sample/mod7)に挑戦

https://paiza.jp/works/mondai/s_rank_skillcheck_sample/mod7

# Node(index.js)で正攻法で書いてみた
ちなみに標準出力から値を取得するって部分は、[paizaで公開されてるサンプル](https://paiza.jp/guide/samplecode.html)をそのまま使いました。
“`javascript:index.js
// [問題文(原文)]
// 整数が書かれた複数のカードの中から3枚を選び、
// そこに書かれた整数の和が7で割り切れるかどうかで運勢を決めようというものです。
// カードは必ず異なる3枚を選ぶ必要があり、
// 全てのカードには全て異なる数字が書かれています。
// — ここから paizaで公開されてるサンプル
process.stdin.resume();
process.stdin.setEncoding(‘

元記事を表示

【Prisma】findManyで100万規模のデータを取得する

# :sunny: はじめに

今回は約100万件ほどのデータを**生SQLクエリ**ではなく**Prisma(ORM)でデータ取得をする**というところに焦点を当てて、実装までに当たった問題点や内容のご共有ができたらと思います。

# :four_leaf_clover: 環境

* TypeScript:4.7.4
* Prisma:5.9.0
* Provider:MySQL

# :gear: 実装したコード

“`TypeScript:service.ts
type DataType = {
id: number
name: string
createdAt: Date
}

async getData(): Promise<{ result: DataType[] }> {
const batchSize = 150000
let lastId = 0
let results: DataType[] = []
let specificData:

元記事を表示

discord.js v14での権限設定、確認

りょうです。
今回はdjs v14の権限の設定、確認とうについての記事です。
それではれっつごー👍

## PermissionsBitField
discord.js v13で使われていた`Permissions`がv14で**PermissionsBitField**に変更されました。

“`diff_javascript
– const { Permissions } = require(‘discord.js’);
+ const { PermissionsBitField } = require(‘discord.js’);
“`

内容的には特に変更はありません。

よく使われる奴ら置いときます。
この形で使うようにしてください。↓
“`
Permissions.BitField.Flages.権限名
“`
|権限名|内容|
|:-:|:-:|
|Administrator|管理者|
|KickMembers|メンバーのキック|
|BanMembers|メンバーのBAN|
|ViewChannels|チャンネルの閲覧|
|SendMessages|メッセージの送信|

元記事を表示

複数ブラウザを同時に起動して、フォーム登録を行い負荷テストを行う方法(PlayWright)

## はじめに
[PlayWright](https://playwright.dev/)を利用して、フォーム入力+POSTを複数ブラウザから同時に実行した際のレスポンス時間を計測するスクリプトです

複数ブラウザ起動+指定回数のフォーム登録部分(共通部分)を`stress-script.mjs`で実装

別途フォーム登録スクリプトを用意し、共通部で`dynamic import`して呼び出す仕組みです

### ex. フォーム登録するスクリプト(test-testplanisphere.mjs)を、 3ブラウザ同時 × 2回繰り返しアクセス(合計6回)した場合

* 引数でスクリプト、同時にブラウザを起動する数、リピート回数を指定します
* 初回に3.1秒、2回目に1.2秒程度かかかったことがわかります
“`
$ node stress-script.mjs test-testplanisphere.mjs 3 2
param1 script : test-testplanisphere.mjs
param2 open : 3 browsers
param3 re

元記事を表示

kintone 秘密鍵からプラグインID取得

秘密鍵からkintoneプラグインのプラグインIDを生成するツールです。

# 概要

kintone-plugin-packer で、ppk オプションを指定しないと、プラグインID の名称で秘密鍵ファイルが作成されますが、規定で private.ppk の名称を指定しています。
そのため、kintone 環境にプラグインをアップロードするまでプラグインIDがわかりません。
そこで、作成された秘密鍵からプラグインID取得するスクリプトを作成しました。

https://www.npmjs.com/package/@rex0220/kintone-get-pluginid

# インストール

“`bash
npm install -g @rex0220/kintone-get-pluginid
“`

# 使用方法

– コンソールに表示
“`bash
rex0220-get-pluginid -i private.ppk
“`

– ファイル出力
“`bash
rex0220-get-pluginid -i private.ppk -o pluginId.txt
“`

元記事を表示

OTHERカテゴリの最新記事