Node.js関連のことを調べてみた2019年12月05日

Node.js関連のことを調べてみた2019年12月05日

Unityの.alfファイルから自動で.ulfをダウンロードしたい!

# CIのActivateとかでライセンスを自動でActivateさせたい!

CIでUnityを扱う時はJenkinsとかであれば問題ないのですが、CircleCIやGitHub Actionsを使用するときにDockerでのライセンス認証では.ulfファイルというのが必要になってきます。

現在.ulfファイルをコマンドラインから生成することはできません。生成するにはブラウザ経由の一択です。
それを今回Puppeteerというnode.jsのツールを使って自動化してみました。

※今回の認証フローはPersonalEdition固定になります。

Puppetterとは、Webブラウザでの操作をソースコードから行えるものになります。
詳しくはこちら
[Puppeteer](https://developers.google.com/web/tools/puppeteer)

今回のリポジトリはこちら
[MizoTake/unity-license-activate](https://github.com/MizoTake/unity-license-activate)

## 実装

元記事を表示

Custom Vision Service を使用してインテリアの樹種分析

##CustomVisionService を 簡単なサイトを作って使えるようにしたい

今週はMicrosoftAzureから画像認識を試したのでそちらの成果を簡単に使えるサイトを作ろうと
思いました。内容はせっかくなので本業にちなんでインテリアの画像から樹種を解析してくれるものを目指しました。
内装を考える時にテーマとなる樹種を一つ決めて組み合わせていくと空間にまとまりが出るので、
自分が良いなと思う家具や内装がどの樹種なのかを調べられると買う家具や似合う色が決まってきて
インテリアを構築する時の参考になると良いなと思いました。

##環境
Node.js v10.16.3
Windows 10 pro
Visual Studio Code v1.39.1

##概要

①MicrosoftAzureでアカウントを作成
②Microsoft Custom Vision Service を使用して画像解析のプロジェクトを作成、トレーニング
③作成したプロジェクトをAPIとして使用する
④APIを取得する為のコードを書く

##参考資料

主に①~②の参考にいつもどおり先陣

元記事を表示

How to build a Twitter bot with NodeJs

Building a Twitter bot using their [API](https://codesource.io/how-to-consume-restful-apis-with-axios/) is one of the fundamental applications of the Twitter API. To build a Twitter bot with Nodejs, you’ll need to take these steps below before proceeding:

Create a new account for the bot.
Apply for API access at developer.twitter.com
Ensure you have NodeJS and NPM installed on your machine.
We’ll be building a Twitter bot with Nodejs to track a specific hashtag then like and retweet every pos

元記事を表示

discord.jsでDiscord Botを作ってみた

# 概要
discord.jsでbotを作ったので、それを書き留めときます。
インストールは、Ubuntu mateを想定したものを紹介致します。
他のOSを使っている方に関しては、調べてください

# Node.js&npmのインストール方法
コマンドラインを開き下のコマンドを実行します。

“`
sudo apt install -y nodejs npm
“`

# discord.jsのインストール方法
こちらもコマンドラインを開き下のコマンドを実行します。

“`
sudo npm i discord.js
“`

# 実際に書いていく
まずは、discord.jsを読み込むコードを書きます。

“`javascript:index.js
const discord = require(“discord.js”);
const client = new discord.Client;
“`

簡単な返事機能のコードを書きます。

“`javascript:index.js
//続き
client.on(“message”, message =>{
if (

元記事を表示

Node.jsのasync/awaitとPromiseを超ざっくり_前編

現在関わっているプロジェクトでNode.jsを使って開発しています。
その過程でハマったこと、今回はasync/await・Promiseについての記事になります。

といってもNode.jsを使ったことのない人もいると思うので簡単にNodeの非同期処理について紹介してから、ハマったポイントについて書きたいと思います。
※すみません、未完成なのでタイトル詐欺になってしまっています。
※100番煎じなので非同期の書き方に関してはあんまり詳しく書きません。
※arrow関数使ってません。説明省くので。
※間違いあれば教えていただければと思います。

## 目次
1. Node.jsの非同期処理について
2. 非同期処理の書き方
2.1 コールバック(callback)関数
2.2 Promise   ←この記事はココまで!
~~2.3 asycn/await~~
~~3. Promiseとasycn/awaitが一緒だと思ったらハマった件~~
4. 参考

Nodeを使ったことがあって1~2についてわかって

元記事を表示

【待望リリース!】もう Lambda×RDS は怖くない!LambdaでRDSプロキシを徹底的に検証してみた 〜全てがサーバレスになる〜

本日の reinvent でのリリースで衝撃のアップデートがたくさん出ましたね。EKS on Fargate や SageMaker の大幅アップデートも魅力的ですが Lambda の常識をくつがえす RDS のプロキシ機能が登場しました ?

Node.jsのHTTPリクエストヘッダの最大サイズでハマった話

## 現象

– Node.js(v12.3.1)で立てたWebサーバにアクセスすると、時折HTTPリクエストに失敗する
– Cookieを削除したり、ブラウザを再起動すると治ることもあるが、根本的な原因がわからない

“`javascript:サンプルコード
const http = require(‘http’);

const server = http.createServer((req, res) => {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
res.end(‘Hello World’);
});

server.listen(8080);
“`
## 原因

– Node.jsの最大HTTPリクエストヘッダサイズのデフォルト値である8kBを越えるHTTPリクエストヘッダサイズを送信していたことが原因だった

– Node.jsは、2018/11に[DoS攻撃の脆弱性対応](https://nvd.nist.gov/vuln/detail/CVE-2018-12121)として、デフォルトの

元記事を表示

EventEmitterですべてのイベントを取得する(ワイルドカード)

Node.jsのEventEmitterは便利なんですがすべてのイベントを取得できません。
何で実装していないのかよくわかりません。

[EventEmitter2](https://github.com/EventEmitter2/EventEmitter2)というEventEmitterを便利にしたものがありこれを使えば良いのですが、更新が止まっています…

頑張ればできるんじゃねと思って書いたら数分でできたのメモ的な意味を込めて記事にしてます。

## コード
“`js:index.js
// いつものEventEmitter
const EventEmitter = require(“events”);

// いつものEventEmitterを拡張
class ExtendEventEmitter extends EventEmitter {
// emitされた内容を”*”に再emit
emit(name, …args) {
return super.emit(“*”, name, …args);
}
}

// 拡張し

元記事を表示

React アプリケーションのボイラープレート CLI を作って使っている話

この記事は [ミクシィグループ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/mixi) の5日目の記事です。

React で CLI というと [create-react-app](https://create-react-app.dev/) が有名です。
格好良いベースを作ってくれるのですが個人的には依存 package が多いので、自分用の CLI を作ってそちらを使っています。

## @yami-beta/create-ts-app

TypeScript を使ったアプリケーションのベースを作る対話型のインターフェースを持った CLI ツールです。
https://www.npmjs.com/package/@yami-beta/create-ts-app
![create-ts-app.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31403/f3d5a91e-f681-8866-abf1-8a807dc8cb82

元記事を表示

C10K問題とNode.js

# C10K問題(クライアント1万台問題)
– アクセスするクライアント数が1万を超えると、サーバーのスレッド(並列処理の単位)数が増え、サーバーのメモリーなどのリソースが不足してしまう問題
– 処理能力に余裕があっても、クライアントの数が多くなると効率が悪化しサーバがパンクする
– プロセッサの処理能力には余裕があっても、サーバの台数を増やさなければいけなくなってしまう

### 回避方法
– サーバーサイドではイベント駆動方式を利用しているNode.jsなどを使用する
– イベント駆動により大量のリクエストを同時に処理できるスケーラビリティを備えている
– ノンブロッキングI/Oモデルにより、C10K問題に対応する

# Node.jsとは
> スケーラブルなネットワークアプリケーションを構築するために設計された非同期型のイベント駆動のJavaScript環境
[Node.js](https://nodejs.org/ja/)

– それぞれの意味
– スケーラブル : 拡張性が高い
– 非同期 : 各要求(request)の処理が完了するのを待た

元記事を表示

Paiza Cloud で LINE Bot を試してみる

プロトアウトスタジオアドベントカレンダー4発目の記事です!

昨日は @tkyko13 さんの「word2vecの勉強で「[word2vecの勉強で「ナダルリバースエボリューション」が再現できるのではないかと思いついたのでやってみた](https://qiita.com/tkyko13/items/0e5d5db8477a64209635)」でした。

## Paiza Cloud とは

[クラウド開発環境 PaizaCloudクラウドIDE \- クラウドIDEでWeb開発\!](https://paiza.cloud/ja/)

![2019-12-03_01h00_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56170/c8751369-2152-9c0f-0fb1-3180a212fbc1.png)

> ブラウザを開くだけでLinuxサーバが使える!
クラウド開発環境PaizaCloudクラウドIDEでは、ブラウザだけでLinuxサーバを操作できます。ファイル操作、テキスト操作、コマ

元記事を表示

Microsoft Custom Vision Serviceによる中耳炎画像認識LINE Botの作成

##概要

プログラムの勉強を始めて5か月ほどの開業医です。

前回、Microsoft Custom Vision Service を使用して鼓膜画像認識を試し、極めて高い診断精度でした。
[Microsoft Custom Vision Service を使用した鼓膜画像認識](https://qiita.com/doikatsuyuki/items/bbed5e902577d68fb8a9)

前回は「正常鼓膜」か、「急性中耳炎」か、「滲出性中耳炎」かを分けるためのタグだけでしたが、今回は急性中耳炎の重症度を判定できるようにするため「鼓膜の発赤の程度」、「鼓膜の腫脹の程度」、「耳漏の有無」に関するタグに追加しました。

さらに、LINE Botと連携しNowでデプロイしました。

##実装

スマホから鼓膜の写真をLINE Bot宛てに送ると、中耳炎かどうか応えてくれるLINE Bot。

##概念図

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453374/b74cf0e8-

元記事を表示

NestJSで始めるGraphQLサーバ開発(コードファースト編)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163591/299e2b62-2ee2-656b-aba1-267d4f50b148.png)
NestJSは、TypeScriptで記述するバックエンドアプリケーションフレームワークです。デフォルトで DI(Dependency Injection) の仕組みをサポートしており、テスト可能な構成を簡単に作ることができる特徴があります。
今回の記事ではNestJSを使用して最もシンプルなGraphQLサーバを構築します。
↓完成イメージ
![nestjs-graphql.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163591/b5df3895-ef8d-bc4b-6cfa-c2fa8d9f72d4.gif)

# GraphQLの基本

GraphQLは、RESTエンドポイントのように煩雑に管理されたエンドポイントではなく、1つのエンドポイントに対して厳

元記事を表示

SeleniumでSortableJS系ライブラリのDrag&Dropをテストする

# 前置き

[前回の記事](https://qiita.com/marumaru/items/fe81d43ef1ba8ddf2101)で、Vue.Draggableを使ったコンポーネントのドラッグ&ドロップを実行するCypressのテストコードについて書きました。
これをSeleniumで書いたらどうなるだろうと思い試してみたところCypress以上にハマったので、解決方法を記録しておきます。[^TestCode]

本記事内のドラッグ&ドロップのテストコードは、Vue.Draggableに限らずSortableJSベースのライブラリなら概ね動くものになります。
以下の公式サイトのデモにて検証しています。(2019/12/3時点)

* SortableJS [デモページ](https://sortablejs.github.io/Sortable/#simple-list)
* Vue.Draggable [デモページ](https://sortablejs.github.io/Vue.Draggable/#/simple)
* react-sortablejs [デモページ](

元記事を表示

Angularスキル獲得のために始めたこと、始めること

お仕事だったり同期と作ったアドベントカレンダーだったりのおかげで、Angularを触る機会を得た小生でございます。
今までフロントどころか、Webアプリの制作もしたことがなかったので、これをいいことにいろいろと勉強していってる最中です。

# Angularを触るにあたって何を知っていたか
* HTML
* CSS
* Javascript
* Node.js

HTML、CSSはお猿さんと同じくらいの知識がありました。
JavascriptはほぼNode.js触ってから覚えた感じ。
元々プログラミング経験があったので、ここらへんはなんとか理解しつつ進めております。

# Angularを理解するためには
* **[公式:入門チュートリアル](https://angular.jp/start)**(Angular未経験者向け)
* **[公式:基礎チュートリアル](https://angular.jp/tutorial)**(入門チュートリアルをやった人向け)
* **[2020年のフロントエンドマスターになりたければこの9プロジェクトを作れ](https://qiita.com/ra

元記事を表示

【自分用メモ】supertestとpassport-stubをmochaテストに組み合わせる

##supertestとは
supertestはmochaと組み合わせて使うのですが、ExpressのRouterモジュールのテストを行うことができます。
例えば以下の例では、`/`にアクセスしたらindexRouterが処理されるかテストしてくれます。
もちろん、`/login`も`/logout`もテストしてくれます。

“`JS:app.js
app.use(‘/’, indexRouter);
app.use(‘/login’, loginRouter);
app.use(‘/logout’, logoutRouter);
“`

##passport-stubとは
passport-stubは、passportモジュールを利用した認証システムを、テストする際に役に立ちます。
例えば、
「facebook認証などのテストをしたいけど、facebookアカウントを持っていない!」
といった時に役に立ちます。

##テストの例
“`JS:test.js
//supertestの読み込み
const request = require(‘supertest’);
//supe

元記事を表示

DIコンテナの実装を理解して、軽量 DI コンテナを自作しよう

# なぜ DI コンテナを自作するのか

関心の分離がされているアプリケーションは変更に強く、良い設計と言えます。[Dependency Injection](https://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E6%80%A7%E3%81%AE%E6%B3%A8%E5%85%A5)(以下 DI) は関心の分離を実現する テクニックの 1 つとしてよく見られるパターンです。しかしクラス間の依存関係が増えれば増えるほど、注入する依存を作ることは困難になり、DI のコストは段々と膨らみます。そのようなとき、 **依存を自動で解決し、欲しいインスタンスをすぐにとりだせる DI コンテナ** は有効な解決手段となり得ます。

JavaScript/TypeScript においても DI コンテナを提供するライブラリが存在します。例えば、[InversifyJS](https://github.com/inversify/InversifyJS) や [tsyringe](https://github.com/microsoft/tsyringe)

元記事を表示

nvm チートシート

## 前書き

この記事は オープンロジアドベントカレンダー2019の3日目です。
みなさんはNode.js のバージョンマネージャーは使っていますか?
私は[nodebrew](https://github.com/hokaccha/nodebrew) をずっと利用していたのですが、LTSを入れるコマンドが存在せず、
使い勝手の悪さを感じていたので、最近は [nvm](https://github.com/nvm-sh/nvm) というバージョン管理マネージャに乗り換えました。

使い方については、 GitHubの Readme と `nvm –help` の出力結果を読めばそれで十分なのですが、その都度、英語を読むのは面倒なので、以下に個人的によく使うであろうものを取捨選択してチートシートとしてまとめておきます。
本稿での nvm のバージョンは v0.35.1 です。
`.nvmrc` については別の方の記事を参照してください。本稿では言及しません。

## チートシート

### 前提
– 間違ったオプションや文字列を入力したら、`nvm –help` の内容を表示される。

元記事を表示

nodejs v12(LTS)におけるasync, awaitを用いたstream処理

# nodejs v12(LTS)におけるasync, awaitを用いたstream処理

QualiArts Advent Calendar 2019、3日目の記事になります。
## はじめに

2019年10月21日にnodejs v12のLTS版が公開されました。

nodeは奇数バージョンが開発版、偶数バージョンが安定版となるため、v11以降の今まで実プロジェクトだと利用しにくかった機能がこれによりいくつか使えるようになりました。

そのなかでもasync-generatorsやfor-await-of loops構文が大手を振って使えるようになったことにより、stream関連の処理が大きく変わると感じたため、すでにいくつか紹介されている記事も有りますが、この機会に改めて紹介したいと思います。
また、最後に簡単なサンプル処理も記述しているので、ご参考いただければ幸いです。

## for-await-of loops

今までstreamはeventEmitterを利用し、発火したeventをトリガーに処理を記述していました。
for-await-of loopsを用いると下

元記事を表示

OTHERカテゴリの最新記事