Node.js関連のことを調べてみた2020年06月04日

Node.js関連のことを調べてみた2020年06月04日

Node.js の mysql2 で MariaDB のデータを削除 (Delete)

Async/Await を使います。

“`js:maria_delete.js
#! /usr/bin/node
// —————————————————————
// maria_delete.js
//
// Jun/04/2020
//
// —————————————————————
var mysql = require(‘mysql2’)

// —————————————————————
async function main(id_in)
{
const dotenv = require(‘dotenv’)
dotenv.config()
const user = `${process.env.user}`
const password = `${process.env.password}`
cons

元記事を表示

Node.js の mysql2 で MariaDB のデータを更新 (Update)

Async/Await を使います。

“`js:maria_update.js
#! /usr/bin/node
// —————————————————————
// maria_update.js
//
// Jun/04/2020
//
// —————————————————————
var mysql = require(‘mysql2’)

// —————————————————————
function get_current_date_proc ()
{
const today = new Date ()
var ddx = (1900 + today.getYear ()) + “-” + (today.getMonth () +1)
ddx += “-” + today.getDate ()

r

元記事を表示

Node.js の mysql2 で MariaDB のデータを読む (Read)

Async/Await を使います。

“`js:maria_read.js
#! /usr/bin/node
// —————————————————————
// maria_read.js
//
// Jun/04/2020
//
// —————————————————————
function compare_by_key_proc (left,right)
{
var aa = left.key
var bb = right.key

var rvalue = 0

if (aa < bb) { rvalue = -1 } else if (aa > bb)
{
rvalue = 1
}

return rvalue
}

// —————————————————————
func

元記事を表示

Node.js の mysql2 で MariaDB のデータを作成 (Create)

Async/Await を使います。

“`js:maria_create.js
#! /usr/bin/node
// —————————————————————
// maria_create.js
//
// Jun/04/2020
//
// —————————————————————
var mysql = require(‘mysql2’)
// —————————————————————
function dict_append_proc (dict_aa,id_in,name_in,population_in,date_mod_in)
{
var unit_aa = {}
unit_aa[‘name’] = name_in
unit_aa[‘population’] = population_in
uni

元記事を表示

FIDO2(WebAuthn)に入門してみた

# 始めに

この記事は、 WebAuthn を使用したユーザの登録フローに関する学習メモです。

作成したソースコード一式は[こちら](https://gitlab.com/s.kawamura/webauthn-nestjs-sample)に格納しておきます。

# FIDO2 について

## TL; DR

– FIDOという非営利団体が推進する認証技術、規格のこと

– 生体認証などで用いられるような専用の機器が不要

– FIDO2 = WebAuthn + CTAP

## W3C WebAuthn

FIDO認証のサポートを可能にするためにブラウザおよびプラットフォームに組み込まれている標準Web APIのこと。登録と認証の機能を持つ。

– `navigator.credentials.create()`:publicKeyオプションと併用すると、新規に認証情報を作成します。

– `navigator.credentials.get()`:publicKeyオプションと併用すると、既存の認証情報を取得します。

## CTAP(Client to A

元記事を表示

PA-API v5でAmazonの商品情報を取得する

## PA-APIの利用
PA-API を使ってアマゾン商品情報をとってみよう。そこからアフィリエイトなどで収益化ができたら良いね。

 PA-APIはアマゾンで一ヶ月以内に売上が発生していないと使えません。なので、アマゾンの商品リンク作成ツールや、ブログのアフィリエイトツールなどで売上を得られるように頑張ろう。ここが一番難易度が高い気がする。

 アフィリエイトで売上が発生したら次に、ISBNやASINが必要となる。ただ、ASINを具体的にどのように取るかの選択が少ないので、アマゾンのサイトをクロールしている。

Amazonの検索結果からasinをスクレイピング
https://qiita.com/99nyorituryo/items/c5d53a3ca8a4967b5927

## ASINから商品情報のJSONを取得する

 ここでは、ISBNやASINという本の情報から、アマゾンの表紙画像や、タイトル著者名、出版社、価格、本の種類などの情報を取得してサイトとして出力する方法を書く。
 PAAPIでは、様々な言語用にツールが配布されているが、私はnode.jsが一番慣れているの

元記事を表示

DjangoでVue.js(webpack)を扱うための備忘録

# 前書き

この記事はPythonをバックエンド(Djangoをフレームワークとして使用)、Node.jsでWebpackを用いてVue.jsをフロントエンドとして使用できるようにするための備忘録記事です。

node.jsの知識が浅いので、使い方を間違っていることもあります。ご了承ください。

また、この記事は`pipenv`や`yarn`を使用しています。導入していない場合は導入してからこの記事を読むことをお勧めします。

# パッケージのインストール

Djangoのstartprojectで自動作成されたフォルダを基にします。

## Python

“`bash
pip install django
django-admin startproject django_vuejs
cd django_vuejs
pipenv –python 3
pipenv install django
pipenv install django-webpack-loader==0.7.0
“`

## node.js

“`bash
yarn init -yp # package.j

元記事を表示

【ドットインストール】Node.js講座の仕様変更点【 #15 ドキュメントを挿入してみよう】

##はじめに
ドットインストールのNode.js講座は最終更新日が2014年のままアーカイブされていて、講座内容そのままやってもうまくいかない箇所がある。

「» #15 ドキュメントを挿入してみよう」
の章では、Node.jsのMongoClientの仕様が変わっているため、エラーが出てしまった。新しい仕様に対応した正しいやり方をメモしておく。

mongoDBの公式ドキュメントでは、バージョン3以降、MongoClient.connectにリターンする値がDBからClientに変わったと書かれている。
>「What’s new in 3.0
・MongoClient.connect now returns a Client instead of a DB.」

http://mongodb.github.io/node-mongodb-native/3.0/upgrade-migration/main/

##mongoDBに割り当てられているアドレスを知る
MongoClient.connectを記述する時、第一引数に、mongoDBに割り当てられているアドレスを記述する必要があ

元記事を表示

LoopBack4の概要 & Examples validation-appを動かしてみる

最近LoopBack4を使ってAPIを作っているので、LoopBack4の概要をお伝えしたいです。

## LoopBack4の概要

Node.js TypeScript/ES2017で実装された主にAPI向けのWEBフレームワークです。
IBMが買収したStrongLoopの開発しているOSSで、MITライセンスで公開されています。

TypeScriptのDecorator(アノテーション)でDependency Injectionの定義を行ったり、Modelのプロパティに付与することでOpenAPIのドキュメントを生成することが可能です。

self-hostedのREST API Explorerがあり、Modelを書いたらすぐに参照できるので、コードとドキュメントが必ず一致します。

また、CLIが用意されており、基本的なコードを生成したり、Exampleをインストールすることが可能です。

https://loopback.io/index.html
https://github.com/strongloop/loopback-next

## 環境の前提条件

– ma

元記事を表示

webpack3からwebpack4へバージョンアップ

保守できていなかったwebpackのバージョンをあげた際の記録です。
メモレベルで恐縮ですが、よかったら参考にしてください。

## モチベーション

* 最新のTypeScriptを導入したい
* ビルドを速くしたい

## 移行手順
基本的にはこちらのマイグレーションガイド通りです。
https://webpack.js.org/migrate/4/

* package.jsonの修正
* modeの追加
* pluginの設定見直し
* loaderのバージョンアップ

## 移行手順詳細
### package.jsonの修正
https://github.com/webpack/webpack/releases
こちらを参考にwebpackの箇所のバージョンを修正しました。

“`package.json
“webpack”: “^4.42.0”
“`

“`bash
npm install
“`

yarnの方は`yarn install`してください。

### modeの追加
`production`と`development`の二つがありwebpack.c

元記事を表示

webpack1からwebpack3へバージョンアップ

保守できていなかったwebpackのバージョンをあげた際の記録です。
メモレベルで恐縮ですが、よかったら参考にしてください。

## モチベーション
* TypeScriptを導入したい(1だとts-loaderが対応していない)
* ブラウザでのjs実行を速くしたい

## なぜ2ではなく、3なの?
https://webpack.js.org/migrate/3/
公式で
> Note that there were far fewer changes between 2 and 3, so that migration shouldn’t be too bad. If you are running into issues, please see the changelog for details.

となっていて、移行ガイドも
`To v2 or v3 from v1`
となっているから。

また、
https://medium.com/webpack/webpack-3-official-release-15fd2dd8f07b

> Migrating from webpa

元記事を表示

【DynamoDB】updateItemで新規項目を追加しないようにする 〜条件付き書き込み(ConditionExpression)を使って〜

DynamoDBのupdate処理で、テーブルに存在しない項目を指定すると、新規項目としてテーブルに追加されてしまいます([UpdateItem](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/WorkingWithItems.html#WorkingWithItems.WritingData.UpdateItem))。
条件付き書き込み(ConditionExpression)を使用し、updateで存在しない項目を指定した時に、テーブルに追加されずに何も変化しない状態になるよう実装します。

# 環境
– macOS
– AWS Cloud9
– Node.js 12

# AWS.DynamoDB.DocumentClient
JavascriptでDynamoDBを操作するとき、**AWS.DynamoDB**を使う方法と**AWS.DynamoDB.DocumentClient**を使う方法の2パターンがあるのですが、**AWS.DynamoDB.DocumentClient**

元記事を表示

Reactの人気を超えたASP.NET Coreとは?

## 2020 Web Developer Survey
StackOverflowの[2020 Web Developer Survey](https://insights.stackoverflow.com/survey/2020)の「最も愛されるWebフレームワーク」分野で、ASP.NETがReactを超えて1位になりました。なんとなく聞いたことはあるのですが、実際にどのようなものかを調べてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375274/e3db76eb-19f1-93f4-1aae-cef93874adac.png)

**ASP.NETを普段から使ってるわけではないので、間違った内容があればご訂正して頂ければと思います。**

## Fullstack Web Framework
ASP.NETは、**Microsoftが開発した開発者プラットフォーム**で、C#、F#、Visual Basicを利用して様々なアプリケーションを開発できるようにしたも

元記事を表示

ES moduleとして簡単に静的に検証できるテストを書けるようになって(個人的に)幸せが増した話

[この記事は自サイトとのクロスポストです](https://piro.sakura.ne.jp/latest/blosxom/webtech/javascript/2020-06-03_pure-esmodule-testing-framework.htm)。

# テストのtypoにテスト実行後に気付くのってあほくさいじゃないですか?

ES moduleのコードでは「関数名や変数名の誤記」をESLintなどで容易に静的に検出できます。なので、JSで書ける物は片っ端からなんでもES moduleにしたくなるのですが、いわゆる自動テストのコードでは、この性質がかえって邪魔になることがあります。

たとえばMochaのテストケースには、何の前触れもなく`describe()`や`it()`などの関数が登場します。これらが「未定義の関数呼び出し」としてエラーにならないようにするには、テストと実装でESLintのルールを切り替えて警告条件を緩和したり、テスティングフレームワークの関数やオブジェクトを警告の例外に明示したりといった対策が必要になります。

しかし、警告を甘くすればテストだけ静的

元記事を表示

macOSをバージョンアップしたらrails s出来なくなった

#問題

① macOS Catalina のバージョンを10.15.4にアップデートする

② 現在制作途中のアプリケーションのディレクトリにてrails sする

③ 以下のようなエラーが出る

“`terminal
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
“`

#解決

https://nodejs.org/ja/download/current/

上記のサイトにて、最新版のNode.jsをインストールするか

ターミナルで、homebrewを用いてインストールを行う

“`terminal
% brew install nodejs     
“`

すると、無事rails sでローカルサーバーを起動できた。

元記事を表示

PlayCanvasでTypeScriptを使うためのメモ(Webpack未使用編)

#概要

[前回の記事(準備編)](https://qiita.com/riafeed/items/d79615260c0cf3f47e92)でアセットをアップロードするための設定までやりましたが、今回はgulpを使ってトランスパイルからアップロードまで一括で行えるようにgulpタスクを作ります。

なぜgulpを使うのかというと、前回の記事にも書いた通り、[PlayCanvas用のgulpタスクが公開されている](https://qiita.com/yushimatenjin/items/5f0f178e8a4ba4a5ee57)からです。

#gulpfile.js

後述の問題のため、through2というgulp用のプラグインを使い、トランスパイル後のコードの先頭に2行ほどコードを書き加えるという泥臭い処理を行っています…(´・ω・`)

“`gulpfile.js
const gulp = require(“gulp”);
const playcanvas = require(“gulp-playcanvas”);
const pcOptions = require(“./

元記事を表示

Node.jsアプリケーションをElastic Beanstalkにデプロイする

以下の記事を参考に進めます。

[Express アプリケーションを Elastic Beanstalk にデプロイする – AWS Elastic Beanstalk](https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_nodejs_express.html)

## 検証環境

MacOS 10.15.4です。
`eb`コマンドさえ実行できれば、他のOSでも問題ありません。

## EB CLI のインストール

“`
brew update
brew install awsebcli
eb –version
> EB CLI 3.18.1 (Python 3.8.2)
“`

## eb init コマンドを使用してリポジトリを作成

“`
mkdir node-express
cd node-express
eb init –platform node.js –region ap-northeast-1
> You have not yet set up your c

元記事を表示

IBM CloudでCloud Foundryアプリケーションをデプロイをする

こんにちは。Cloud IaaS超初心者です。
先日IBM Cloud のCloud Foundryを使用してアプリケーションをデプロイしようとした時に少し詰まったので備忘録として残しておきます。

まずはコンソール上でCloud Foundryアプリケーションを作る。
1. 「カタログ」->「Cloud Foundry」を検索
2. 「パブリックアプリケーション」を選択
3. リージョン「シドニー」(東京はない)、ランタイム「SDK for Node.js」、あとはドメイン名やホスト名などよしなに。

作成すると、コンソール上から「Cloud Foundryアプリケーション」として確認できる。

次にCLIからあらかじめ作成したプロジェクトをデプロイしてみる。
ログインとCLIコマンドインストール

“`
ibmcloud login
ibmcloud cf install
“`

targetを対話的に設定、、と思ったらここで問題発生。

“`
~/Desktop/cloudfoundry/test $ ibmcloud target –cf
失敗
Cloud Fo

元記事を表示

[LINE BOT]FizzBuzz体験BOT

#目次
* はじめに
* サンプルコード
* サンプル画像と使用例
* おわりに
* 参考にしたサイト

#はじめに
今回は、LINE BOTでFizzBuzzをやってみた。
なお、当LINE BOTを作成する際に、[この記事](https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d)をベースにした。

#サンプルコード

“`javascript
‘use strict’;

// 使用パッケージ群
const express = require(‘express’); // Node.jsで利用できるWebアプリケーションフレームワーク
const line = require(‘@line/bot-sdk’); // ボットサーバへのリクエストが当LineBOTからきたものかどうかを検証してくれる(要は署名検証)
const PORT = process.env.PORT || 3000; //Node.jsアプリケーションを使用するポートを設定
// LineBOT用定数群
const config = {
cha

元記事を表示

Express.jsにPassport.jsで、任意のフォルダ配下のみをBasic認証する

# 概要

ExpressフレームワークにBasic認証を適用する方法について記載します。

任意のフォルダのみにBasic認証を適用するものとし、そのフォルダにVue-CLIによるSPA(=Single Page Application)を置くことを目的とします。

# 方針

最小限のBasic認証を認証する場合はExpress.jsプロジェクトにて提供されるbasic-auth-connectライブラリでもよいのですが、他の認証への差し替えの容易性を考慮して、Passport.js を用いることとします。

* basic-auth-connect
* https://github.com/expressjs/basic-auth-connect
* Passport.js
* http://www.passportjs.org/

認証を要求する領域と、不要とする領域を共存させたいので、任意のフォルダ配下のみをBasic認証の対象とします。

ついでに、Vue CLIで作成したSPAを任意フォルダへ配置するものとします。

なお、ユーザー名は「user」でパスワ

元記事を表示

OTHERカテゴリの最新記事