- 1. 友達と遊ぶ用のSpigotサーバーの便利ツールを作る #1
- 2. React開発入門④ 〜時刻表示&ヘッダー実装(UseEffect)〜
- 3. npm publishで大きいファイルを扱う
- 4. Ubuntu 20.04 Apache2 node.jsを動作させる(SSL対応)
- 5. Single executable applicationsを使ってnodeアプリケーションを簡単にビルドできるようにする
- 6. Node.js app Apache2下で起動
- 7. Node.jsでログインサーバーを作る – 2
- 8. npm script で呼ばれたjs内でTerminal側の作業ディレクトリを参照する
- 9. GROWI7.1へのアップデート
- 10. nvmのインストール(MacBook Air, M1, 2020)
- 11. tsxでError [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol ‘c:’
- 12. フォローしているQiitaユーザが作成した記事を1日1回、スラックに通知してみた ~AWS100本ノック~ 13/100
- 13. discord bot (discord.js)を GCP 無料VM で常時実行
- 14. discord bot 作成 (discord.js) 2024/11版
- 15. Lambda(Node.js)のDockerイメージをデプロイしてみた。(その3,EC2上でDocker上のLambdaを実行してデバック)
- 16. Azure Web AppsでHonoを動かすメモ
- 17. Azure Web AppsのGitHub Actions Yamlファイルをアップデートする
- 18. JWTにおける認証のイメージを調べた
- 19. Prisma でモデル名を取得したい
- 20. Node.js+Playwrightのセットアップ:LTSとCurrentに気をつけよう
友達と遊ぶ用のSpigotサーバーの便利ツールを作る #1
最近友達とSpigotの自宅サーバーを立てて遊んでます。
そのサーバーで使える便利ツールを作って行きます。
今回はパート1です# サーバー環境
記事執筆時の環境です。
“`
サーバー:Spigot
環境: Windows11 Home
ポート開放: SecureShareNet
主なプラグイン: DiscordSRV,WorldEdit,BlueMap,GeyserMCなど その他合計30個
“`
# 便利ツール
今回作るツールでは、主にやりたいことが2つあります。
・自作DiscordBotで サーバーのアドレス、などをいちいち送らなくていいようにする。
・メンテ起動をできるようにする。(DiscordBotにメンテって言ってもらう)ん? それくらい自分でやれって? めんどくさいから楽にしたい。
# DiscordBot
今回は、discordのJavaScriptパッケージの`discord.js`を使います。
基本的にはNode.jsでつくる。# discord.js
“`shell
npm install discord.js
“`# テスト
試しに
React開発入門④ 〜時刻表示&ヘッダー実装(UseEffect)〜
## 目的
・リアルタイムな時刻表示を実装
・ヘッダーを作成&CSS適用していい感じにする## 成果物のイメージ
![スクリーンショット 2024-11-10 150758.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801383/f8d96bc1-f723-4330-6d7a-81483f215a5e.png)こんな感じの奴を作ります
## 実装
### ヘッダーコンポーネント作成
別ファイルにヘッダーコンポーネントを作成します。
・ログインユーザー名(後々の実装になるため仮置き)
・ページネーション
の2つをとりあえずヘッダーに配置します。
ヘッダー部は要素で囲んで定義します。
“`
import React from “react”;
import { Link } from “react-router-dom”;
import { CurrentTime } from “./CurrentTime”;export const Page_Header = ()
npm publishで大きいファイルを扱う
## 経緯
形態素解析の辞書ファイルをアップしたかったんだけど、ファイルが大きすぎてnpm publishができなかった。
https://www.npmjs.com/package/kuromoji-neologd
https://github.com/sushigadaisuki/kuromoji-ipadic-neologd
“`
npm error code E413
npm error 413 Payload Too Large – PUT https://registry.npmjs.org/kuromoji-neologd – Payload Too Large
npm error A complete log of this run can be found in: C://xxxxx.log
“`
## 概要
1. Github releaseで圧縮してアップロード
1. ファイルダウンロード、解凍するpostscriptを作成
1. npm install したときに自動的にファイルがダウンロード、解凍される## 1. Github releaseで圧縮して
Ubuntu 20.04 Apache2 node.jsを動作させる(SSL対応)
Kagoya.js VPS(Virtual Private Server)を利用し、Ubuntu 20.04をセットアップ。
更にApache2及び、Nodeをインストール。
“`
# apache2 -v
Server version: Apache/2.4.41 (Ubuntu)
node -v
v20.17.0
“`
を確認。
更に
proxy及びproxy_http moduleを有効にする。
“`
a2enmod proxy
a2enmod proxy_http
“`
SSL対応は
“`
certbot –apache -d www.example.com
“`
/etc/apache2/sites-enabled/下にwww.example.com.confが生成されるので、
“`
cd /etc/apache2/sites-enabled/
vi www.example.com.conf
ServerAdmin webmaster@localhost
ServerName www
Single executable applicationsを使ってnodeアプリケーションを簡単にビルドできるようにする
# はじめに
こんにちは、Never3924です。
NodeのSingle executable applicationsを使って簡単にビルドができるようにしよう、という記事です。# 環境
NodeJSのv20.1.2
Windows 10
で動作確認。# 本題
早速やりましょう。ていうか以下のコードをコピペです。
“`build.bat
@echo off
setlocal enabledelayedexpansion
chcp 65001mkdir dist
cd distset CALLPOWERSHELL_RETURN=””;
echo Collecting information…
call :CALLPOWERSHELL “$text = Get-Content -Path “../package.json” -Raw; $pattern = ‘\s+\”main\”\s?:\s?\”(.*)\”‘; if($text -match $pattern) { $filename = $matches[1] };echo $filename”
set F
Node.js app Apache2下で起動
Node.jsアプリをApacheサーバのVirtualHostにて、ドメインを割り当て、更にアプリを起動し、Proxy設定にて、起動したlocalportを指定し、80のPortとして、アクセスさせる。
下記にその手順を記載します。
1、nodeの環境に、foreverモジュールをInstallしてあること。2、httpd.confのVirtualHost設定例を下記に示します。
“`
ServerAdmin webmaster@mail.example.com
DocumentRoot /var/www/html/example
ServerName message.example.com
ErrorLog logs/example.com-error_log
CustomLog logs/example.com-access_log common
ProxyRequests off
Order deny,allow
Node.jsでログインサーバーを作る – 2
# 初めに
今回は、前回のログインサーバーを改造します(?)
# 前回とちがうところ
前回は一つのユーザーまでしか認証ができませんでしたが、今回はユーザーデータをjson形式で管理して複数のユーザーの認証ができるようにします# ファイル構成
今回のファイル構成は以下の通りです。
“`
—|–public |
|–main.html
|–style.css
|–main.js|–Server.js
|–userdata.json“`
# 準備
まず、以下のコマンドをcmdで実行して、ログインサーバーのフォルダーに移動ください
“`
cd C:\Users\\Downloads\
“`
※仮のpathです。実行するときはC:\~の部分を作成したフォルダのpathに変更してください次に、以下のコマンドを入力します
“`
npm install express cor
npm script で呼ばれたjs内でTerminal側の作業ディレクトリを参照する
“`js:runner.cjs
const process = require(“node:process”);// これは nodejs の作業ディレクトリ
const CWD = process.cwd();// こっちは terminal(bash | PowerShell | CMD) の作業ディレクトリ
// PWD – bashから参照可
// INIT_CWD – bash | PowerShell | CMD で参照可
const PWD = process.env.PWD || process.env.INIT_CWD;
“`
GROWI7.1へのアップデート
# 概要
今回、家の環境でGROWIを7.0.15から7.1にあげようという試みをしてたんですが、結構変更点が多くて思いのほか引っかかってしまったので、備忘録的な意味も込めて記しておきます。誰かの参考になれば幸いです。# 環境
* Ubuntu22.04(wsl)
* GROWI 7.0.15→7.1へのアップデート
* docker compose# ハマった点1
今回のGROWIのアップデートでハマってしまったのは、おそらくyarnからpnpmに変わった部分が大きいのではないかなと思います。
GROWIのアップデート時に`docker compose build`を実行するタイミングがあるかと思いますが、これがうまくいきません。こちらの問題は中津川さんのQiitaを参照して解決しました。本当に感謝です。。
https://qiita.com/goofmint/items/69171d242b342d97650a#dockerfile%E3%81%AE%E4%BF%AE%E6%AD%A3やることとしては、growiフォルダ内の`Dockerfile`の編集です。
nvmのインストール(MacBook Air, M1, 2020)
# はじめに
Macにnvmをインストールしていきまーすhttps://github.com/nvm-sh/nvm
# 開発環境
– MacBook Air, M1, 2020
– nvm 0.39.7# 導入
1.ターミナルを開きます2.nvmをインストールします
~~~bash
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
~~~3.~/.zshrcを編集します
~~~bash
$ vi ~/.zshrc
~~~~~~.zshrc
export NVM_DIR=”$HOME/.nvm”
[ -s “$NVM_DIR/nvm.sh” ] && \. “$NVM_DIR/nvm.sh” # This loads nvm
[ -s “$NVM_DIR/bash_completion” ] && \. “$NVM_DIR/bash_completion” # This loads nvm bash_completion
~~~4.変更を反
tsxでError [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol ‘c:’
# 本記事について
tsxでTypeScriptを実行しようとして出たエラーがデバッグできず、ググっても対処法が出てこなかったので、同様の症状を経験する方のために記事に残そうと思いました。# 結論
表題のエラーが出たらNode.jsをアップデートすると直るケースがある。# 症状
“`package.json
{
“name”: “***”,
“type”: “module”,
“scripts”: {
“dev”: “tsx src/index.local.ts”
},
“devDependencies”: {
},
“dependencies”: {
}
}
“`
からの
“`
npm run dev
“`
で出たエラー
“`> dev
> tsx src/index.local.tsnode:internal/errors:496
ErrorCaptureStackTrace(err);
^Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs wit
フォローしているQiitaユーザが作成した記事を1日1回、スラックに通知してみた ~AWS100本ノック~ 13/100
# はじめに
Qiitaにはユーザのフォロー機能がありますが、フォローしている人が投稿した記事を確認するには、`フォロー中のユーザ`タブで記事を一覧表示して、当日の記事を確認するしか現状なさそうです 😥
まぁ、それでもいいっちゃいいんですが、せっかくなら日常で使っているコミュニケーションツールに通知してくれた方が良いなーと思い、自動で通知する機能を作ってみました!
![スクリーンショット 2024-11-05 153409.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87924/9acf3762-1985-2c11-1796-051d53f8075f.png)
# 試してみる
では、さっそく試してみます。
Qiita APIを利用して情報を取得し、Slackに通知します。
※公式のQiita APIリファレンスは[こちら](https://qiita.com/api/v2/docs)全体像としては以下になります。
![フォローしているQiitaユーザの投稿をスラックに通知.d
discord bot (discord.js)を GCP 無料VM で常時実行
ローカルPCのnode.jsをつけっぱなしにするはイヤだったので、もともと維持しているGCPの無料VMで実行させることにしました。
## 無料VM
https://cloud.google.com/free?hl=ja
に詳しく載っています。VMの構築方法の詳細は、ググると詳しく載っているのと、自分の過去記事にも少し触れていますので、省略しますが、要は、e2-microという小さなサーバをUS-WEST(オレゴン)で作ると無料って感じです。
あたりさわりのない「ubuntu」で作っています。
実は、ずっと18のままだったんですが、サポート切れたので、今日、20に上げました。## nodejs インストール
nodesoource経由でインストールしてみます。
“`
$ sudo su
# apt update
# apt upgrade
# curl -fsSL https://deb.nodesource.com/setup_23.x -o nodesource_setup.sh
# chmod 777 nodesource_setup.sh
# ./nodesour
discord bot 作成 (discord.js) 2024/11版
discordのボットを作ってみました。
記事の時期のよって、古い情報もあり動かないところもあったので、2024/11現在ってことで、実際に作ってみて、整理してみました。## 使ったもの
* 自分のパソコン(Mac)のnode.js
* discord.js## 必要な知識
* 多少のnode.js javascriptのスキル
* コピペ能力## 作るBOT
問題がネタが思いつかないことなのですが、天気を教えてくれるボットにしました。
https://qiita.com/youtoy/items/932bc48b03ced5a45c71
をコードをそのまんま使わせていただきました。
ありがとうございます。
ついでに、「天気」以外のメッセージには「👍️」マークをリアクションするようにしてみました。## discord bot 設定
https://discord.com/developers/applications
で、アプリ設定画面に行きます。
スクショがないです。
※操作中に、適宜「保存」してくださいね。
– – –
1. 右上の“[New Applica
Lambda(Node.js)のDockerイメージをデプロイしてみた。(その3,EC2上でDocker上のLambdaを実行してデバック)
# はじめに
LambdaをDockerイメージでデプロイする方法を、調査する機会があったので自分の備忘用にメモ書きを残します。今回は、Dockerを起動して動作確認をする所をメモ書きします。
実行環境は、前回からの続きです。# イメージをビルドする
“`shell
cd
cd DeployProject
docker build -t deployproject:test1 .
“`
-t オプションで、「名前:タグ」を指定しながらビルドします。前回、Dockerファイルに「COPYコマンド」など正常に動くか確認します。
# デバック用の端末用意
デプロイする前の動作確認は、Teratermの端末を3枚用意するとデバック作業が楽でした。Teratermは、「File」→「Duplicate session」で同じ接続端末を増やせるので3枚に増やして、下記の用な配置でデバックしてました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/d2af27f
Azure Web AppsでHonoを動かすメモ
Azure FunctionsでHonoを動かすテンプレは公式に書いてますがWeb Appsだと無いみたいでした。
https://hono.dev/docs/getting-started/azure-functions
あとWeb AppsじゃなくてStatic Web Appsにデプロイするネタはたまに見かけますが、PaaSサービスのWeb Appsにデプロイしたいなと思った次第です。
## Web Appsはコードデプロイで立てておく
コンテナ起動かコードデプロイかのどちらかがありますが、コードデプロイでNode.js 20LTSを選択します。
v22などは現状選択不可でした。
– リージョン: West US
– プラン: B1## 修正箇所コピペ用
まずはNode.jsのテンプレートでアプリ作成
https://hono.dev/docs/getting-started/nodejs
“`bash
$ npm create hono@latest my-app
“`Which template do you want to use?で `nod
Azure Web AppsのGitHub Actions Yamlファイルをアップデートする
自分の記事だけど結局コピペできる内容が貼ってなくてしんどい。
https://qiita.com/n0bisuke/items/d59fe7a7b9cf1ab219b8
似たような記事何回も書いてそうだけど見当たらないという。。。
## Azure連携デフォルト
– Node.js v20LTSです。古い。。。23使いいたいせめて22
これがデフォで連携すると入ってくるymlファイルです。
“`yml
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actionsname: Build and deploy Node.js app to Azure Web App – n0bisukeAPP
on:
push:
branches:
– main
workflow_dispatch:jobs:
b
JWTにおける認証のイメージを調べた
# 時系列でフロントとバックのやることは?
JWTは基本的にサーバー側で状態を持たないため、セッション管理がシンプルになり、負荷分散がしやすいメリットがあげられます。
ただし、セキュリティの観点からHTTPSで通信し、必要に応じてトークンのリフレッシュや失効管理を行うことが推奨されるらしいです。
## 1. ユーザーがログイン情報を入力する
フロントエンド: ユーザーがメールアドレスやパスワードなどの認証情報をログインフォームに入力し、サインインリクエストを送信します。## 2. 認証リクエストをバックエンドに送信する
フロントエンド: 入力された情報をバックエンドに送信します。通常、HTTPSを使ってセキュアにAPIリクエストを行います。バックエンド: リクエストを受け取り、送信された認証情報(メールアドレス、パスワードなど)を検証します。
## 3. ユーザー情報を認証する
バックエンド: データベースから該当するユーザー情報を検索し、パスワードなどを照合します。正しい情報であれば、JWTを生成します。## 4. JWTを生成して返す
バックエンド: ユーザーが
Prisma でモデル名を取得したい
## はじめに
Prisma Client で Model 名(文字列)を使いたい場面に遭遇した。
Prisma は `node_modules/.prisma/client/index.d.ts` に型定義が存在する## Model 名を取得する
以下に記載するような `schema.prisma` が定義されているとする。
“`prisma:schema.prisma
model User {
id String @id
name String
}
“``npx prisma generate` 等何でも良いので `node_modules/.prisma/client/index.d.ts` を生成する。
下記のように記述すれば ModelName を取得できる。“`ts
import { PrismaClient } from ‘@prisma/client’;const prisma = new PrismaClient();
prisma.user.name;
// -> User
“`全件欲しい場合は、以下のように記述す
Node.js+Playwrightのセットアップ:LTSとCurrentに気をつけよう
## 要約
テスト自動化の学習として、Node.jsとPlaywrightを使ったテスト環境を構築した際、安定性重視のLTSバージョンの重要性を実感した失敗談をお伝えします。—
## 初めに
この記事では、Playwrightのセットアップ方法とNode.jsのバージョンによるトラブルを経験した備忘録を紹介します。Playwrightを試してみたい方や、Node.jsのバージョン管理に興味のある方の参考になれば幸いです。
## 作業環境
| OS | Node.js | npm | nvm |
|:-:|:-:|:-:|:-:|
| Windows10 | v20.15.1 | v10.8.2 | v1.1.12 |:::note warn
OS, Node.js, npmは開発していたとき(2024年8月)のものです。nvm(nvm for windows)は後日実装しました。
:::## 環境構築
### 1. ディレクトリの作成
任意の場所に新しいフォルダを作成します。### 2. Node.jsのインストール
[公式サイト](https://n