- 1. Node.js上のCLIツールで文字列をクリップボードにコピーさせる
- 2. Mapbox、Node.js、GridDBによる世界の人口データの可視化
- 3. ChatGPT、Node.js、GridDBを活用したニュースタグの自動作成方法
- 4. ChatGPT、Stable Diffusion、GridDB、Node.jsを使ってウェブサイトコンテンツを自動生成する
- 5. Hardhatでプロジェクトを作成するまで(2023/08/15)
- 6. npm v7以降のpeerDependencies採用方針
- 7. Node.js Expressのルート(routes)を一覧表示するライブラリを作った話
- 8. VueのForm入力はこれでよかったのか!!!
- 9. Prismaのマイグレーションコマンド実行時のM1 Mac x86アーキテクチャエラーとその対処法
- 10. Lambda(Node.js)でBox Platform APIを使用する
- 11. custom errorを投げる
- 12. resolve()を呼んだらthen()の中がすぐ実行されると勘違いしてました
- 13. TypescriptのSQLクエリビルダーのkyselyが快適
- 14. VitestのIn-source testingで躓いたことメモ
- 15. EC2を利用してNest.jsで作成したプロジェクトをデプロイする
- 16. Node.jsのインストールとVsCodeでの設定
- 17. tailwind cssが適用されない, vercel deploy, important: true;で解決
- 18. Lambda(Node.js)で Secrets Manager を使用する
- 19. nodeバージョンの切り替え パッと確認
- 20. Node.jsバージョン管理ツール『Volta』を使ってみる
Node.js上のCLIツールで文字列をクリップボードにコピーさせる
# 概要
個人的な用途で、Node.jsのCLIツールを作っていました。求める機能としては、「標準入力した複数行の文字列を、(若干加工した後)1行ずつ逐次クリップボードにコピーさせる」というものでした。クリップボードへのアクセス以外については比較的苦しむことなく実装できたのですが、クリップボードへのアクセスを行う方法について簡単に調べたところ、殆どの記事で「このnpmパッケージを使え」みたいなことが書かれており……「その部分除けば50行もないコードの為にpackage.json書けとでも……?!」という気分になった結果、どうにかNode.jsに付属している機能だけで何とかすることができたので、それについて書いていきたいと思います。
# コード
完成形としては以下のようなものになりました。
“`javascript
const {exec} = require(‘node:child_process’);
function clip(str) {
exec(`echo ${str} | clip`);// ※Windows以外の環境ではここをいじる必要がある
}cons
Mapbox、Node.js、GridDBによる世界の人口データの可視化
## 私たちは何を作るのか?
この記事では、世界の人口データを表示するウェブベースのマップを作成する方法を紹介します。データは[worldometers][1] から抽出し、React、Mapbox GL JS、Node.js、GridDBを使用してウェブベースの地図アプリケーション全体を構築しています。世界地図には、人口データの多い上位10カ国が表示されます。
## プロジェクトを実行する
プロジェクトを起動するには、プロジェクトの[リポジトリ][2]にアクセスします。リポジトリをクローンし、Node.jsのバージョンが18であることを確認し、必要な依存関係をすべてインストールし、プロジェクトを開始します。
“`sh
git clone git@github.com:junwatu/griddb-codes.gitcd griddb-codes
core enable
corepack prepare pnpm@7.30.0 –activate
pnpm install
cd packages/data-server/
pnpm install
cd ..
ChatGPT、Node.js、GridDBを活用したニュースタグの自動作成方法
デジタル化が進む現代において、私たちはソーシャルメディアからオンラインニュースサイトに至るまで、数多くのプラットフォームで膨大な量のニュース記事に常にさらされています。このような大量の情報の流入は、しばしば「ニュースの洪水」と呼ばれ、消費者と報道機関の双方にいくつかの課題をもたらしています。コンテンツの整理、情報の過多、時間のかかる手作業のタグ付けプロセス、非効率なコンテンツの発見と推奨など、これらの課題に対処することは、ユーザー体験とニュース消費全体の質を向上させるために不可欠です。
この問題に対する一つの解決策が、ニュースタギングを利用することです。これは、デジタルニュース領域で利用可能な豊富な情報を処理、整理、提示する上で重要な役割を担っています。無数のニュース記事に正確なトピックを手動でタグ付けすることは、圧倒的な時間と労力を要する作業です。
*もし、ニュース記事をリアルタイムで効率的に処理できる自動コンテンツタギングシステムがあったらどうでしょうか。*
このブログでは、**自動化されたニュースタギングシステム**を作成します。OpenAI、Node.js、GridDBの
ChatGPT、Stable Diffusion、GridDB、Node.jsを使ってウェブサイトコンテンツを自動生成する
今日のデジタル時代において、高品質で魅力的、かつ関連性の高いコンテンツを作成することは、企業や組織がターゲットオーディエンスを惹きつけ、維持するために極めて重要になっています。コンテンツ作成には、記事やブログ記事の執筆からソーシャルメディアの更新やマーケティング資料の作成まで、幅広い活動が含まれます。コンテンツの需要が増え続ける中、手作業によるコンテンツ作成はますます時間と労力がかかるようになり、しばしばアウトプットの遅れや品質のばらつきにつながります。
自動コンテンツ作成は、人工知能(AI)や自然言語処理(NLP)などの先進技術を活用し、構造化され、一貫性があり、文脈に関連したコンテンツを作成することで、このような課題に対するソリューションを提供します。コンテンツ作成プロセスを自動化することで、企業は以下のことが可能になります。
**・効率の向上**: コンテンツ作成の自動化により、コンテンツ作成に必要な時間と労力を大幅に削減できるため、チームはコンテンツの計画や最適化など、より戦略的なタスクに集中することができます。
**・一貫性の向上**: 自動コンテンツ生成は、アルゴリズ
Hardhatでプロジェクトを作成するまで(2023/08/15)
こちらの記事は[HardhatのTutorial](https://hardhat.org/tutorial/)の日本語解説となります。
Web3の勉強をしたいと思ってチュートリアルの日本語記事を探していたのですが、Hardhatのチュートリアル記事ってあんまりないのですね、、、qiitaで調べてみても2,3件しかありませんでした。
先人たちの記事はこちら?
[Hardhatのチュートリアルをやってみた](https://qiita.com/koffee0522/items/daff22907b6e6ce89e13)
[【Solidity】HardhatでDappを作ってみる ~ チュートリアル編(前半)~](https://qiita.com/yuskey/items/0722271dc88b637330f2)
先人たちの解説があるのですが、改めてチュートリアルの日本語Verを作成しました。# Hardhatとは
+ ローカルでSolidityを実行可能。
+ 開発専用のEthereumネットワーク、Hardhat Networkの提供。
+ デバッグに特化し、エラー時の詳細な
npm v7以降のpeerDependencies採用方針
## 先に結論だけ
このような依存関係のパッケージがあるとします。
“`
パッケージA
┗ パッケージB
┗ パッケージC
“`npm v7以降のpackage.jsonでは`peerDependencies`を以下の方針で採用しましょう。
– パッケージBとCで、違うバージョンのパッケージAを使う場合`dependencies`を使う
– パッケージBとCで、同じバージョンのパッケージAが必要な場合は`peerDependencies`を使うパッケージBで`peerDependencies`を使う場合は
– パッケージBでは、パッケージAを`dependencies`や`devDependencies`には入れない
– パッケージCでも、パッケージAを`dependencies`や`devDependencies`には入れない## はじめに
この記事は、npm v7以降のpackage.jsonでpeerDependenciesがどのように振る舞うかの実験と、その結果から依存パッケージをどのフィールドにインストールすべきかの方針を記録
Node.js Expressのルート(routes)を一覧表示するライブラリを作った話
## はじめに
以前、(所属する会社の)ブログで書いた[【Node.js】Expressでroutesの一覧を成形してログ出力してみた](https://note.com/shift_tech/n/ne1c160a36aa9)でやった、Expressに登録済みのルーティング(routes)を一覧でログに出力する機能をライブラリにしてみた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372684/bdbd8215-c83d-ade6-7535-79769ba388de.png)今回は、そのライブラリ(パッケージ)を開発した際の
– TypeScriptをあきらめてJavaScriptで開発したこと
– ES Moduleで開発をしつつも、CommonJSでもパッケージを公開したことなどを記事にしたいと思う。
※公開したパッケージは以下。
https://www.npmjs.com/package/console-express-routes?activeTab=rea
VueのForm入力はこれでよかったのか!!!
## 背景
以前Vue.jsを持ちいてフォームの送信を行なおうとしたところ、デフォルトの送信を取り消さないと勝手に画面がリフレッシュされてしまうという問題があった。
これの解決のために、
“`js
{{ time }}
{{ text }}
“`__@submit.prevent__ これを利用することで、強制更新を止めることができたが、__ref__ を利用する場合は、別にFormで加工必要がないことに気が付いた。
## 改変後
“`js
Prismaのマイグレーションコマンド実行時のM1 Mac x86アーキテクチャエラーとその対処法## 事象
M1 Mac上で新しいPrismaプロジェクトをセットアップしようとした際、Prismaのマイグレーションコマンドを実行したところ、以下のエラーが発生しました。
“`
$ npx prisma migrate dev
assertion failed [block != nullptr]: BasicBlock requested for unrecognized address
(BuilderBase.h:554 block_for_offset)
zsh: trace trap npx prisma migrate dev
“`## 原因
このエラーの主な原因は、M1 Mac上でx86アーキテクチャのNode.jsが動作していることに関連しています。M1 MacはARM64アーキテクチャを採用しているため、x86アーキテクチャ用のソフトウェアはRosetta 2を通じて変換されて実行されます。Rosetta 2は、Apple Siliconでのx86アーキテクチャのソフトウェアの互換性を提供する変換レイヤーです。しかし、一部のソフトウェアやツールはRo
Lambda(Node.js)でBox Platform APIを使用する
## APIを実行するBOXユーザアカウントについて
管理対象ユーザ(通常のBoxユーザ)とBox Platformユーザがあります。
管理対象ユーザを特定の個人と関連づけられないユースケースで使用することは禁止されています。APIを使用してバッチ処理を行う場合などは必ずBox Platformユーザを使用します。– [Fair Use Policy | Box](https://www.box.com/legal/fairusepolicy)
– [ユーザータイプ – Box Developerドキュメント](https://ja.developer.box.com/guides/getting-started/user-types/)## カスタムアプリの作成
Box Platform APIを使用するにはBoxでマイアプリを作成する必要があります。1. Boxの開発者コンソールにアクセスする。
– 初回は[こちら](https://ja.developer.box.com/)の「開発者コンソールに移動」からアクセスする。一度アクセスすると、Box UIの左下に
custom errorを投げる firebase functions でオリジナルのエラーを投げたい場面。
自前でerrorを返しても常にinternalエラーが返ってきてしまう
“`js
[admin.FirebaseError: internal] {
code: ‘functions/internal’,
customData: undefined,
name: ‘FirebaseError’,
details: undefined
}
“`“`js
functions.https.onRequest(async (req, res): Promise=> {
res.status(200).send({message: ‘error’});
}
“`“`js
functions.https.onRequest(async (req, res): Promise=> {
res.status(500).send({message: ‘error’});
}
“`# 解決法
今回は以下の2stepで行いました
1. 関数のresolve()を呼んだらthen()の中がすぐ実行されると勘違いしてました
# Promise 内で resolve() を呼ぶタイミングによって、then() の中の関数が実行されるタイミングも変わるんじゃね?っていう勘違いをずっとしてました
Promise を返す関数があったとしても、非同期的な処理を一切挟まずに、すぐに resolve したら、then() の中がすぐ実行される、と思って試してみたら勘違いだった事が分かったので、備忘録として実行タイミングをテストするのに使ったコードを載せておきたいのです。
簡単にテストするために、nodejs でテキストファイルを非同期で読み込ませてその内容を変数に保持しておいて、2回目は保持しておいた変数の内容を返すようなのを書いてみました。
“`javascript:nodejs
const fs = require(“fs”);
const {performance} = require(“perf_hooks”);
let textFileCache = “”;/** @return {Promise
|string} */
const getTextFileContent = ()=TypescriptのSQLクエリビルダーのkyselyが快適
## はじめに
Node.jsのサーバーからデータベースにアクセスする(SQLを投げる)ことって、`Nuxt.js`とか使ってたらあるあるですよね。みなさんどうしているのでしょうか。
世の中には`ORM`という、SQL文を直接書かなくてもなんかいいかんじにSQLを発行してくれるものがあるようですが(有名どころは`Prisma`や`TypeORM`)、SQLに慣れ親しんだ側からすると逆に学習コストがあるなぁと感じていました。
あと、せっかくだからいいかんじにTypescriptの型も効いてくれるとうれしい!
`Knex`でもなんとなくはできますがもう一歩感。
ということで`kysely`を使ってみました。参考までに、2023/08/13現在のバージョンとスター数。ORMの方が強い。
|リポジトリ|バージョン(最新のタグ)|スター数|
|—|—|—|
|prisma/prisma|5.1.1|33.2k|
|typeorm/typeorm|0.3.17|31.9k|
|knex/knex|2.5.1|17.9k|
|kysely-org/kysely|0.26.1|7kVitestのIn-source testingで躓いたことメモ
In-source テストの設定で罠に引っかかったのでメモしときます。
環境:
– MacOS Ventura
– Node.js 20.3.1
– Vite 4.4.9
– Vitest 0.34.1その他はpackage.json参照
“`name:package.json
{
“name”: “solid-practice”,
“private”: true,
“version”: “0.0.0”,
“type”: “module”,
“scripts”: {
“dev”: “vite”,
“build”: “tsc && vite build”,
“preview”: “vite preview”,
“prettier”: “prettier –write .”,
“lint”: “eslint –ext .js,.jsx,.ts,.tsx .”,
“lint:html”: “markuplint \”**/*.html\””,
“test”: “vitest”
},
“dependEC2を利用してNest.jsで作成したプロジェクトをデプロイする
## 目次
1. この記事のゴール
2. 開発環境
3. 前提条件
4. docker-compose.ymlの作成
5. AWSでEC2インスタンスを立てる手順
6. EC2インスタンスにEC2 Instance ConnectでSSH接続して設定## この記事のゴール
Nest.jsで開発したプロジェクトをAWS無料枠が適用できるEC2にデプロイし、アクセスできることがゴールです。
DBはPostgresをdocker-composeを活用して作成します。
セキュリティについての設定は省いた実装を行います。## 開発環境
Nest.js : v9.3.0
Node.js : v16.20.2
*EC2のAmazon Linux2でNode.js v16を利用するように指示があるため従っています。https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html
## 前提条件
デプロイができるまでの前提条件です。
– ロNode.jsのインストールとVsCodeでの設定
### はじめに
この記事では、Node.jsのインストール手順と、VsCodeで使用できなかった場合の対処法について説明します。Node.jsはJavaScriptのランタイム環境であり、Webアプリケーションの開発などに広く利用されています。
### Node.jsのインストール手順
1. **公式ウェブサイトからダウンロード**: [Node.jsの公式ウェブサイト](https://nodejs.org/) にアクセスして、最新バージョンのNode.jsをダウンロードします。
2. **インストーラーを実行**: ダウンロードしたインストーラーを実行し、指示に従ってインストールを進めます。インストール中に設定を変更する必要があれば適宜行ってください。
3. **環境変数の設定**: インストールが完了したら、環境変数にNode.jsの実行パスを追加します。以下の手順で設定できます。
– [Windowsの場合] PowerShellを開いて以下のコマンドを実行します。
“`powershell
[Environment]::SetEnvtailwind cssが適用されない, vercel deploy, important: true;で解決
### 問題
ローカル環境ではtailwind CSSが適用されているのに、Vercelにデプロイしたらそれが適用されなくなった。### 解決方法
tailwind.config.js ファイルに `important: true`を追加する
“`
module.exports = {
important: true, //add!
};
“`
この1行を追加したら、Vercel側にもtailwind CSSが適用されました。
### 参考サイト
https://stackoverflow.com/questions/67393883/tailwind-styles-not-working-on-productionLambda(Node.js)で Secrets Manager を使用する
[AWS Parameters and Secrets Lambda Extension](https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/retrieving-secrets_lambda.html)を使用して、Lambdaからシークレットマネージャーの値を取得します。
シークレットがキャッシュされるので、SDKで取得するより高速かつコスト削減になります。## AWS CDK
“`typescript:lib/sample-stack.ts
import { Construct } from ‘constructs’;
import * as cdk from ‘aws-cdk-lib’;
import * as lambda from ‘aws-cdk-lib/aws-lambda’;
import * as lambdaNodeJs from ‘aws-cdk-lib/aws-lambda-nodejs’;
import * as sm from ‘aws-cdk-lib/aws-secrenodeバージョンの切り替え パッと確認
# はじめに
ズバッと切り替えのみに関して、自分が欲しいと思った情報だけを残します!
設定などがまだの方は、他の方の記事を参考にしてください!# 手順
## まず確認
### インストールされているバージョンと現在のバージョンの確認
ここで、インストールされていれば、インストールしなくても良い。
[バージョン切り替えへ](#バージョン切り替え)
“`
nodebrew ls
“`### インストール可能なバージョン一覧
“`
nodebrew ls-remote
“`## 特定のバージョンインストール(v16.14.0は例)
“`
nodebrew install-binary v16.14.0
“`## バージョン切り替え
“`
nodebrew use v16.14.0
“`## 終わり(最後確認)
“`
node -v
“`Node.jsバージョン管理ツール『Volta』を使ってみる
今回はVoltaのセットアップ方法について簡単に紹介します。
開発チームにおいて、Node.jsのバージョン管理が統一されておらず環境構築で各々が苦労する場面をよく見かけるので、統一したいなと思いその選択肢としてVoltaを使ってみました。
(これで何回目だろう、nodeのバージョン管理についての記事書くの。)
## Voltaの概要
Voltaは、Node.jsやJavaScriptのパッケージマネージャ(npm, yarnなど)のバージョンをシンプルに管理するためのコマンドラインツールです。特徴については公式サイトで紹介されている3つの特徴を引用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472442/60c3755e-191f-a9f0-e50a-980cda64def6.png)
簡単にまとめると、
* **迅速なバージョン切り替え**: Voltaを使うと、コマンド一つで瞬時にNode.jsのバージョンを切り替えることができます。
* **プロ
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた