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

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

【自分用メモ】JavaScript

## Node.js

### npmとYarnの違い
* Yarn:Facebook発のパッケージマネジャーはnpmに代わるスタンダードになるか
* https://www.webprofessional.jp/yarn-vs-npm/

元記事を表示

大切なことはすべてUbuntuが教えてくれた 無人アップグレードを知りましょう

# はじめに
本記事はUbuntuの無人アップグレードについて記載しています。

Ubuntuは無人アップグレードという機能がデフォルトで有効になっていて、自動的にOSのパッケージのアップデート及びアップグレードを行ないます。

システム管理者として注意しないといけないのは、無人アップグレードの機能を理解することです。

例えば、本番環境でシングル構成で運用しているサーバがあるとします。
無人アップグレードがデフォルトの状態でサービスの自動起動を設定していない場合は、サービスに支障が出るリスクがあります。

過去の事例ですが、サービスがダウンしていていたので原因を調査しました。
`uptime`コマンドを実行すると起動時間が短いことから、サーバ再起動が行われたと判断し、シスログより以下のログを確認しました。

“`console
Feb 20 09:14:48 <ホスト名> systemd[1]: Stopped Unattended Upgrades Shutdown.
“`

上記ログの約3〜4分後にOS再起動が行われましたが、その後サービスの自動起動が設定されていなかったため

元記事を表示

プログラムの怖いところ ライブラリのバージョンアップ

# はじめに
本記事はライブラリのバージョンアップが原因でプログラムが動かなくなり、どの様に原因を調査して解決まで行き着いたかについて、システム開発の一助となるストーリーをご紹介します。

## 概要
とあるtoCのシステムにおけるバックエンドのプログラム(API)で軽微な修正を行い、デプロイしたときの話になります。

本番環境と開発環境が存在し、開発環境でテストした上で本番環境でリリース作業を実施。本番環境でデプロイ後、システムの一部機能で正常性が確認できない事態が発生しました。

バックエンドはDockerで開発を行っているため、デプロイ時に`docker compose build`でビルドを毎回行っています。デプロイ自体は成功しているため、ライブラリのバージョンアップが関係しているのではないかと予想していましたが、のちに調査が難航することになるとは、このときは予想していませんでした。。

当該事象発生時は原因究明に至らなかったため、切り戻しを実施し、リリース作業は中断。翌日に原因調査を行いました。

