- 1. mongoDB Atlas+mongooseでどうやって始めるんや?
- 2. ループ中に配列をいじってみたらforEachの挙動が変だった。
- 3. Node.js 10,12,14のためのTypeScriptコンパイラ設定(targetとlib)
- 4. AWS LambdaでFFmpegを使って動画からサムネイルを作成する
- 5. Windows 10 + nodejs + selenium-webdriver + chromedriver で headless chrome を試してみる
- 6. opossumでサーキットブレーカーを実装する(1)
- 7. 【Auth0】公式サンプルアプリケーション(Node.js)でサインアップとログインを試す
- 8. for文の条件式はキャッシュした方が良いの?
- 9. Node.jsでIFTTTのWebhooksを使う(requestモジュール利用)
- 10. DynamoDBをNode.jsで操作する
- 11. 地震が起きたときの地図上に震度が表示されるやつが気になったから作ってみた
- 12. GitHub のサービスだけで Jamstack っぽいものを作る
- 13. Windows 10 + nodejs + selenium-webdriver + msedgedriver で headless edge(Chromium) を試してみる
- 14. Express+Node.js+Passportでgoogle認証を作る(ログイン画面を作る)
- 15. Heroku + Node.jsでPornhub から動画を検索してくる LINE Bot を作る
- 16. WindowsにてSublime Text 3でコーディング、gulp-sass(+node-sass)を利用するときは"atomic_save"を設定しよう
- 17. CentOS8にnode13をインストールする
- 18. Google のプリエンプティブル VM(Preemptible VM) の状態を監視し、落ちていたら実行する
- 19. express-generator で jade を pug に差し替える方法がわからなかったハナシ
- 20. Node.jsでrequestモジュールを使ってHTTPリクエストを実行する
mongoDB Atlas+mongooseでどうやって始めるんや?
## 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)を紹介する。
# 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”: [
“es2019”,
“es2020.bigint”,
“es2020.string”,
“es2020.symbol.wellknown”
]
}
}
“`Node.js 12.9未満はES2019の構
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)よ
Express+Node.js+Passportでgoogle認証を作る(ログイン画面を作る)
#内容
自分のためのメモだよ
hoge hoge
初心者には敷居が高い
写真を載せる## 1. 必要なものをインストールする
今回のプロジェクトで必要となるライブラリをインストールする。`--save`はパッケージのインストール時、package.json の dependencies に追加してくれる機能。
npm v5 以降はインストール時にデフォルトで package.json の dependencies に追加してくれるようになったので --save オプションは[不要になった。](https://qiita.com/havveFn/items/c5beda8572aa8c1e6be6)けど、一応つけておく。
```
npm install --save passport passport-google-oauth20
```## 2. google +の設定を行う
Oauth でアカウントを作る。
## 3. index.jsを編集する
clientIDとclientSecretをソースコードにコピペする。client ID: みんなに共有してもいい
Heroku + Node.jsでPornhub から動画を検索してくる LINE Bot を作る
## はじめに
※一応注意書き:公開していいか微妙だったので非公開です&ご利用は自己責任で
Youtubeで~~クソ~~アフィリエイターの動画を何気なく見ていたら「LINE Botがアツい!」的なことを言ってた(ほんとかな?)ので、作ってみようと思いました。まる。
ただ、普通に作ってもおもろくないし、何かネタっぽいの作ろうと思って**えっちな動画**を検索できるようにしました。まる。
といっても、LINE Botなんて人生で一回も作ったことなかったのでとりあえずこの辺を参考にしつつ進めました。
[1時間でLINE BOTを作るハンズオン (資料+レポート) in Node学園祭2017 #nodefest](https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d)
[LINE BOTをHeroku + Node.jsでやるまで](https://qiita.com/TakuTaku04/items/cb71f10669a9e9cbf71b)
[Node.jsアプリケーションをHerokuにデプロイ](https://qiita
WindowsにてSublime Text 3でコーディング、gulp-sass(+node-sass)を利用するときは"atomic_save"を設定しよう
Windows10(Pro, 64bit)でタスクランナーにGulp4(^4.0.2)を利用しているときに、scssのコンパイルがうまくいかない("@import/xxxx"を読み込んでくれない)状況になり、解決まで長いこともやもやしていたので備忘録として載せておきます。
#環境
| ツール名など | 詳細 |
|:-----------------|:--------------------:|
| OS |Windows10 Pro 64bit |
| エディタ |Sublime Text 3 |
| タスクランナー |Gulp4(^4.0.2) |
| Node.js |v14.4.0 |
| npm |v6.14.5 |## package.json
``` json
{
// ︙略
"devDependencies": {
// ︙略
"br
CentOS8にnode13をインストールする
# 概要
DiscordのbotをPythonからnodeで書き直したので、動かしていたサーバーにnodeを導入した。
デフォルトのnodeは10.19.0だったのでnodeのバイナリディストリビューションからインストーラーをダウンロードしてnode13をインストールした。# 環境
- CentOS8
- node v13.14.0# インストール
nodeバイナリディストリビューション
https://github.com/nodesource/distributions参考 : https://github.com/nodesource/distributions#rpminstall
nodeのインストール
```
$ sudo yum install curl
$ curl -sL https://rpm.nodesource.com/setup_13.x | sudo bash -
$ sudo yum install nodejs% node -v
v13.14.0% npm install -g npm
% npm -v
6.14.4
`
Google のプリエンプティブル VM(Preemptible VM) の状態を監視し、落ちていたら実行する
VM を startVM するだけのサンプルはたくさん見つかったけど、VM が実際に実行状態(RUNNING)なのかどうかをチェックしながら落ちていたら実行するサンプルが全然見つからなかったので、API を調査して実装した。
ランタイム:node.js 10
```node.js
/**
* Responds to any HTTP request.
*
* @param {!express:Request} req HTTP request context.
* @param {!express:Response} res HTTP response context.
*/
exports.startVM = (req, res) => {
const Compute = require('@google-cloud/compute');
const compute = new Compute();
const zone = compute.zone('your zone id'); // asia-northeast1-c とか
const vm =
express-generator で jade を pug に差し替える方法がわからなかったハナシ
# express-generator インストール後の jade の脆弱性表示を何とかしたいという記事です
## 経緯
```bash:install
sudo npm install express-generator -g
express somefolder
cd somefolder
express somefolder
```上 コマンドを叩いたあとで
![Clipboard01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647892/9f101073-977d-6727-4c46-9e31ce6bb03e.png)っていうのが出てやだなと思っていた。
詳しくは省くけど、結局```bash:
npm audit fix
```は全然効かなくて、でも express-generator 使ったのはじめてだし、
きける先輩もいないし(っていうか、node 案件受けてないのかもしれない。ビビり過ぎ)っていう状態。
## 原因の推測
調べてみると jade というものが
Node.jsでrequestモジュールを使ってHTTPリクエストを実行する
# Node.jsでHTTPリクエストを使う
前回の[記事](https://qiita.com/takashi53/items/69d4395c70d76ddbb0ab)のとおり、Raspberry piでNode.js環境を整えました。
## requestモジュールを準備する
このページを参考にしました。
https://garafu.blogspot.com/2017/05/node-http-httpss-request.html#postreq
requestモジュールをインストールする。
```shell-session
pi@raspberrypi:~ $ npm install request
```バージョンを確認します。
```shell-session
pi@raspberrypi:~ $ npm view request version
2.88.2
```## requestモジュールを利用してPOSTメソッドを実行する
HTTPリクエストのPOSTメソッドを試してみます。
コードは、この[記事](https://garaf