- 0.1. Nodemon【Node.jsアプリケーションを自動的に再起動ツール】
- 0.2. LINE + AWS Lambda + API Gateway でおうむ返しBotを作る
- 0.3. ReactとNode.jsアプリをAWSにデプロイしたよ
- 0.4. Log4jsでログ出力すると同時にSymbolブロックチェーンに記録する。
- 0.5. Oura Cloud APIにNode.jsからアクセスする #iotlt
- 0.6. マークダウン記法から装飾を外す
- 0.7. WebSocketを使ってAPIを作ってみた
- 0.8. nvm-windows を使って node のバージョンを変えてみた
- 0.9. モジュール系のエラーが出たとき
- 0.10. Microsoft TeamsのWebhook URLにNode.jsから情報を送ってみる ~その2~
- 0.11. ReactとNode.js、AWSで社内システムを構築するまで 1/2
- 0.12. Discord.jsでDiscordの新機能のTimeoutを実装する
- 0.13. Lambdaで当日との日付の差分を算出する [ Node.js・Python ]
- 0.14. みんなが「それな」と思える事柄を開発業務未経験エンジニアが作ってみた【個人開発】
- 0.15. [Node.js][PostgreSQL] too many connections for role の解決
- 0.16. Webの勉強はじめてみた その21 〜Slack上で動くbot作成1〜
- 1. 学んだ用語
- 2. とにかくほめてくれるbotを作る
Nodemon【Node.jsアプリケーションを自動的に再起動ツール】
## Nodemonとは…
nodemonは、ディレクトリ内のファイルの変更を検出すると、自動的にnodeアプリケーションを再起動することで、node.jsベースのアプリケーションの開発を支援するツールです。
https://www.npmjs.com/package/nodemon
##インストール方法
npmまたはyarnを利用してインストールすることができます。
開発環境のみで使用するので、ローカルインストールの方法でいいと思います。#####グローバルインストール
“`typescript:
npm install -g nodemon
yarn global add nodemon
“`#####ローカルインストール
“`typescript:
npm install nodemon –save-dev
yarn add nodemon –dev
“`ローカルにインストールすると、コマンドラインから直接nodemonコマンドを使用できません。
`package.json` の scripts に設定すると、`npmコマンド` で起動で
LINE + AWS Lambda + API Gateway でおうむ返しBotを作る
# 野望
・インターフェース:LINE公式アカウント
・処理:AWS Lambda(+API Gateway)
・DB:Notion
として簡単なツールを作ろうとしています。イメージはこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455207/35a9401a-055e-9151-b992-e381700d741f.png)
# 今回やったこと
まずはLINE公式アカウントに対する投稿の取得とLambdaでのLINE Messaging API動作検証のため、投稿した内容をそっくりそのまま返すおうむ返しBot的なものを作りました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455207/40233e98-ac4e-3f51-5010-c4adf4a3f354.png)
# 前提
・LINE Developersでユーザ登録を実施し、公式アカウントを作成している
ReactとNode.jsアプリをAWSにデプロイしたよ
ReactとNode.jsでアプリケーションを作りました。
実際にAWSを用いて環境構築して、動くようにしたので、どのようなネットワークを作ってどのような技術を用いてデプロイしたのかを書いていきます。
※どのようなネットワークを作ったかを重点的に説明します。技術の詳しい説明はまた別の記事で書きます。①まずネットワークですが、VPCを用いてプライベートサブネットとパブリックサブネットを2つずつ、プライベートサブネットとパブリックサブネットを1つずつペアにして異なるリージョンに配置した。
②インターネットゲートウェイとパブリックサブネットを紐づけた。
③NATゲートウェイを各パブリックサブネットに配置した。
④プライベートサブネットにSSHでアクセスするための踏み台サーバをEC2を用いてパブリックサブネットに配置した。
⑤各プライベートサブネットに1台ずつNodeサーバ用のEC2インスタンスを作成し、踏み台サーバ経由でnginxやpm2等をインストールし、nodeサーバを使える状態にした。
⑥ELBを配置し、各プライベートサブネットに接続するようにした。
⑦RDB(MyS
Log4jsでログ出力すると同時にSymbolブロックチェーンに記録する。
今日はログ出力すると同時に同じ内容をSymbolブロックチェーンに記録する方法を紹介します。
“`js
const log4js = require(‘log4js’);
const sym = require(“symbol-sdk”);const nodeURL = ‘https://node.xembook.net’;
const repositoryFactory = new sym.RepositoryFactoryHttp(nodeURL);
const transactionHttp = repositoryFactory.createTransactionRepository();var networkType ;
var networkCurrency ;
var epochAdjustment ;
var generationHash ;
var alertAccount;log4js.addLayout(‘symbol’, function(config) {
return function(logEvent) {
c
Oura Cloud APIにNode.jsからアクセスする #iotlt
[Oura Ring](https://ouraring.com/)のAPIドキュメントを眺めていたら結構簡単に取得できそうだったので少し調べたらnpmライブラリとして公開している人がいたので試してみました。
https://www.npmjs.com/package/oura-cloud-api
## 環境
– Node.js v17.3.0
## インストール
“`bash
npm i oura-cloud-api
“`## トークンの取得
https://cloud.ouraring.com ここからログインすると簡単に取得できました。
## コピペコード
npmのページにある通りにやると動作します。
2022年1月16日だけを取りたいとかならこんな感じです。
npmのサンプルよりも多くの情報が取れそうな`getSummaries()の関数を利用してみてます。
“`js
const Client = require(‘oura-cloud-api’);(async () => {
const accessToken = ‘
マークダウン記法から装飾を外す
単純に マークダウン記法のテキスト→HTML→HTMLタグ削除の流れで外しています。
markdown-itを使用します。
使いまわしそうなのでパッケージにしてます。
`npm i markdown-it-remove`([リポジトリ](https://github.com/s-n-1-0/markdown-it-remove))“`typescript
export function removeMdPlugin(md,
{
removeTags = true,
replaceNewlineValue = null,
escapeHtml = false,
}={}) {
md.renderer.__oldRender = md.renderer.render;
md.renderer.render = (…params)=>{
let html:string = md.renderer.__oldRender(…params);
var tmpHtml = (removeTags)
WebSocketを使ってAPIを作ってみた
# なぜ作ったのか
大学の授業で何かシステムを作れとの課題が出たから(グループワーク)# 実行環境
開発言語: node.js
使用したDB: MySQL
サーバ: AWS(EC2 t2.micro)# 仕様書を書こう
複数人でチームを組んでやる授業だったので,仕様書を書かなければ情報が共有できません.という事で仕様書を書きます.APIの仕様書は以前クライアントのプログラムを作っていた時にデザインが良かった[slate](https://github.com/slatedocs/slate)を使いました.
今回作成したAPIでは,JSON-RPC形式のメッセージをやり取りする形で通信を行います.(ただし,様々な事情によりエラー時のレスポンスが本来のJSON-RPCの形式になっていません.)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2328500/c4e415ec-3e4e-5c5d-d26f-ab7e506b07ab.png)
あと,クライアントのデータ等はサーバにあるDB
nvm-windows を使って node のバージョンを変えてみた
node のバージョンを切り替える必要があったので簡単に切り替えれる方法を残します。
nodist と迷ったが、更新されてないので nvm-windows を今回採用しました。
## nvm-windows の導入
最新のバージョンをインストールする
– [nvm-windows v1.1.9](https://github.com/coreybutler/nvm-windows/releases)
?から nvm-setup.zip をダウンロードして解凍する。
(試してないですが、すでにインストール済みである場合は nvm-update.zip で更新できるのかな?)
インストーラ起動して手順に沿って行けば問題なく install できると思います。
コマンドプロンプト or PowerShell などで?コマンドでバージョンやヘルプを確認できます。(管理者で開かないとバージョン変えられなかったはず)
“`PowerShell
nvm
“`## インストール済み node の確認
“`PowerShell
nvm list
“`## 別バージョ
モジュール系のエラーが出たとき
#結論
とりあえず`yarn upgrade`を行う。
これをすれば大抵のモジュールエラーは解決すると思います。自分も某colors.jsでエラーが出ていたところをアップデートしたら直りました。
#それでも直らない場合
一旦モジュールを入れる前まで戻してみるのも人流の手であると言えます。
gitのヒストリーを遡って確認してみるといいかもしれません。
Microsoft TeamsのWebhook URLにNode.jsから情報を送ってみる ~その2~
## ただのテキスト以外も送ってみたい
https://qiita.com/n0bisuke/items/f61b1f653d0aa2f93dc2
前回の記事の続きで、ちょっとリッチな情報を送ってみます。
前回は最もシンプルなテキスト送信を試していました。WebhookのURLの取得は前回記事参照です。
> ![スクリーンショット 2022-01-17 17.27.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/321cd0d6-173a-af59-169f-04933a3dafda.png “スクリーンショット 2022-01-17 17.27.10.png”)
こちらのドキュメントを参考に書いてみました。
https://docs.microsoft.com/ja-jp/outlook/actionable-messages/message-card-reference
## コピペ用コード
こんな感じです。
“`js
‘use strict’cons
ReactとNode.js、AWSで社内システムを構築するまで 1/2
こんばんは。natariです。
社内システムの構築プロジェクトが終わったので、日記風にどんなことをやったかを書いていきます。
まず、プロジェクトの概要ですが、社内でExcelで管理している出社状況データ(今日は○○さんはテレワークだよーとか、〇日はお休みだよーとか、部の出社率とかを管理するもの)のweb化でした。
上長からこんな技術使ってとか、こんな風に作ってという指定はありませんでした。
なのでまずは社内の集会などを利用して、どんなシステムを作ったらいいかという皆さんの要望を聞き出すヒアリングから開始しました。
大体20人くらいの方から意見を頂き、すべての意見を反映させることは出来ないので、要望の数が多いものをピックアップして、あとはExcelで管理していたデータをそのままweb上で再現することとしました。
ここで僕にとって幸福だったのは、使用技術の指定がなかったことです。ちょうどプライベートでReactやTypeScript、Node.js、AWSあたりを勉強していたので、SPAでWebアプリを作ってみようと思い、この4つの技術を使うこととしました。
SPAについて簡
Discord.jsでDiscordの新機能のTimeoutを実装する
#初めに
少し前にDiscordにTimeoutが実装されましたね
最近はテスト勉強などで忙しくて開発をしていませんでしたが今日から復活です!
Timeoutに対して詳しくはこちら
Docs
https://discord.js.org/#/docs/main/stable/class/GuildMember?scrollTo=timeout
released
https://github.com/discordjs/discord.js/releases/tag/13.5.0#必要なもの
Discord.js v13.5.0以降
Node.js v16以降#コード
“`js
const {Client,Intents} = require(‘discord.js’);
//面倒くさいので分割代入
new Client({intents: [ Intents.FLAGS.GUILD_MESSAGES,Intents.FLAGS.GUILDS]})
//インスタンス作る
.on(‘messageCreate’, message => {
//メッセージイベントを発火する(int
Lambdaで当日との日付の差分を算出する [ Node.js・Python ]
#はじめ
Lambdaで、当日の日付を`20220116`の形にし、5日後の日付`20220121`を引くと、`5`という数字が出せるようにすることを目的として、Lambdaを作成したため、まとめます。#Lambdaコードの流れ
###当日の日付
1. 2022-01-16 11:41:21.282791(タイムゾーンはUTC)
– ↓UTCをJSTに変換する
2. 2022-01-16 11:41:21.282791(タイムゾーンはUTC)
– ↓タイムスタンプに変更
2. 1642765665851
– ↓年、月、日のみに変換。(時間、分、秒は、切り捨て)
2. 20210116###5日後の日付
1. 2022-01-16 11:41:21.282791(タイムゾーンはUTC)
– ↓日付を5日進める
1. 2022-01-21 11:41:21.282791(タイムゾーンはUTC)
– ↓UTCをJSTに変換する
2. 2022-01-21 11:41:21.282791(タイムゾーンはUTC)
– ↓タイムスタンプ
みんなが「それな」と思える事柄を開発業務未経験エンジニアが作ってみた【個人開発】
2021/11/30ごろに、みんなの共感を集めるアプリ「SORENA」をβリリースしました。
SESでのお仕事をしながらアプリのβリリースまで行うことができました。
この記事では『SORENA』のサービス内容や使い方、技術とのご紹介をさせていただきます。
また、βリリースにあたってフィードバックも頂いたので、これからのアプリの課題も書こうと思います。# 目次
[サービスの紹介](#サービスの紹介)
-何をするアプリなのか?
-メインページ
-結果画面
[技術の紹介](#技術の紹介)
-フロントエンド
-バックエンド
-ホストサービス
-使用データベース
-テーブル設計
-主な使用技術
[悩んだポイント](#悩んだポイント)
-カードスワイプ
-node.jsのノンブロッキング処理
-MySQLの自動的切断問題
[アプリの課題、将来的な実装](#アプリの課題、将来的な実装)
-なぜ、βの状態でリリースしたのか?
-これからのアプリの課題(フロント)
-これからのアプリの課題(サーバー)
[Node.js][PostgreSQL] too many connections for role の解決
# 設定
– PostgreSQL 13.5
– Node.js 14.16.1
– pg(node-postgres) 8.7.1# 問題
– Node.jsからDBに対するクエリのレスポンスが返ってこない
– 以下のコードの`results`が返らない“`javascript:model.js
exports.getUserByUserId = async function (user_id) {
var query = {
text: “select * from users where user_id = $1;”,
values: [user_id],
};
await pool.connect();
try {
results = await pool.query(query);
return results.rows[0];
} catch (e) {
console.log(e);
}
};
“`– psqlでCUIから接続しようとすると以下のエラーで接続できない
“`
p
Webの勉強はじめてみた その21 〜Slack上で動くbot作成1〜
N予備校の「プログラミング入門Webアプリ」を受講しています。
今回は第3章7〜9節です。
講義内ではTODOのbotでしたが、復習も兼ねて自分で作りました。学んだ用語
CRUD クラッド
:::note
ソフトウェアが情報の永続化をしようとしたときに出てくる操作、Create, Read, Update, Deleteの頭文字をとったもの。
:::リファクタリング
:::note
ソースコードを見易くする。可読性の向上。
:::テスト駆動開発
:::note
実装や修正よりも先にテストを用意し、テストに適合するようにリファクタリングを繰り返すことでコードの品質を高めていく開発手法
:::とにかくほめてくれるbotを作る
要件
1. 「ほめて」 : あらかじめ用意された配列からランダムで発言
2. 「もっと ~」 : ~という内容を配列に登録。
3. 「ほめないで ~」 : ~(インデックス)番のメッセージを削除
4. 「見せて」 : 登録されているメッセージ
Node.js Express ミドルウェア
#【Node.js Express ミドルウェア】
##Expressで足りないものは、**ミドルウェア**でカバー
– リクエストレスポンスに対して、任意の追加処理を行う関数のこと。
– リクエストオブジェクトの変更
– レスポンスオブジェクトの変更
– リクエスト・レスポンスを用いた独自の追加処理 …etc##ミドルウェアの実装
– 通常処理“`
function (req, res, next) {
//何かの処理 (次の処理を呼べるように next )
next();
}
“`– エラー処理
“`
function (err, req, res, next) {
//何かの処理 (次の処理を呼べるように next )
next();
}
“`##ミドルウェアの組み込み
“`
const express = require(“express”);
const app = express();app.use((req, res, next) => {
//アプリケーションレベルのミドル
フロントエンドとNode.jsで繋いだ時のCORSエラーについて
フロントエンド(Angular)とバックエンドの繋ぎこみを行なった時にcorsエラーが表示され、それに対応した流れを書いていこうと思います。
####エラーの内容
“`
core.js:6498 ERROR Error: Uncaught (in promise): HttpErrorResponse: {“headers”:{“normalizedNames”:{},”lazyUpdate”:null,”headers”:{}},”status”:0,”statusText”:”Unknown Error”,”url”:”http://localhost:3000/some”,”ok”:false,”name”:”HttpErrorResponse”,”message”:”Http failure response for http://localhost:3000/some: 0 Unknown Error”,”error”:{“isTrusted”:true}}
at resolvePromise (zone.js:1213:1)
at resolvePro
Laravel Mix で ERR_OSSL_EVP_UNSUPPORTED が出た時の対策
npm run dev を行った時、次のようなエラーが出ます。
“`text
{
opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error’ ],
library: ‘digital envelope routines’,
reason: ‘unsupported’,
code: ‘ERR_OSSL_EVP_UNSUPPORTED’
}
“`これは次のバージョンで発生します。
“`text
Node.js v17.3.1
Node.js v17.3.0
Node.js v17.2.0
Node.js v17.0.0
“`次のバージョンでは発生しないことを確認しました。
“`text
Compiled Successfully
“`“`text
v16.13.2
v16.10.0
v15.14.0
v15.0.0
v14.8.3
v14.8.2
v14.8.1
“`
Node.js on Dockerでエラー発生(Error: EACCES: permission denied, errno: -13)
# はじめに
DockerでNext.jsを使ってウェブページを作ろうとしたけど、`npx create-next-app {name}`の段階で`glob error`っていうワケワカランのが発生した。テンションが下がった。# 環境
– Linux (KDE neon based on Ubuntu)
– Docker version 20.10.12
– image node:17.3-alpine# 問題
“`
# コマンドをうちこむ
docker-compose run –rm node npx create-next-app nextjs-tutorial
Creating nextjs-tutorial_node_run … done
Creating a new Next.js app in /usr/src/app/nextjs-tutorial.Using npm.
Installing dependencies:
– react
– react-dom
– next
#エラー❗❗❗なにこれ。
glob error [Error: EACCES