- 1. Rails 6+Webpacker で Yarn, Node.js 環境をHerokuでもMacでも同じにする
- 2. Node.jsのEventEmitterについていろいろ
- 3. Node.jsで複数の画像をWebPに一度に変換する
- 4. LINE Bot開発 簡単な会話ができるようになるまで(前編)
- 5. Tensorflow.jsをNodejsで高速化しようとしたが、旧型CPUでは、WebGLの方が高速だった話
- 6. Node – Error: unable to verify the first certificate
- 7. Windows 10 + nodejs + selenium-webdriver + geckodriver で headless firefox を試してみる
- 8. mongoDB Atlas+mongooseでWebアプリをどうやって始めるんや?
- 9. ループ中に配列をいじってみたらforEachの挙動が変だった。
- 10. Node.js 10,12,14のためのTypeScriptコンパイラ設定(targetとlib)
- 11. AWS LambdaでFFmpegを使って動画からサムネイルを作成する
- 12. Windows 10 + nodejs + selenium-webdriver + chromedriver で headless chrome を試してみる
- 13. opossumでサーキットブレーカーを実装する(1)
- 14. 【Auth0】公式サンプルアプリケーション(Node.js)でサインアップとログインを試す
- 15. for文の条件式はキャッシュした方が良いの?
- 16. Node.jsでIFTTTのWebhooksを使う(requestモジュール利用)
- 17. DynamoDBをNode.jsで操作する
- 18. 地震が起きたときの地図上に震度が表示されるやつが気になったから作ってみた
- 19. GitHub のサービスだけで Jamstack っぽいものを作る
- 20. Windows 10 + nodejs + selenium-webdriver + msedgedriver で headless edge(Chromium) を試してみる
Rails 6+Webpacker で Yarn, Node.js 環境をHerokuでもMacでも同じにする
Rails 6+Webpacker開発環境をJS強者ががっつりセットアップしてみた(翻訳)
のなかの「再現可能な環境: Node.jsとYarn編」。
### .nvmrc
nvmを使用してNode.jsのversionを管理する
### .yarnrc
“`bash
$ yarn policies set-version 1.22.4
“`### package.json
“`js
},
“engines”: {
“node”: “13.13.0”,
“yarn”: “1.22.4”
}
}
“`## 依存関係の自動Update
> JavaScriptやRubyの依存関係の自動アップデートについては、Renovateを一度チェックしてみることをおすすめします。### Renovate
GitHub に無料で追加できた
Node.jsのEventEmitterについていろいろ
Node.jsのEventEmitterについて書いていきます。
## EventEmitterとは
Node.jsにおいて独自のイベントを作成したいときに使われます。EventEmitterの基本的な使い方は、`on`や`once`メソッドなどを使って、イベント名を登録して、リスナーに登録したイベントが呼び出されたときに実行する処理を書いていきます。ここでいうイベントの呼び出しとは、`emit`メソッドでイベント名を指定して登録したイベントを呼び出します。
`’start’`イベントと`’end’`イベントを実装した簡単な例をやってみたいと思います:
“`:js
const { EventEmitter } = require(“events”);
const eventEmitter = new EventEmitter();eventEmitter.on(‘start’, () => {
console.log(‘start event!’);
});// This method don’t run.
eventEmitter.on(‘end’, () =
Node.jsで複数の画像をWebPに一度に変換する
既存の画像(jpgやpng)をディレクトリを分けつつコマンドで一度にWebPに変換するスクリプトを書きました。
WebPについての説明はここでは割愛します。
[公式アナウンス](https://developers.google.com/speed/webp)## 環境
* MacOS
* Node.jsのバージョン・・・12.8.1
* npmのバージョン・・・6.10.2### 前提
以下をインストール済みであることを前提としています。
* Node.js
* npm(又はyarn)## ディレクトリ構造
“`
├── node-extensions
│ └── sharp.js ← 実行するスクリプトファイル。
├── package.json
├── src
│ └── images
│ ├── original ← 元の画像を入れるディレクトリ。
│ └── webp ← 変換後の画像を入れるディレクトリ。
“`## パッケージのインストール・スクリプトの実行
### 必要なもの
* [sharp(0.25
LINE Bot開発 簡単な会話ができるようになるまで(前編)
# 概要
LINE Botを開発する方法を記載しています。今回は簡単な会話botを作成します。BotはNode.jsで作ります。# 必要なスキルと環境
・Node.js/Javascriptの基本的な知識
・Githubを使ったことがある#開発の流れ
+ LINE DevelopersでLINEアカウント(以下チャンネル)を作成
+ Bot本体のプログラムを開発し、デプロイ
+ Bot本体のプログラムをカスタマイズしてデプロイするという作業を繰り返してBotを拡張していく。#開発
まずは、送信したメッセージをおうむ返ししてくれるBotを作ります。
##1.Channelを作成する
LINE Bot用のチャンネル(LINEアカウント)を作成します。無料で作成できます。
[作成方法はこちらを参考にしてください]
(https://developers.line.biz/ja/docs/messaging-api/getting-started/#%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E3%81%AE%E4%BD%9C
Tensorflow.jsをNodejsで高速化しようとしたが、旧型CPUでは、WebGLの方が高速だった話
Tensorflowjsで2000年からの株価を元に、新値3本値のAI予測をブラウザで行っていたが、Nodejsで高速化できないかトライしてみた。CPUは激古のi5-650。
作業手順は、こちら参照。
https://randomwalkjapan.blogspot.com/2020/06/nodejstensorflow-how-to-setup.htmlプログラムはこちら。
https://github.com/tanakayutaka/Tensorflow.js-tools-/blob/master/Nodejs%20Tensorflow%20BM%20test結論は、
NodejsでNodeジェネリックでないTensorflow処理 6分
NodejsでNodeジェネリックなTensorflow処理 CPUが古すぎて動作せずChromeでハードウエアアクセラレーションON 4分 <== 最速 ChromeでハードウエアアクセラレーションOFF 12分 ということで、最近のCPUを持っていない限り、Tensorflowをジェネリックで走らせることはできず、ただ
Node – Error: unable to verify the first certificate
Using https or wss to create a client connection. And it will create failed.
“`
Error: unable to verify the first certificate
“`Added the below code to disable the SSL check.
“`
process.env[‘NODE_TLS_REJECT_UNAUTHORIZED’] = 0;
“`https://blog.darkthread.net/blog/npm-unable-get-local-issuer-cert-issue/
https://medium.com/nodejs-tips/ssl-certificate-explained-fc86f8aa43d4
Windows 10 + nodejs + selenium-webdriver + geckodriver で headless firefox を試してみる
#目的
Firefoxをnodejs + selenium-webdriver + geckodriverからキックしてみる##SeleniumBasicのインストール
※環境変数の文字数制限により、同居(笑)
[Seleniumbasic](https://florentbr.github.io/SeleniumBasic/)の Release page より SeleniumBasic-2.0.9.0.exe をDLする
exeを実行すると、C:\Users\user_name\AppData\Local\SeleniumBasic にインストールされる
ソースコードのプロジェクトをVS2019で開くと .NET Framework 3.5 を指定しているので
Windowsの設定 -> アプリ -> オプション機能 -> Windowsのその他の機能 -> .NET Framework 3.5 が有効であることを確認する##selenium-webdriverのインストール
※v4なのは、Edgeと比較するため(かもしれない)> npm install -
mongoDB Atlas+mongooseでWebアプリをどうやって始めるんや?
## 1. Atlasにclusterを作成する
まずは登録やん。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324917/9a770787-95f1-09f5-ef45-575499c87ff8.png)### 1.1 Add New User
Securityの中にある"Database Access" 項目に行くと、Add New Database Userがあるからそこに行くやん。![71700.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324917/a2ac3fc2-f2f6-0c5c-c576-e696c1bc645a.jpeg)
### 1.2 whitelistの設定
ADD IP ADDRESSでWhitelist Entryを設定するやん。とりあえず、これは"ALLOW ACCESS FROM ANYWHERE"を押しとこ。![71701.jpg](https:/
ループ中に配列をいじってみたらforEachの挙動が変だった。
配列を取り出してループさせるのにfor-of やforEachってあるじゃないですか。
ループ中に配列をいじったらどうなるんだろうと思ったのでやってみました。結論から言うと、forEachの挙動が直観に反していて面白かったです。
# 実験環境
- Node.js 12.18.0
- Windows 10# 実験1. ループ中に配列を短くして見よう。
下記のようなtest_for,test_forof,test_foreachという関数をつくって実験します。
読めばわかりますが、各ループの中で、配列の先頭をshift()で酉だし、毎回短くしていきます。```javascript
test_for([0, 1, 2, 3, 4, 5, 6]);
test_forof([0, 1, 2, 3, 4, 5, 6]);
test_foreach([0, 1, 2, 3, 4, 5, 6]);
function test_for(a) {
let p = 0;
for (let i = 0; i < a.length; i++) { let v = a
Node.js 10,12,14のためのTypeScriptコンパイラ設定(targetとlib)
本稿では、Node.jsのバージョンに合ったTypeScriptのコンパイル設定(tsconfig.json)を紹介します。
サーバサイドアプリケーションやCLIアプリケーションをTypeScriptで開発する場合、実行環境としてNode.jsのバージョンを気にすることになります。本稿は、狙ったNode.jsのバージョンに合ったコンパイル設定はどうしたらいいかについて説明するものです。
# Node.js 10
```tsconfig.json
{
"compilerOptions": {
"target": "es2018",
"lib": ["es2018"]
}
}
```Node.js 10は、ES2018の構文とライブラリの両方を100%サポートしているので、`target`も`lib`も`es2018`にする。
# Node.js 12
## Node.js 12.9未満の場合
```tsconfig.json
{
"compilerOptions": {
"target": "es2019",
"lib": [
AWS LambdaでFFmpegを使って動画からサムネイルを作成する
S3にアップロードしたMP4からサムネイルを作成する方法を雑にまとめました。
## 手順
### 1. FFmpegをダウンロード
MP4からサムネイルを取得してくれるライブラリを取得する。
コイツが何者かの詳細は調べてみてください。[公式](https://johnvansickle.com/ffmpeg/)から `ffmpeg-git-amd64-static.tar.xz`(2020年6月時点で最新)をダウンロードする。
ダウンロードしたzipファイルにはいろいろはいっているが、今回は`ffmpeg`という名前のバイナリファイルだけ使う### 2. Lambdaのコードを書く
適当にLambda用のディレクトリを作る。
そのディレクトリの中で、先程ダウンロードしたFFmpegのzipを解いて、中にある`ffmpeg`という名前のバイナリファイルを以下の改装に配置する。
お次にindex.jsにLambdaで実行したい処理を書く(以下)
*エラーハンドリングとかはしてないので、いい感じに改良して下さい。```
.
├── bin
│ └── ffmpeg
└──
Windows 10 + nodejs + selenium-webdriver + chromedriver で headless chrome を試してみる
#目的
Chromeをnodejs + selenium-webdriver + chromedriverからキックしてみる##SeleniumBasicのインストール
※環境変数の文字数制限により、同居(笑)
[Seleniumbasic](https://florentbr.github.io/SeleniumBasic/)の Release page より SeleniumBasic-2.0.9.0.exe をDLする
exeを実行すると、C:\Users\user_name\AppData\Local\SeleniumBasic にインストールされる
ソースコードのプロジェクトをVS2019で開くと .NET Framework 3.5 を指定しているので
Windowsの設定 -> アプリ -> オプション機能 -> Windowsのその他の機能 -> .NET Framework 3.5 が有効であることを確認する##selenium-webdriverのインストール
※v4なのは、Edgeと比較するため(かもしれない)> npm install -
opossumでサーキットブレーカーを実装する(1)
# 概要
node.jsでサーキットブレーカーパターンを実装したライブラリ「opossum」の利用方法メモです。
バージョンはv5.0.0です。# サーキットブレーカーパターン
外部システムやあるリソースと連携した処理を行う箇所にサーキットブレーカーパターンを入れておくと以下のような事が実現できます。
- 外部システム/リソースに障害が発生してエラーが多発する場合は、要求された処理を実行しない/処理数を制限する
- 外部システム/リソースがが正常処理できるようになった場合は、正常運転に戻す具体的には外部システムの障害によってレスポンス遅延などが発生した場合には、リクエスト送信を遮断して連鎖的な発生を防ぐ。または、キャパシティを超えるリクエスト送信を制限してシステム全体のパフォーマンス劣化を防ぐ事ができます。
なので何か障害とか突発的なリクエストが発生した時に、慌てずにすみます、、。
(外部システムとの連携のお話だとネットワークの問題なのでアプリで実装せず、サービスメッシュで対応というのが今どきなんでしょうか)>サーキット ブレーカー パターン - Cloud D
【Auth0】公式サンプルアプリケーション(Node.js)でサインアップとログインを試す
# はじめに
Auth0のNode.jsサンプルアプリケーションを動かしてサインアップとログインをします。サンプルアプリケーションは以下で公開されています。
https://github.com/auth0-samples/auth0-nodejs-webapp-sample# アプリケーションの準備
## アプリケーションの登録Auth0の管理画面にアクセスし`Applications`の画面を開きます。
![スクリーンショット 2020-06-11 17.06.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490013/24c2d109-8ba0-71a9-7834-2e42cb74ca4b.png)
`Applications`の画面の右上に表示されている`CREATE APPLICATION`を押してアプリケーションを作成します。
表示されたアプリケーション作成画面に任意のアプリケーション名を入力し`Regular Web Applications`を選択します。![
for文の条件式はキャッシュした方が良いの?
(2020/6/15 実験3を追記)
巷でよく、forループの条件に使う配列のlengthの値はキャッシュしておけという記事を見かけたことはありませんか?
私も最近遊び始めたAtCoderでよくTLEにぶつかるので、lengthをキャッシュしたりして、あがいています。
……が、それで解決したことって無いんですよね~。というわけで、配列のlengthをキャッシュすると良いのが本当かどうか、調べてみました。
ついでにループ数を別の方法で毎回計算したり、for-ofを使う場合も一緒に実験しています。# 実験1
まずは普通にやってみます。
ループの中身が必要なのかどうは解りませんが、とりあえず適当に書いてみた。```javascript
"use strict";let t = 22;
let a = Array(2 ** t);
let p = Array(4).fill(0);
const alen = a.length;console.time("teisu");
for (let i = 0; i < alen; i++) { p[0] += 1; }
Node.jsでIFTTTのWebhooksを使う(requestモジュール利用)
## Node.jsでIFTTTに連携する
前回までのお話。
- [Raspberry piにNode.jsをインストールする](https://qiita.com/takashi53/items/69d4395c70d76ddbb0ab)
- [Node.jsでrequestモジュールを使ってHTTPリクエストを実行する](https://qiita.com/takashi53/items/76c5987b73b76ba9ea96)## 今回はIFTTTを使ってGoogle スプレッドシートにデータを書き込む
IFTTTの設定は、端折ります。(また別途)
### IFTTTのWebhooksのデータ送信のポイント
- 送信できるデータは最大3つ
- POSTメソッドを使う
- データはJSON形式### Webhooksのシークレットキーをメモする
Webhooks → Documentation を開き、シークレットキーをメモしてください。
![IFTTT-000.PNG](https://qiita-image-store.s3.ap-northeast
DynamoDBをNode.jsで操作する
Node.jsでDynamoDBを触ってみたので、備忘録として残しておきます。
プライマリーキーとして、パーティションキーのみの方法と、パーティションキー+ソートキーでユニークにする方法があります。
前者を「ハッシュキーテーブル」、後者を「複合キーテーブル」と呼ぶことにします。以下、参考にさせていただきました。(ありがとうございました)
[コンセプトから学ぶAmazon DynamoDB【インデックス俯瞰篇】](https://dev.classmethod.jp/articles/conceptual-learning-about-dynamodb-index/)
[【詳解】JavascriptでDynamoDBを操作する](https://qiita.com/Fujimon_fn/items/66be7b807a8329496899)
[DynamoDB での Node.js の開始方法](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/GettingStarted.Node
地震が起きたときの地図上に震度が表示されるやつが気になったから作ってみた
皆さんは、地震が起きたとき何をしますか?
- Twitterで実況する
- テレビのチャンネルをNHKに変える
- ラジオを付けるなど、色々あるかと思います。
私は、Twitterで**特務機関NERV防災**のアカウントをチェックします。**もちろん身の安全を確保するのが最優先です。**
Twitterでは特務機関NERVの他にYahooやらtenki.jpやらウェザーニューズなどが地震情報を発信しています。
このようなアカウントで私は毎回、下のような画像をどうやって生成するのが凄く気になっていました。【各地の震度 2018年9月6日】
震度6強:
[北海道]安平町早来北進、安平町追分柏が丘 pic.twitter.com/9OtZggW7Pj— 特務機関NERV (@UN_NERV) GitHub のサービスだけで Jamstack っぽいものを作る
## JAMSTACK とは何?
- [Jamstack | JavaScript, APIs, and Markup](https://jamstack.org/)
を読んでみると、
- サーバー通信を伴う動的要素は排除して、クライアントサイドで完結するコンテンツ配信をしようぜ
- 動的にコンテンツを変えたいなら、その都度、サイト自体を生成しなおそうぜという方式に見えます(解釈者によってだいぶ「揺れ」があるようにも感じますが)。。
[東京都 新型コロナウイルス感染症対策サイト](https://stopcovid19.metro.tokyo.lg.jp/) (および派生サイト)もこの方式で作られていて、「あ、これ JAMSTACK って言うんだー」と思った次第です。
Webアプリを(PWA などで)オフライン対応したいと考えたとき、オフライン環境下では通信処理が一切使えないわけですから、コンテンツを静的に含んだ形で配信してしまう Jamstack はよい方式だな、と感じました。
コンテンツを変化させサイトを再構築する仕組みも含めて、できるだけシンプルな構成で MVP
Windows 10 + nodejs + selenium-webdriver + msedgedriver で headless edge(Chromium) を試してみる
#目的
Edge(Chromium)をnodejs + selenium-webdriver + msedgedriverからキックしてみる
※非同期系の処理は、まだまだだなぁ・・・・##SeleniumBasicのインストール
※環境変数の文字数制限により、同居(笑)
[Seleniumbasic](https://florentbr.github.io/SeleniumBasic/)の Release page より SeleniumBasic-2.0.9.0.exe をDLする
exeを実行すると、C:\Users\user_name\AppData\Local\SeleniumBasic にインストールされる
ソースコードのプロジェクトをVS2019で開くと .NET Framework 3.5 を指定しているので
Windowsの設定 -> アプリ -> オプション機能 -> Windowsのその他の機能 -> .NET Framework 3.5 が有効であることを確認する##MSEdgeDriver
[バージョン情報](edge://settings/help)よ