![question_head_gakuzen_boy.png](https:

元記事を表示

Kabanero を使ったクラウド・ネイティブなアプリ開発(VSCode + Codewind)を体験 – その後

2020年7月8日に実施された [初夏のIBM Dojo #9 Kabaneroを使ったクラウド・ネイティブなアプリ開発を体験](https://ibm-developer.connpass.com/event/178322/) ワークショップに参加してきました。講師 @osonoi さんです。

以前に翻訳した [Kabanero](https://qiita.com/yamachan360/items/7b4a53758ecdbe876a5f) と、それと関連する [Developer Experience](https://qiita.com/yamachan360/items/1550887f76f3a0a8f47d) にある「VS Code を使用して Kabanero を試す」を体験できるオンラインセッションでした。[セッション資料](https://speakerdeck.com/osonoi/chu-xia-falseibm-dojo-number-9-kabanerowoshi-tutakuraudoneiteibunaapurikai-fa-woti-yan) がわ

元記事を表示

nodemailerでGmailのエイリアスのアドレスから送信できるようにする

以下ページの転載になります。ご了承ください。

[nodemailerでGmailのエイリアスのアドレスから送信できるようにする – Yuto Hongo Portfolio](https://hongo.dev/blog/nodemailer-send-emails-using-alias-address-for-gmail)

—-

2020/07 時点での記事となります。

G Suite前提での手順となってしまいますが、参考になればと思います。

—-

[ひとことでいうとこんな記事]

nodemailerからメール送信する際、自分の所持しているメルアドを利用せずにエイリアス(Info@, sales@ 等)のアドレスからの送信が可能です!

—-

[こんな人におすすめ]

– メディアを作ることになったが、お問い合わせの自動返信機能で個人アドレスを使うわけにはいかない人

—-

[目次]

– 参考記事
– 手順1. Google OAuth 2.0 設定
– 手順2. G Suite で エイリアスアドレスの

元記事を表示

Node.jsで複数ファイルを送るには

こんにちは、wattak777です。

一つだけファイルを送信する、というサンプルは幾つかあるのですが、複数ファイルの場合のサンプルをちょっと作ってみました。

サーバー側はmulterを使った以下のサンプル。

“`javascript:server.js
var express = require( ‘express’ ) ;
var app = express() ;
var multer = require( ‘multer’ ) ;

app.post(‘/file_upload’, multer({dest: ファイルを置くパス}).single(‘my_file’), function (req, res) {
console.log(req.file.path, req.file.originalname) ;
res.sendStatus(200) ;
});

var server = app.listen(12345, function() {
console.log(“listening at port %s”, server.addr

元記事を表示

Macにnode.js,npmのインストール

# node.js,npmのインストールの流れ
① Homebrewのインストール
② nodebrewのインストール
③ node.jsのインストール
上記の手順で行います。
node.jsがインストールされれば、同時にnpmもインストールされます。

# Homebrewのインストール

“`ruby:terminalコマンド
$ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
“`

# nodebrewのインストール

“`ruby:terminalコマンド
$ brew install nodebrew
“`
## nodebrewのバージョンの確認
バージョンを確認することで、インストールがうまく行っているのかを確認できる。

“`ruby:terminalコマンド
$ nodebrew -v
“`

# node.jsのインストール

“`ruby:terminalコマンド
$ nodebrew insta

元記事を表示

Macにnodebrewでnodeをインストールするまでにしたこと

Macに__nodebrew__で__node__をインストールしようとおもったところ、__nodebrew__でインストールした__node__のバージョンと`node -v`のバージョンが合っていなかったので、解決した方法を備忘録として残します。

#npm、node、nodebrewをアンインストールする
まずは__npm__、__node__、__nodebrew__をインストールしているかを確認します。

“`:ターミナル
$ npm -v
$ node -v
$ nodebrew -v
“`

コマンドでバージョンが確認できない場合はインストールの段階に進みましょう。

バージョンが確認できた場合はアンインストールします。

##npmをアンインストールする

まず__npm__をアンインストールします。

次のコマンドを順番に実行してください。

“`:ターミナル
$ npm uninstall -f npm
$ rm -rf .npm \
> node_modules
“`

`npm -v`で確認してバージョンが表示されなければ成功です。

##nodeをアン

元記事を表示

$ npm run watch しようとしたら Sorry, there’s a problem with nodist. Couldn’t resolve node version ~~~と出たときの対処法

# 課題
“`
$ npm run watch
“`
しようとしたら
**Sorry, there’s a problem with nodist. Couldn’t resolve node version spec %s: %s 4.5.0 Couldn’t find any matching version**
と怒られた。

なんでだろうと調べたりいろいろ試したりしましたが小1時間ほどハマり心優しい同僚に助けてもらったので覚書しておきます。
池田さんありがと。

# 対処法

**1. nodeのバージョンを確認する**

“`
node -v
v0.0.0
“`

**2. .node-version(node-dev-env\.node-version)を開いて記載されているバージョンを確認する**

私の場合「v11.13.0」と記載されていました。
このバージョンとnode-v したときのバージョンを合わせてやります。

**3. 今適用されているnode.jsのバージョンを確認**

“`
$ nodist
(x64)
> 4.5.0 (C:\xamp

元記事を表示

Node.jsで動くオンライン対戦リバーシを作ってみた

#ソース
https://github.com/inari2019/osero
正直かなり醜いコードだと思ってます。
#実際に作ったもの
http://pocketmikan.ml:3000/
※予期なくリンクが変わったり、封鎖している可能性があります。
#環境
バックエンド:Node.js(Express.js)
ソケット通信:socket.io
フロントエンド:javascript
描画:HTML5 Canvas
#構成
![無題の図形描画 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619412/42187d84-17b4-db32-edc7-51a280394bb9.jpeg)

#コードの解説
大体のことはgithubのコードに書いてるので割愛

実行の流れとしては
プレイヤーから駒を置く場所を受け取る(index,js)

駒を置けるか確認したのち駒を置く(modules/gameclass.jsのput関数)

置いた後の盤面データなどをプレイヤーに送信(index.js)

元記事を表示

AWSサーバーレス連絡フォームの作り方?(AWS Lambda、API Gateway、SES)

AWS S3にサイトを安くて簡単にホスティングできますが、S3は静的なサイトしかホスティングできないですので、従来ならバックエンド処理が必要となるフォーム送信の実装などは難しそうですね。しかし、クラウド時代ではそんな心配はありません!ソリューションはサーバーレスアーキテクチャです!AWSはすでに色々なサーバーレス構築のツールを提供しています。

今回はユーザからお問い合わせやフィードバックを送信するたびに、任意な宛先に通知メールを送信するシンプルなサーバーレスメールサービスを一緒に作ります。AWS LambdaとAPI Gatewayを利用し、簡単なAWSサーバーレス構築を紹介します。

構成図はこんな感じです。
![diagram.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665134/fe6fb6dc-e62e-4eaa-0a50-776a74b19ac4.png)

処理の流れとしては、ユーザーから連絡フォームより入力した情報を収集し、クライアント側のブラウザからAmazon API Gat

元記事を表示

GitHub Pagesを使った自前無料ブログの作り方(Hexo)

## 本文の前に
この記事は[まどれーぬ](https://qiita.com/madoreenu)さんの公開された記事[ゼロからわかる!GitHub Pagesを使った自前無料ブログの作り方(Jekyll)](https://qiita.com/madoreenu/items/b47833bf785562c77819)からインスパイアを受けています。ぜひ読んでみてください。とてもわかり易くまとまっています。

※今回の記事はLinux(Ubuntu)で操作を行っています。それ以外のOSをお使いの方は少しやり方が異なる場合があります。ご了承ください。
## この記事でわかること
* [Hexo](https://hexo.io/)というNode.js.製の静的サイトジェネレーターを使ったサイトの制作方法

* Github Pagesでの公開方法

## 余談と事前準備
余談ですがなぜJekyllではなくHexoを使うのかについてです。理由は唯一つ

### **私がRubyを使ったことがなくJSのほうが使いやすかったから**

これだけです(笑)

はい、では事前に準備するものです

元記事を表示

csv-parser モジュールでCSV文字列を処理したい場合の方法

## csv-parser で CSV文字列をパースする。

https://www.npmjs.com/package/csv-parser

上のモジュールで単純なCSV文字列をパースしたい場合はリーダブルストリームを
一旦生成することで csv-parserのインターフェイスを合わせる事ができる。
(もっと簡単な方法がありそう

“` typescript
import csvParser from “csv-parser”
import { Readable } from “stream”

//CSVが格納された文字列
const csvString = `col1,col2,col3
row1,row2,row3
row1,row2,row3`

// Readable Stream を作成
const readable = new Readable({
read:(size) => {
//この処理の記述の必要性が実は良く分からない
return true
}
})

readable.on(“data”,(

元記事を表示

SendGridでいい感じにメールの配信停止グループを管理する

今[個人で開発しているサービス](https://anymake.app/)にメールの配信基盤を整えようと思って色々調べていたので、その結果わかったことを備忘録としてまとめておきます。

## メールの配信停止設定で最低限やっておきたいこと

メールの配信設定を行うにあたって、以下の項目が守られていることが個人的に望ましかったです。

1. 簡単にメールを配信停止できること
2. 自分のサービスとメール配信サービスでメールの配信停止設定を共有できること

### 1. 簡単にメールを配信停止できること

まず、送られるメールは簡単に配信停止できるようにすべきです。[配信停止のベストプラクティスと、SendGrid の便利な機能](https://sendgrid.kke.co.jp/blog/?p=10712)にも以下のように書かれています。

> 1. 簡単に配信停止できるようにする

> 配信停止の手順が簡単であればあるほど、受信者と送信者、双方にとってメリットがあります。配信停止のボタンやリンクをどこに置くか決める時、隠すように配置してはいけません。また、リンクがきちんと機能する

元記事を表示

SiriっぽいTeamsアプリを作ってみる

# はじめに

仕事にしても何にしても使えるものは使っておくに限る。
最近はリモートワークの影響でteamsを使い始めたので、これも使っておきたい。
どうせなら勤怠とかの自動化に使おうとも思ったが、敷居が高そうなので途中から計画変更してSiriにした。
だって、`Siriっぽいもの作った事あります`って言っておけば何かしら仕事もらえるんじゃなかろうか。

# 結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42445/2339e452-8381-aaf7-dc6f-4bfec2eda6b1.png)
何も分からない俺のSiri

# Teams API

TeamsにはTeamsに蓄えられた情報を扱うためのRest APIが用意されている。

+ [Microsoft Teams API](https://docs.microsoft.com/ja-jp/graph/teams-concept-overview)
+

元記事を表示

typescriptから直接bundle.jsを作成する方法

本記事ではtypescriptから直接bundle.jsを作成する方法について書いていきます。

<今までのbundle.jsの作成方法>
1.tsファイルをコンパイルしてjsファイルを作成
2.jsファイルをbundleしbundle.jsを作成

この流れが面倒なので直接やってしまおう。

1.ts-loaderをインストールする

`npm install –save-dev ts-loader typescript `

2.webpackの設定ファイルに記述

webpack.config.jsにどのファイルにts-loaderを実行するかを記述する。

“`ruby:webpack.config.js
const path = require(‘path’);

module.exports = {
entry: ‘./src/main.ts’, //最初に読み込ませるファイルもtsファイルに変更

output: {
filename: ‘bundle.js’,
path: path.resolve(__dirname,

元記事を表示

typeScriptにWebpackを使用する

※あくまで個人の学習ノートなので参考程度に

1.package.jsonを追加

`npm init -y`

package.jsonが作成される

2.webpackインストール

`npm install –save-dev webpack webpack-cli`

node_moduleのフォルダとpackage-lock.jsonが作成される。

※作成されるnode_moduleはgitにpushしない

3.webpack.config.jsをディレクトリに追加

webpack.config.jsはwebpackの設定ファイル

“`ruby:webpack.config.js
const path = require(‘path’); //requireはimportと同じ扱いでpathはnodejsがもっているモジュール

module.exports = {
entry: ‘./dist/main.js’, //一番最初に読み込ませるjsファイル

output: { //生成したファイルをどこに格納するかを指定

元記事を表示

MAC:node.jsでmysqlへ接続する

node.js から mysqlに接続するのに苦労しましたので覚書をします。

##環境
macOS : 10.15.5 (Catalina)
node.js : v14.3.0
mysql : ver 8.0.19

#mysqlインストール
“`shell:shell
$ brew install mysql
“`
でインストールされました。
(他の情報でmpnを使用するやり方が書いてありましたが、私の環境では起動ができませんでした)

##コネクションを実行するコード
“`javascript:mysqlconnection.js
//————————————————————
// my sql connection
//————————————————————
var mysql = require(‘mysql’);

//DBの定義
var dbConfig = {
host

元記事を表示

【アプリ編】textlintではじめる自動文章校正

###textlintとは

**textlint**(テキストリント)は、設定した校正ルールに基づいたミスの指摘・修正を自動化するツールです。

本来はコマンドプロンプト等の『黒い画面』からインストールして使うのですが、作者の方([@azu_re](https://github.com/azu)さん)がより使いやすいデスクトップアプリ版をリリースしてくださっています。
こちらで十分な方にとっては圧倒的におすすめです。

#アプリのダウンロード

https://github.com/textlint/textlint-app/releases/tag/v1.4.1

↑こちらのページからインストーラをダウンロード、実行します。

アプリを開くとこのような画面が出ます。▼
スクリーンショット 2020-07-07 11.47.51.pngbrowser-syncのport番号をランダムにする

複数の案件を同時に進めている都合上、複数個の[browser-sync](https://www.npmjs.com/package/browser-sync)を同時に走らせたいときportが衝突してイライラしちゃうので、そもそもportをランダムにしとけばいいんじゃないか説。

他にいい方法があれば教えてください。。。

“`js
// browser-sync.js
module.exports = () => {
const path = require(‘path’);
const browser = require(‘browser-sync’).create();

browser.init({
files: [
// 監視したいファイルのパターンリスト
],
// 動的・プライベート ポート番号からランダムで
port: Math.floor(Math.random() * (65535 – 49152)) + 49152,
startPath:

元記事を表示

OTHERカテゴリの最新記事