- 1. テンプレートエンジン
- 2. PUGを使う
- 2.1. メモ:node.jsでブロックチェーンの基本を見る
- 2.2. 無料クラウドサービスでJupyter Labを使ってみる ~最小構成導入編~
- 2.3. Docker AmazonLinux2のコンテナにNode.jsを入れている部分の処理を紐解いてみた
- 2.4. Node + TypeScript で MySQL に接続して Read, Write してみる
- 2.5. pm2 deploy しようとしたが、「WARNING: UNPROTECTED PRIVATE KEY FILE!」でデプロイ出来なかった。
- 2.6. Discord.jsでOauth2を使いweb認証を作る!
- 2.7. Amplify CLIを使って、ローカルで実行&AWSにデプロイ
- 2.8. [OCI]MongoDBクライアントからAutonomous JSON Databaseに接続してみた(Node.jsアプリケーション編)
- 2.9. ws:WebSocketServerはBlobで受ける
- 2.10. GitHub Actions で apt/perl/node ツールのインストールを自動化する
- 2.11. npm run dev が上手くできない時の対処法 〜 Error: error:0308010C:digital envelope routines::unsupported 〜
- 2.12. NestJSのDockerコンテナをCloud Run + Cloud SQLへデプロイする方法
- 2.13. Webの勉強はじめてみた その23 〜HTTPサーバー編〜
- 3. HTTPサーバー
pm2のインストールではまってしまった人へ
# 結論
お使いのyarn.lockやらpackage-lock.jsonを削除してみよう。
# どうしてこうなったか
インストール時にyarnがダメだったからnpmとかまたはその逆とかでインストールしていたなあ。という記憶が蘇ってきたので多分それ。
久々にAzure Functionsを触ろうとして出たエラーなど
久々にAzure Functionsを触ろうとして雰囲気だけしか覚えてなくエラーが出たので回避メモなど残しておきます。
## 基本の手順
https://fwywd.com/tech/azure-functions-basic
この記事どおりにハローワールドしようとしてます。
## Azure Functions Core Toolsのバージョンによるエラー
現時点でAzure Functionsで利用できるNode.jsは16系が最新っぽいので16系を使おうとしましたが以下のエラー
“`bash
・
・
・
Azure Functions Core Tools
Core Tools Version: 3.0.3233 Commit hash: d1772f733802122a326fa696dd4c086292ec0171
Function Runtime Version: 3.0.15193.0[2022-01-23T12:06:20.317Z] /usr/local/Cellar/azure-functions-core-tools@3/3.0
Angular Update 10 → 12のあれこれ事件簿
とあるPRJにて、Angular 10 → 12のUpdateの際にいくつかハマったので備忘録として残しておきます。
# ざっくり環境
Angular 10 → 12
Node.js 12.10 → 12.22
TypeScript 3 → 4
webpack 4 → 5
…その他もろもろ# 前提
・Angularのビルダーを変更
“`angular-devkit/build-angular → angular-builders/custom-webpack
“`# 地道なバージョンアップ対応
Angularのバージョンアップに伴いNode.jsのバージョンも最低限上げないといけないなどその辺りの依存関係の調整を地道に行い、TypeScriptのバージョンアップに伴う既存ソースの微修正など対応した。そこまではよかったのですが。。。# webpack 5系の罠
今回のAngularプロジェクトでは直接的にwebpackは使用していませんでしたが、custom-webpackなどAngularで使うパッケージにwebp
GitHub PackagesでNode.jsのDockerイメージを管理する
早いもので1月もあと10日ほどで終わりですが、今年の冬は寒くリモートワークが有り難くも感じています。
節分の頃には、春に向けて期待が膨らませられる出来事が増えますように。
さて、
今回はこちら[Managing Node.js Docker images in GitHub Packages using GitHub Actions](https://snyk.io/blog/managing-node-js-docker-images-in-github-packages-using-github-actions/)を紹介します。開発ですでにGithubは使っている方は多いと思いますが、node.jsのDockerイメージ管理についてのブログ記事の翻訳をご紹介いたします。
#GitHub Actionsを使ってGitHub PackagesでNode.jsのDockerイメージを管理する
リランタル
2021年7月13日
今日オープンソース開発を行っている場合は、GitHubコミュニティ内でアクティブになっている可能性が高く、オープンソースプロジェクトとそのリポジトリ
Webの勉強はじめてみた その24 〜テンプレートエンジン〜
N予備校の「プログラミング入門Webアプリ」を受講しています。
今回は第3章16節です。テンプレートエンジン
:::note
テンプレートと文字列とプログラムを組み合わせることで、 静的なユーザーインタフェースのデータである HTML を動的に出力できるライブラリのこと
:::静的なページに変数を入れてそれをベースにして動的なページにしようと言う認識。
PUGを使う
`Dockerfile`に記述
“`Dockerfile
RUN yarn add pug@2.0.4
RUN yarn global add pug-cli
“`雛形となる`form.pug`
“`pug
doctype html
html(lang=”ja”)
head
meta(charset=”UTF-8″)
title アンケート
body
h1 どちらが食べたいですか?
form(method=”post” action=path)
span 名前:
input(type=”text”
メモ:node.jsでブロックチェーンの基本を見る
node.jsでブロックチェーン周辺の基本を見ておくことにしたので、その記録。
[ここ](https://marsquai.com/745ca65e-e38b-4a8e-8d59-55421be50f7e/1f67fdab-8e00-4ae1-a1b9-077d5a30a5d6/c2b1e311-8654-41db-a4d1-4c419cae7830/)とか[ここ](https://note.com/strictlyes/n/n40e5884229a5)とか
を参考にした。# 準備
とりあえずtypescriptを入れる。
`npm install typescript @types/node`# ブロックチェーン
[予備知識](https://persol-tech-s.co.jp/corporate/security/article.html?id=69)nodeで作成している記事に従ってブロックとチェーンのコードを書いてみる。
微妙に自分の趣向で書き換えてるけど、ほぼそのままパクリ。ブロックは、前のブロックのハッシュ値+自分のデータでハッシュ値を作成するが、時
無料クラウドサービスでJupyter Labを使ってみる ~最小構成導入編~
## カスタマイズ可能で最新バージョンのJupyterを使うには?
### この記事の目的
無料で利用可能なJupyterアプリケーションといえば[Google Colaboratory](https://colab.research.google.com/)や[Watson Studio](https://dataplatform.cloud.ibm.com/)といったものがメジャーでよく知られていると思います。
初めから一通りのミドルウェアなどがセットアップされており、サインアップするだけで特に何の準備も必要なく、手間もかからずすぐに始めることができる優れたサービスだと思います。
その代わり、新たに使いたいライブラリを追加したり、作成したデータをファイルとしてクラウドに保存しても、基本的には永続化することはできず、サインアウトすると消滅してしまうという不便もあります。
また、ベースは[Jupyter Notebook](https://jupyter-notebook.readthedocs.io/)であり、より進化した[Jupyter Lab](https://jupy
Docker AmazonLinux2のコンテナにNode.jsを入れている部分の処理を紐解いてみた
# 概要
– 他の方が作ってくれたのLaravelアプリケーションローカル開発環境のAmazonLinux2コンテナにNode.jsを入れている部分の処理をまとめてみる
# Node.jsの入れている部分Dockerfile
– 下記のような処理をしている。
“`Dockerfile
RUN curl -fsSL https://rpm.nodesource.com/setup_14.x | bash –
RUN yum -y install nodejs && \
npm i -g n && \
n 14
“`– 理解しやすくするため&&と\で一行に記載されている部分を冗長だがRUNになおしてみる。
“`Dockerfile
RUN curl -fsSL https://rpm.nodesource.com/setup_14.x | bash –
RUN yum -y install nodejs
RUN npm i -g n
RUN n 14
“`
Node + TypeScript で MySQL に接続して Read, Write してみる
## 背景
node + TypeScript で MySQL に繋いで少しだけデータ操作をする場面があったのですが、あまり記事無くて苦戦したので備忘録として残しておきます。
## 実装方針
– O/Rマッパーのような大きいライブラリじゃなくても済む規模だったので [mysql](https://github.com/mysqljs/mysql) を使用して生クエリで対応
– コールバック地獄にならないようにしたい
– しっかりトランザクションはかけておきたい## バージョン
– node: v14.17
– mysql(ライブラリ): 2.18.1
– MySQL(DB): 5.7## 実装
### 接続
“`ts
import { createPool } from ‘mysql’;(async () => {
const pool = createPool({
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
password: process.env.MY
pm2 deploy しようとしたが、「WARNING: UNPROTECTED PRIVATE KEY FILE!」でデプロイ出来なかった。
PM2デプロイコマンドを叩いたら、下記のようなエラーがでて、デプロイできなかった。
そうなった原因はわからない。数日前までは問題なくデプロイ出来ていたので…“`terminal
$ pm2 deploy production
–> Deploying to production environment
–> on host ***********○ deploying origin/master
○ executing pre-deploy-local
○ executing pre-deploy `git pull`
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for ‘/Users/***/.ssh/***.pem’ are
Discord.jsでOauth2を使いweb認証を作る!
#初めに
Discord.jsでと書きましたが正確にはaxiosでです
仕組みとしては
Discord.js<=>MongoDB
サイト=>axios=>Discord-oauth=>mongoDB=>Discord.js=>Discord
的な感じです
Node.jsのみで書いたので少し汚いです#必要なもの
Discord.jsv13(最新なので)
Node.jsv16(Discord.jsがv16以降でしか動かないので)
axios(POST&GETするために)
express(サイトを立てるために)
aurora-mongo(MONGOとの接続を楽にするために)`npm i discord.js express axios aurora-mongo`
#コード
“`js
const {Client, Intents, MessageActionRow,
MessageButton} = require(‘discord.js’),
//分割代入する
client = new Client({intents: [Intents.FLAGS.GUILDS, I
Amplify CLIを使って、ローカルで実行&AWSにデプロイ
Amplify CLIを使って、REST APIや静的コンテンツのサーバを立ち上げます。
ローカル環境で実行・デバッグして確認したのち、AWS上にデプロイ・実行します。ローカル環境でのデバッグには、node.jsとVisual Studio Codeを使います。
AWS上には、API Gateway、Lambda、S3を使います。
上記の橋渡しに、Amplify CLIを使います。今回使うのは、AmplifyではなくAmplify CLIです。
なぜこのような言い方をしているかというと、Amplifyは、いろいろ自動化してくれているのですが、何をしているかよくわからないので、長期的にメンテナンスがしづらく、バグに遭遇する可能性もあるためです。
なので、Amplify CLIを使って、API Gateway、Lambda、S3を一つ一つ作っていきます。それと、Amplifyで構築すると、今までS3やAPI Gateway、Lambdaにばらばらで分散していたパーツ群がAmplifyに集約されるので、まとめてみやすくなります。
目指す形は以下の通りです。
![image.p
[OCI]MongoDBクライアントからAutonomous JSON Databaseに接続してみた(Node.jsアプリケーション編)
#はじめに
これまでの以下の記事で、Oracle Database API for MongoDBを利用することによりMongoDB Shell、mongoexport/mongoimportなどのMongoDBクライアントからAutonomous JSON Databaseを操作できることを確認しました。
[[OCI]MongoDBクライアントからAutonomous JSON Databaseに接続してみた(MongoDB Shell編)](https://qiita.com/500InternalServerError/items/20f646bc38725dea580b)
[[OCI]MongoDBクライアントからAutonomous JSON Databaseに接続してみた(mongoexport/mongoimport編)](https://qiita.com/500InternalServerError/items/a03003e7979d62a4b019)今回は、MongoDBの使用を前提に書かれているアプリケーションが、接続先をAutonomous JSON
ws:WebSocketServerはBlobで受ける
「ws node.js」で検索して出てくるサンプルコードがどれも送信内容次第で失敗する。
テキストからBlobに変えたらうまく行った。根本的原因は不明だがとりあえず。“`javascript:nodeApp.js
const WebSocketServer = require(“ws”).Server
const server = new WebSocketServer({ port: 5001 })
server.on(“connection”, client => {
client.on(‘message’, message => {
server.clients.forEach(v => {
if(v !== client) v.send(message)
})
})
console.log(‘_connections’,server._server._connections)
})
“`
“`javascript:plainWeb.js
$(e=>{
var m = new Messenger.Nodejs().message(e=>{
co
GitHub Actions で apt/perl/node ツールのインストールを自動化する
# Summary
This is an article about GitHub action to automate apt/perl/node tool installation. Installed files are cached for later use. `use-apt-tools` and `use-perl-tools` are for apt/perl tools. `use-x-tools` is for both. `install-node-modules` is for node package installation and cache all `node_modules` under the specified directory. Read each repository’s README. Visit https://github.com/office-tecoli/.
# 必要なツールを簡単にインストールしたい
ある作業で GitHub Actions を使おうとしていて、その中で apt と perl と node のツー
npm run dev が上手くできない時の対処法 〜 Error: error:0308010C:digital envelope routines::unsupported 〜
## はじめに
こちら自分用のメモであるためとても雑な記事です。
ただ、同じようなエラーが出た人の助けに少しでもなれば幸いです。
## エラーログ![スクリーンショット 2022-01-21 22.50.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1081227/9e7dfc55-f58b-3151-d338-a03e89d2cbce.png)
“`.zsh
> 〇〇@1.0.0 dev
> webpack –watchError: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:67:19)
at Object.createHash (node:crypto:135:10)
“`##原因
Nodeのバージョンが高すぎることが原因のようです##解決策
Nodeのバージョンを下げる###環境
macOS Montere
NestJSのDockerコンテナをCloud Run + Cloud SQLへデプロイする方法
## はじめに
NestJSの開発環境をローカルのDockerコンテナ上に構築し、簡単なAPIの実装を行なってから、本番環境としてCloud Run + Cloud SQLへデプロイする方法を記載します。
## DockerコンテナでNestJSを起動する
NestJSアプリとデータベース、両方のコンテナを同時に起動するためにDocker Composeを使いたいので、docker-compose.ymlを作成します。
“`bash
$ mkdir my_project && cd my_project
$ touch docker-compose.yml
“`ローカルの開発環境なのでデータベースのパスワードなどはべた書きで構いません。
ここでのポイントはNestJSアプリのルートディレクトリを`nest-app`という一つ下の階層に
しておくこことと、`node_modules`を**匿名ボリューム**に設定することです。
そうしないと、バインドマウントされて`node_modules`の中身が消えてしまいます。“`yaml
version: ‘3’
servi
Webの勉強はじめてみた その23 〜HTTPサーバー編〜
N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第3章12〜15節です。HTTPサーバー
`node.js`のモジュールを使ってサーバーを立てる
“`javascript
‘use strict’;
const http = require(‘http’);
const fs = require(‘fs’);const server = http
.createServer((req, res) => {
const now = new Date();
console.info(`[${now}] Requested by ${req.socket.remoteAddress}`);
res.writeHead(200, {
‘Content-Type’: ‘text/html; charset=utf-8’
});switch (req.method) {
case ‘GET’:
//res.write(‘GET ‘ + req.u
【nodejs】NodeJS v17.4.0 ソースインストール【RockyLinux】
# NodeJS の最新版 インストール
2022/01/20
– NodeJS : v17.4.0
– OS : Rocky Linux release 8.4 (Green Obsidian)## 手順
### C, C++コンパイラが必要なのでinstall
“`
# dnf install -y gcc gcc-c++ make
“`### Source Install
“`
# cd /usr/local/src
# wget https://nodejs.org/dist/v17.4.0/node-v17.4.0.tar.gz
# tar xzvf node-v17.4.0.tar.gz
# cd node-v17.4.0
# ./configure# ↓ GCE2コア8GBのインスタンスだと1時間くらいかかるので注意 -j
で分散処理可能?
# make
# make install
“`### 確認
“`
$ node -v
v17.4.0$ npm -v
8.3.1$ npx -v
8.3.1
“`
【Node.js、Javascript】Seleniumで要素のXPathを一気に取得する。
# はじまり
一般的にDOMから要素のXPathを取得する方法は、ブラウザの開発者ツールからとされています。
しかし、Seleniumで要素にアクセスするためにいちいちDOMを右クリックしてXPathを取得するのも面倒だと思います。僕の場合は、300回右クリックしてXPathをメモするのは嫌だったので、一気にXPathを取得する方法を探しました。
今回は、そのときのソースを掲載します。# ソース
今回の方法では、2つファイルを作り実現しました。
作るファイルは、ブラウザで実行させるスクリプトが入ったファイルと、普通にseleniumを実行するファイルです。
Chromeで実行し、対象のCSSクラス名は`checkbox`でした。まず、ブラウザ側のファイルとなります。
最後の方は文法としては変ですが、配列のインデックスをスクリプトに載せるために`”scriptSeparator”`と記述しています。“`javascript:ブラウザ側のファイル.js
function getXpathByElement (element) {
var NODE_TYPE_ELEME