- 1. TypeScriptで同期的にDBアクセスをするための技術
- 2. ServBayを使用してnpmを有効化する方法
- 3. 【Typescript / nodejs】fsがエラーになる
- 4. Kotlin MultipatformとFirestoreでNode.jsアプリ
- 5. Docker環境で”The engine “node” is incompatible with this module. Expected version ~”のエラーを解消する
- 6. AIZU ONLINE JUDGEの提出前コードをVSCodeでテストする
- 7. Nextjsでプロジェクトを新規作成した時に初期状態からエラーが発生している
- 8. CloudWatch Synthetics を CDK で実装してみた
- 9. Next.js周りのセットアップ ~フォーマッター完備~
- 10. Next.js周りのセットアップ ~Next.jsプロジェクト作成~
- 11. Next.js周りのセットアップ ~Node環境構築編~
- 12. 連番を自動生成し、DB(MySQL)に登録しよう!
- 13. バージョン管理の考え方とNPMとpackage.jsonの役割
- 14. ◆Node.js(Express)のAPIをJestでテストする準備
- 15. JavaScriptで標準入力を扱うには?
- 16. TypeExpressTutorial – 9
- 17. フロントデータ取得の単純な開発環境
- 18. 爆速JS環境Bun入門:5分でNode.jsの4倍速を体験しよう
- 19. Docker上のNode.jsからaxiosでlocalhostへの通信がうまくいかない
- 20. Jestの実行結果をいい感じに出したい!
TypeScriptで同期的にDBアクセスをするための技術
私は[Accel Record](https://www.npmjs.com/package/accel-record)というTypeScript用ORMライブラリを開発しています。
Accel Recordは、他のTypeScript/JavaScript用ORMライブラリとは異なり、非同期APIではなく同期APIを採用することにしました。しかしDBアクセスを同期的に実行するためには、技術的な調査を重ねる必要がありました。
この記事では、同期的なDBアクセスを実現するためにAccel Recordがどのような技術を採用したかを紹介します。
## サポート対象のデータベース
Accel Recordは以下のデータベースをサポートしています。
– SQLite
– MySQL
– PostgreSQL開発初期段階では、SQLiteとMySQLのサポートを優先的に行いました。
ですので、この記事ではSQLiteとMySQLに焦点を当てて紹介します。## SQLite
SQLiteは、Node.jsで利用する場合[better-sqlite3](https://www.
ServBayを使用してnpmを有効化する方法
`npm`(Node Package Manager)はNode.jsのパッケージ管理ツールであり、デフォルトのパッケージマネージャです。JavaScriptパッケージのインストール、共有、管理に使用され、世界最大のオープンソースライブラリの一つです。npmを使用することで、開発者はプロジェクトの依存関係を簡単に管理し、開発効率を向上させることができます。
[ServBayをダウンロード](https://www.servbay.com)## npmの有効化
ServBayを通じてインストールされたNode.jsにはデフォルトでnpmが有効化されています。npmが有効でない、または更新が必要な場合は、以下の手順に従ってください。
npmインストールの確認
ターミナルを開き、以下のコマンドを入力してnpmのバージョン番号を確認します
“`bash
npm -v
“`
例として、以下のような出力が得られます
“`bash
9.1.0
“`
## npmの更新
npmを更新する必要がある場合は、以下のコマンドで更新できます
“`bash
npm install -g npm
`
【Typescript / nodejs】fsがエラーになる
# はじめに
未だに同じ問題で突っかかる自分への戒めの意味も込めてこの記事をしたためる。# 再現
よし、nodejsでtypescriptのコードを書くぞー!
ファイルを操作するから `fs` を使おう!
はじめから使えるから`npm install`はいらないはず!あとは`tsc`して……
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1773132/65726e08-ac24-2706-cdc3-66b4ea2c5a29.png)
………:thinking:
# 原因
`fs`をはじめから使えるが、nodeが型を知らないのが原因だった。# 解決
node用に型を`npm install` してやればいい。“`console
npm install –save-dev @types/node
“`これでOK:ok_hand:
Kotlin MultipatformとFirestoreでNode.jsアプリ
# 概要/日記
Kotlin Multiplatform (for Javascript)とFirestore で Node.js アプリを作る。
サンプルアプリはDB上の要求リストがあれば即座に応じてOSコマンドを実行しその結果を格納する。これの続き:
https://qiita.com/shokkaa/items/15eb53db7914513189a4
# 前提
– Ubuntu 22.04 on Windwos 11 wsl2
– Firebaseプロジェクト・Firestoreが有効であること
– 認証無し。実験用# Node.js用プロジェクト構成
“`KtNodeSvr/build.gradle.ktsplugins {
kotlin(“multiplatform”) version “2.0.0”
kotlin(“plugin.serialization”) version “2.0.0”
}repositories {
mavenCentral()
}kotlin {
js {
nodejs {
Docker環境で”The engine “node” is incompatible with this module. Expected version ~”のエラーを解消する
初心者です。Docker+Rails6+Nuxt.jsで認証機能付きのポートフォリオサイトを作ろうとしていたある日のことです。
Nuxt.jsアプリを動かすためのDockerimageが突然ビルドできなくなり、以下のようなエラーがコンソールに出力されていました。
初心者なのでエラー文と仲良くする習慣づけのために備忘録残しておきます。
(それにしても急に出たのはなんでだろう、タイミングよくサポートするバージョンが変わったんだろうか)## エラー文
動いてた時代のDockerFileのままdocker buildしてみたらこんなエラーが出ました。
“`zsh
126.4 error cssnano@7.0.3: The engine “node” is incompatible with this module. Expected version “^18.12.0 || ^20.9.0 || >=22.0”. Got “16.13.1”
126.5 error Found incompatible module.
126.5 info Visit https://yarnpkg.c
AIZU ONLINE JUDGEの提出前コードをVSCodeでテストする
アルゴリズムの勉強のため、AIZU ONLINE JUDGEを始めて使おうとしたら、提出前コードをVSCodeでテストするのに標準入力の受け取り方が分からなかったので、メモ。
## 環境
Mac
zsh### プログラム
ファイル名(実行例): main.js
“`javascript
function Main(input) {
const data = input.split(“\n”);《略》
console.log(hoge);
}Main(require(“fs”).readFileSync(“/dev/stdin”, “utf8”));
“`※標準入力のコードは https://yukicoder.me/wiki/stdio を参考にしました。
### 実行と標準入力の受け取り
“`zsh
node main.js <
Nextjsでプロジェクトを新規作成した時に初期状態からエラーが発生している
## 目次
– [バージョン](#バージョン)
– [状況](#状況)
– [原因](#原因)
– [解決方法](#解決方法)## バージョン
– yarn 4.2.1
– Node v20.9.0
– Nextjs 14系
– TypeScript 5系## 状況
Nextjsでプロジェクトを新規作成した時に初期状態からエラーが発生している– `page.tsx`や`layout.tsx`で
– `import` の部分で「モジュール next/imageまたはそれに対応する型宣言が見つかりません。」
– `return` の部分で「インターフェイス ‘JSX.IntrinsicElements’ が存在しないため、暗黙的に JSX 要素の型は ‘any’ になります。」## 原因
– node_modulesがない## 解決方法
– `tsconfig.json` に以下の記述を追加する
“`tsconfig.json
“compilerOptions”: {
“module”: “NodeNext”,
“moduleRe
CloudWatch Synthetics を CDK で実装してみた
# はじめに
CloudWatch Synthetics には次の通り 6 つの Blueprint が用意されている。
|設計図|説明|
|—|—|
|ハートビートのモニタリング|指定した URL にアクセスして、ページのスクリーンショットと HTTP アーカイブファイル (HAR ファイル) を保存|
|API Canary|REST API に対してリクエストを送信して、応答をテスト|
|リンク切れチェッカー|テスト対象の URL 内のすべてのリンクを収集し、リンク切れがないかテスト|
|Canary レコーダー|Google Chrome の拡張機能である CloudWatch Synthetics Recorder を利⽤して、ユーザ操作を記録し、テスト|
|GUI ワークフロービルダー|Web サイト上のユーザ操作ができるかを GUI ベースで作成してテスト|
|ビジュアルモニタリング|Web サイトの表⽰が変化していないかをベースラインと⽐較し、テスト|今回はこのうち**ハートビートのモニタリング**と**GUI ワークフロービルダー**を CDK で実装
Next.js周りのセットアップ ~フォーマッター完備~
# 今回扱う技術
– Next.js
– TypeScript
– ESLint
– Prettier
– Prisma
– NextAuth
– TailWindCSS## Prettierセットアップ編
今回は、Next.js プロジェクトで Prettier を使用してコード整形を行う方法について解説します。以下の手順に従ってセットアップを行います。
### 1. Prettier のインストール
まず、Prettier をインストールします。プロジェクトのルートディレクトリで以下のコマンドを実行してください。
“`bash
npm install prettier
“`### 2. Prettier の設定ファイルを作成
次に、プロジェクトのルートディレクトリに `.prettierrc` ファイルを作成し、以下の内容を追加します。これにより、Prettier の設定をカスタマイズできます。
“`json
{
“semi”: true,
“singleQuote”: true,
“trailingComma”: “all”,
“prin
Next.js周りのセットアップ ~Next.jsプロジェクト作成~
# 今回扱う技術
– Next.js
– TypeScript
– ESLint
– Prettier
– Prisma
– NextAuth
– TailWindCSS## Next.jsの作成
https://qiita.com/Itsuki54/items/bb41982fd1c9d6e81b17
前回は核となるnodeのインストールを行いました
今回は*create-next-app*について解説していきたいと思います
### create-next-appとは
`create-next-app`は、Next.jsプロジェクトを迅速かつ簡単にセットアップするための公式CLIツールです。このツールを使用すると、数分以内にプロジェクトの基本的な構成が整ったNext.jsアプリケーションを作成できます。手動でのセットアップや初期設定の手間を省き、すぐに開発に取り掛かることができます。
#### 主な特徴
1. **迅速なセットアップ**: `create-next-app`は、必要な依存関係やディレクトリ構造を自動的に作成します。これにより、開発者はすぐにコーディン
Next.js周りのセットアップ ~Node環境構築編~
# 今回扱う技術
– Next.js
– TypeScript
– ESLint
– Prettier
– Prisma
– NextAuth
– TailWindCSS## Node.jsのセットアップ
### NVM(Node Version Manager)のインストール
NVMは、複数のNode.jsバージョンを簡単にインストール、管理、切り替えるためのツールです。以下の手順でNVMをインストールします。
1. NVMをインストールするために、以下のコマンドをターミナルに入力します。
“`zsh
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
“`2. NVMが正しくインストールされたか確認するために、以下のコマンドを実行します。
“`zsh
command -v nvm
“`
エラーが表示されなければ、NVMのインストールは成功です。### Node.jsのインストール
NVMを使ってNode.j
連番を自動生成し、DB(MySQL)に登録しよう!
# はじめに
今回は下記メンバーをサイト画面(test.ejs)からDB(MySQL)に登録する際、
IDを連番(1002、1003・・・)で自動生成する方法についてお伝えします。|ID |姓 |名 |クラス |
|——–|——–|——–|——–|
|1001 |キム |ウソク |A |
| |キム |シフン |A |
| |ナム |ドヒョン |D |
| |カン |ヒョンス |A |![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3726548/6d8ea2a4-a836-7d4b-eb3b-c0306e9fa306.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3726548/
バージョン管理の考え方とNPMとpackage.jsonの役割
## はじめに
**Node.js**を学び始めました。**npm** に初めて触れるときは、**package.json** がどういう役割をもっているのか、パッケージをインポートするとはどういうことなのか、概要をつかむのが大変だと思います。**Node.js**プロジェクトの設定ファイルである**package.json**で、プロジェクトのメタデータ、依存関係、スクリプト、バージョン情報などを定義がどのようなものであるのか、整理したかったので、内容をまとめてみました。
:::note info
**NPMは、Node.js用のJavaScriptパッケージを管理するためのツールです。**
**package.jsonは、Node.jsプロジェクトに関する情報を記述するJSON形式のファイルです。**NPMとpackage.jsonは、密接に連携して動作します。NPMは、package.jsonに記述された情報に基づいて、パッケージのインストールやスクリプトの実行を行います。一方、package.jsonは、NPMコマンドで生成したり、手動で編集したりすることができます。
◆Node.js(Express)のAPIをJestでテストする準備
## **導入方法**
必要なパッケージのインストール
“`tsx
npm install –save-dev jest ts-jest @types/jest @types/supertest
“`初期化
“`tsx
npx ts-jest config:init
“`“`jsx
The following questions will help Jest to create a suitable configuration for your project√ Would you like to use Typescript for the configuration file? … yes
√ Choose the test environment that will be used for testing » node
√ Do you want Jest to add coverage reports? … yes
√ Which provider should be used to instrument code for coverage
JavaScriptで標準入力を扱うには?
## はじめに
JavaScriptで初めて競技プログラミングに挑戦したのですが、標準入力の値を取得するところで早速つまずきました。
サンプルコードがあったので試行錯誤して解決することはできましたが、
それぞれの処理の意味がよくわからなかったので、調べたことを備忘録として残しておきます。## 標準入力・標準出力とは
### 標準入力
> 標準入力(standard input)とは、コンピュータ上で実行されているプログラムが、特に何も指定されていない場合に標準的に利用するデータ入力元。システム上では “stdin” の略号で表されることが多い。(引用元) [標準入力(stdin)とは – 意味をわかりやすく – IT用語辞典 e-Words](https://e-words.jp/w/標準入力.html “標準入力(stdin)とは – 意味をわかりやすく – IT用語辞典 e-Words”)
### 標準出力
> 標準出力(standard output)とは、コンピュータ上で実行されているプログラムが、特に何も指定されていない場合に標準的に利用するデータ出力先。システム上
TypeExpressTutorial – 9
:::note info
やりたいこと
– `GET api/auth/me` にリクエストをするとユーザー情報が返却されるようにする
– 認可を制御する処理をミドルウェアとして設置する
– Express.js の Request の型定義を上書きしてアプリ全体で使えるようにする
:::全体像
1. [プロジェクトを作成する](https://qiita.com/yk-graph/items/b5f0551cb368fb86c50c)
1. [Mysql + prisma でDBを構築する](https://qiita.com/yk-graph/items/02333bd99b625dbcc49d)
1. [環境変数を設定する](https://qiita.com/yk-graph/items/e37cd011c6da3feb93d2)
1. [APIを作成する](https://qiita.com/yk-graph/items/e5b52a4d35cd43d95f7a)
1. [ユーザー登録とログインを実装する](htt
フロントデータ取得の単純な開発環境
## はじめに
フロントデータとして位置情報を取得します。
位置情報を取得し、サーバでその情報を取得する所を行います。
まず開発環境で試します。## 構成
ローカル環境でAPIサーバーとフロントエンドを連携させて動作確認をします。– APIサーバをnodeで作ります。
– フロントをセットします。
– HTTPサーバを立ち上げます。### ステップ1: ローカルAPIサーバーのセットアップ
node.jsでサーバとしてセットするために以下のライブラリーが必要になります。
– **`express`**: Node.jsのためのWebアプリケーションフレームワーク。ルーティングやミドルウェアの管理が簡単に行えます。
– **`body-parser`**: Express用のミドルウェアで、リクエストボディのデータを解析して扱いやすくします。
– **`cors`**:Express用のミドルウェアで、異なるオリジンからのHTTPリクエストを許可するためのCORS設定を簡単に追加できます。#### 1. プロジェクトディレクトリの作成
“`sh
mkdir local-
爆速JS環境Bun入門:5分でNode.jsの4倍速を体験しよう
Bunは、JavaScriptの実行とパッケージ管理を高速化するランタイムです。Nodeを置き換える可能性を秘めています。
「本当に必要なの?」
そう思った方、ちょっと待ってください。Bunは単なる新顔ではありません。Nodeの4倍以上の速度[^1]で動作し、TypeScriptやJSXをネイティブサポートする、まさに「爆速」な開発環境なのです。
[^1]: Bunの公式ベンチマークによる。実際のパフォーマンスは環境やタスクによって異なる場合があります。
本記事では、Bunのセットアップからhello-worldまでを5分で体験できる方法をご紹介します。Nodeをご存知の方はもちろん、「bunってなんぞや?」と思っている方に読んでいただきたい内容です。
## 1分でできるBunのセットアップ
Bunのインストールはとても簡単です。ターミナルを開いて、以下のコマンドをコピー&ペーストするだけ。
### macOS, Linux
“`bash
curl -fsSL https://bun.sh/install | bash
“`### windows
“`sh
Docker上のNode.jsからaxiosでlocalhostへの通信がうまくいかない
# 状況
axiosを使ってAPI通信を試したくて、docker上にlaravelのAPIサーバーを立ち上げてnode.jsの対話モードからaxiosで通信を試したところエラーが返ってきました。### Laravel
route/api.phpの中身は以下
`http://localhost/api/test`に接続すると` { id: 1, name: ‘test’ }`のJSONを返す単純なAPIです。“`PHP:route/api.php
json([
‘id’ => 1,
‘name’=> ‘test’,
]);
});
“`
Laravelと同じコ
Jestの実行結果をいい感じに出したい!
# はじめに
皆さんは[Jest](https://jestjs.io/ja/)**の実行結果の表示をいい感じに出したい**!と思ったことはありませんか?
デフォルトだと下記のような感じで結果を見せてくれますが、これだと自分が見る分には十分なんだけどちょっと無骨な印象もあります。
“`shell
# ここら辺にテストファイルのパスと結果Test Suites: 9 passed, 9 total
Tests: 119 passed, 119 total
Snapshots: 0 total
Time: 2.466 s, estimated 12 s
Ran all test suites matching /date/i.
“`後はテストを通っているならともかく、エラーが多いとかなり見にくくなってしまいます。~~そもそもエラー出すな~~
後から結果を見返す時とか、プログラマじゃない人にもこんな感じでテストしてますよ~って見せる時を考えるとやっぱり何とかしたいです。
何より綺麗にテスト結果が見えたら良い気分になりますよね!ここまでで「いや別