- 1. LambdaでRDS Proxy経由でAurora(MySQL)に接続する(IAM認証)
- 2. Node.jsでモジュールが認識されなかった話
- 3. Node.js環境構築
- 4. 【Node.js】LINE BOT グループにプッシュ通知を送る
- 5. Nodeのバージョン管理をnodebrewからnに切り替える
- 6. V8 の Inline Caches と Hidden Class について
- 7. OpenCC で中国語変換だけしたい!
- 8. Node.jsをバックエンドに使うべきユースケース
- 9. AWS DocumentDB に Node.js/mongoose で接続する
- 10. Fastify + Typescriptでrequestに任意の情報を加える
- 11. Node.jsでGoogle Drive上にフォルダ作成と存在確認 (Google Drive API v3)
- 12. Node.jsでGoogle Drive上のファイルをコピーする (Google Drive API v3)
- 13. 初めてのシステム案件で詰まったお話(Heroku + puppeteer)
- 14. 東京アラートBOTを作ってみた
- 15. なぜAPサーバーをWebサーバーとして利用しないのか
- 16. 世界初!異色のコラボ!「ラブライブ!」と「ワイルド・スピード」の聖地を教えてくれるLINEbot!
- 17. Cloud Functions for FirebaseでNode.js 12を利用する方法
- 18. Node.jsでGoogle Driveにファイルをアップロードする (Google Drive API v3)
- 19. Node.jsでGoogle Drive上のファイルをダウンロードする (Google Drive API v3)
- 20. 【AWS・Lambda】Lambdaから別リージョンのサービスを使用するための設定
LambdaでRDS Proxy経由でAurora(MySQL)に接続する(IAM認証)
待ち望んでいた`RDS Proxy`が東京リージョンでGAされました。
https://aws.amazon.com/jp/blogs/aws/amazon-rds-proxy-now-generally-available/早速、`Lambda`から利用する機会があったのでメモしておきます。
今回は、セキュアに接続するため、`TLS`+`IAM`認証で接続します。
上記で接続すると、`Lambda`に認証情報(具体的にはDBのパスワード)の取得コードを記載しなくて良いのがかなり良い感じです。# 前提
`Aurora(MySQL)`は存在していること
# 手順
1. `Secrets Manager`設定
2. `RDS Proxy`作成
3. `Lambda`から接続## `Secrets Manager`設定
マネジメントコンソールから`Secrets Manager`に移動して、認証情報を入力し、シークレットを作成します。
![スクリーンショット 2020-08-29 10.39.57.png](https://qiita-image-store.s3.ap
Node.jsでモジュールが認識されなかった話
Windows環境でNode.jsとwsを用いたシグナリングサーバを運用したくて使い始めてみたのですが、wsが見つからないという旨のメッセージが出る。
node.jsを入れなおそうが、wsをグローバルインストールしようが改善しなかったのでいろいろ調べてみると、どうにもパスのせいらしい。
どこかで自動的にパスを通してくれると見ましたが、それはnodeそのもののパスだけでモジュールまでのパスは自分で通さないといけないようで……結果としてはシステムの詳細設定からプロパティに飛び、環境変数のユーザー環境変数にNODE_PATHという名前で、**C:\Users\ユーザー名\AppData\Roaming\npm\node_modules**を追加するだけで動作した。
node上で見れるモジュールの参照先には既に指定されていたのでパスの問題ではないだろうと思い、package.jsonとかいろいろ見ていたのですがもっと基本的な部分でハマっていましたとさ。
Node.js環境構築
* Node.js npmインストール
* アプリフォルダ作成
“`ターミナル.
任意の場所で
mikdir list-app
“`
* フォルダへ移動* パッケージのインストール
“`ターミナル.
npm init –yes
“`>package.jsonを生成するコマンド
package.json
=> npmパッケージ設定情報などが記載されている。
>* mpmパッケージのインストール(express ejs)
“`ターミナル.
npm install express ejs
“`* 必要なファイルの作成
“`ターミナル.
(list.appのフォルダで)
mkdir views
touch app.js
cd views
touch hello.ejs
“`* コードの記載
“`ターミナル.
vi app.js//以下をコピー
const express = require(‘express’);
const app = express();
app.get(‘/’, (req, res) => {
【Node.js】LINE BOT グループにプッシュ通知を送る
# はじめに
LINE APIを使ってグループにpush通知を送る個人的メモ# モジュールインストール
axiosを使うと非常にシンプルにPOSTリクエストが送れるので採用“`bash
$ npm i axios
“`# コード
“`js:index.js
const axios = require(‘axios’)const linePost = async (msg) => {
console.log(‘linePost…’)
const token = ‘API TOKENを入力してください’const req_url = ‘https://api.line.me/v2/bot/message/push’
try {
const res = await axios.post(req_url, {
//グループID
“to”: “グループのIDを設定してください”,
“messages”: [
{
“type”: “text”,
“text”: msg
}
]
Nodeのバージョン管理をnodebrewからnに切り替える
Nodeのバージョン管理には「nodebrew」を使用していたのですが、なぜか調子がよくないのでこの際に気になっていた「n」に切り替えてみます。
私自身の備忘録になりますので、
作業手順や状況などは細かいのですがご了承ください。# 環境
・OS: Mac OS X
・Version: 10.14.6
・bash# まずは既存のnodebrewを削除
私の場合、「homebrew」でインストールした記憶があったので `brew` コマンドで削除します。“`
brew uninstall nodebrew
“`その後、しっかり消えているか確認します。
“`
nodebrew -v
“`あれ?なぜかたくさん表示されました。。。
その中には `nodebrew バージョン番号` の文字がありました。これは削除されていないということで探します。
“`
which nodebrew
“``which` で検索しました。
そうすると“`
/Users/admin/.nodebrew/current/bin/nodebrew
“`しっかりそれっぽ
V8 の Inline Caches と Hidden Class について
## 動的型付けの仕組み
JavaScript のコンパイラーである V8 は C++ で書かれていますが、[JSIL](https://github.com/sq/JSIL)というOSSの Inline Caches の説明を参照したため仕組みの部分については、C# での説明になってしまいました。仕組みとしては同じはずですのでご容赦ください。
JavaScript は動的型付けの言語であるため、動的に型を決めることができるように内部的に Variant Generic Interface を実装しています。これは共変性という性質を持つもので、戻り値が同じ型であれば再代入可能である性質です。[C#のドキュメント](https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/concepts/covariance-contravariance/variance-in-generic-interfaces)または[こちらのサイト](https://ufcpp.net/study/csharp/sp4_variance
OpenCC で中国語変換だけしたい!
# OpenCC とは?
npm の漢字変換もづーる。
https://github.com/BYVoid/OpenCC
# インストール
パッケージに入れたいわけじゃない、そもそもパッケージがない、リソースに追加したいだけなので、グローバルインストール。
`npm i opencc -g`そして、 node.js でさっさとオブジェクトをいい具合にしたいだけなので、 require に必要なフルパスを探す。
`find $HOME/.nvm/ -name opencc`
以下、
`$userdir` は `$HOME`
`$version` は `node -v` の結果
で読み替えてください。“`OpenCC-sample.js
const OpenCC = require( ‘/home/$userdir/.nvm/versions/node/$version/lib/node_modules/opencc’ );
const t2s = new OpenCC( ‘t2s.json’ );/*
* 英語,日本語,繁体字中国語 でリソース組んだけど O
Node.jsをバックエンドに使うべきユースケース
> こちらの記事は、Max Savonin 氏により2020年6月に公開された『 When To Use Node.js as a Back-End 』の和訳です。
> 本記事は原著者から許可を得た上で記事を公開しています。# Node.jsをバックエンドに使うべきユースケース
![node.jsバックエンド ](https://spzone-simpleprogrammer.netdna-ssl.com/wp-content/uploads/2020/06/When-To-Use-Node.js-as-a-Back-End-square.png)
JavaScriptは、世界で最も人気のあるプログラミング言語の1つだ。 現在の状況ではライバルになれるのはPythonとJavaだけであり、コンピューティング市場で約8%のシェアを保持している。
Webに関しては、JavaScriptの地位はさらに一つ突き抜けている。 JavaScriptは、事実上、Chrome(またはその派生物)またはFirefoxブラウザーで使用可能な大部分のWebアプリケーションを強化している。 結局の
AWS DocumentDB に Node.js/mongoose で接続する
## やりたいこと
mongo 互換の AWS DocumentDB に mongoose から接続したい。
[mongoose で docker でたてた MongoDB に接続するのにはまった話](https://qiita.com/kurab/items/90b745654f6fc4159e3a)
以前書いたような感じで接続したい。
今回の環境は、AWS で立てた AmazonLinux2 インスタンスからの接続。
“`
$ cat /etc/os-release
NAME=”Amazon Linux”
VERSION=”2″
ID=”amzn”
ID_LIKE=”centos rhel fedora”
VERSION_ID=”2″
PRETTY_NAME=”Amazon Linux 2″
ANSI_COLOR=”0;33″
CPE_NAME=”cpe:2.3:o:amazon:amazon_linux:2″
HOME_URL=”https://amazonlinux.com/”$ node -v
v14.8.0
“`なお、DocumentDB は、Toky
Fastify + Typescriptでrequestに任意の情報を加える
# 背景
認証などをサーバ側で行なった際、ユーザを特定させると思うのですが、その特定したユーザ情報をrequestにいい感じに実現したいなと思い調べてみました。ちなみに、fastifyのversionはv3系です。
結論を先に書いとくと、decorateRequestを使うといい感じにできました。
# やり方
認証機能などを実装する際、fastifyのhooksを用いて下記のように書くと思うのですが、そうするとTSに怒られる。“`javascript
fastify.addHook(‘onRequest’, (request, reply, next) => {
// TSにrequestにuserIdなんてプロパティないわと怒られる
request.userId = userId;
next()
})
“`かと言って下記の様にしちゃうと、どこからでも上書き出来てしまって嫌だな〜と思っていた。
できれば、setterを使いたい。“`javascript:@types/fastify/index.d.ts
import { FastifyInst
Node.jsでGoogle Drive上にフォルダ作成と存在確認 (Google Drive API v3)
Google Drive上でフォルダを作成します。
* 参考記事
* [Node.jsでGoogle Drive上のファイルを削除する (Google Drive API v3)](https://qiita.com/n0bisuke/items/a1b39635029242f31713)
* [Node.jsでGoogle Drive上のファイルをリネームする (Google Drive API v3)](https://qiita.com/n0bisuke/items/dcc7be337a555b018b19)
* [Node.jsでGoogle Drive上のファイルを指定フォルダに移動する (Google Drive API v3)](https://qiita.com/n0bisuke/items/8f108408a9e1067b9225)
* [Node.jsでGoogle Drive上のファイルを複製(copy)する (Google Drive API v3)](https://qiita.com/n0bisuke/items/6d73bb6e1af123db
Node.jsでGoogle Drive上のファイルをコピーする (Google Drive API v3)
Google Drive上でのファイルコピーを試します。
* 参考記事
* [Node.jsでGoogle Drive上のファイルを削除する (Google Drive API v3)](https://qiita.com/n0bisuke/items/a1b39635029242f31713)
* [Node.jsでGoogle Drive上のファイルをリネームする (Google Drive API v3)](https://qiita.com/n0bisuke/items/dcc7be337a555b018b19)
* [Node.jsでGoogle Drive上のファイルを指定フォルダに移動する (Google Drive API v3)](https://qiita.com/n0bisuke/items/8f108408a9e1067b9225)
* [Node.jsでGoogle Drive上のファイルを複製(copy)する (Google Drive API v3)](https://qiita.com/n0bisuke/items/6d73bb6e1af12
初めてのシステム案件で詰まったお話(Heroku + puppeteer)
# はじめに
こんにちは!ばーんです
今回は自分が初めて納品したシステム開発のお仕事で得たものを整理していきます。
今回書いていく内容は
– システム開発全般
– puppeteer(スクレイピング)に関すること
– Heroku(PaaS)に関することについて書いていきます。これからシステム開発していきたい!
と考えている方は、見ていただけると気づきがあるのかなと思います。## 結論
ざっくり大切だなと感じたことが3点。
**①デバッグ / コードレビューはお金を支払ってでも現役エンジニアにお願いする**
(デバッグは詰まりに詰まったか、単純に自分がしているところを見てもらう)
見ている観点がそもそも違うのでとても勉強になります。**②基礎を学ぶことが遠回りのように見えて近道**
結局上辺だけの解決方法では解決しないことが殆どでした。
今回で言えば公式ドキュメントなどの一次情報を見る。linuxについて理解を深めるなど。**③簡単なことはGASで解決できる**
システム開発これから携わりたい!という方はまずGAS触ればいいと思います。
クライアントの要望の
東京アラートBOTを作ってみた
##東京アラートBOT
LINE BOTを利用し、新型コロナウィルスの新規陽性者数、死亡者数、検査数、東京アラートが出ているかどうかを返してくれるものを作成しました。
###東京アラートを発令する基準
作る過程で東京アラートが発令される基準を調べました。– 新規陽性者数
– 新規陽性者における接触不明率
– 週単位の陽性者増加比
– 重症患者数
– 入院患者数
– PCR検査の陽性者数
– 受診相談窓口における相談件数上記の7項目の状況によって検討されるようです。
重傷者が増えていないので、当面は発令されそうにありませんね。#完成品
東京アラートBOTを製作しました!最新の情報を取得してくれます。#JavaScript なぜAPサーバーをWebサーバーとして利用しないのか
# はじめに
よく聞く話として、「Web3層構造に分けよう」というものがある。Webサーバー、APサーバー、データベースだったと思う。そこで、こんな疑問が生じた。「APサーバーでもHTTPリクエストの処理ができるなら、なんでWebサーバーが必要になるんだ?」と。調べた。
# 目次
1. Webサーバーとは?
2. APサーバーとは?
3. WebサーバーとAPサーバーを分けるもう1つの理由# Webサーバーとは?
まずWebサーバーとして、ApacheとNginxの2つが挙げられることが多い。この2つについて理解する。次の記事を読んでみて欲しい。
1. [ApacheとNginxについて比較](https://qiita.com/kamihork/items/49e2a363da7d840a4149)
2. [Nginxのアーキテクチャを理解する](https://qiita.com/kamihork/items/296ee689a8d48c2bebcd)1つ目の記事では、Apacheがマルチプロセスのプロセス駆動アーキテクチャであること、Nginxがシングルス
世界初!異色のコラボ!「ラブライブ!」と「ワイルド・スピード」の聖地を教えてくれるLINEbot!
「ラブライブ!」大好き!「ワイルド・スピード」も大好き!
そんな欲張りさん向けにLINEbotを作りました。よかったら最後までご覧ください♪#作品の背景
聖地巡礼が好きな私。ロサンゼルスにワイスピの聖地巡礼に行きたいと考えているものの、コロナで旅行も行けず・・・。「ワイルド・スピード」シリーズは、スピンオフも含めて、これまでに9作品上映されているのですが、
3作目となる「ワイルド・スピードX3 TOKYO DRIFT」は、なんと東京が舞台!東京なら巡礼できる!と思い、__ワイスピ聖地巡礼bot東京版を作ることにしました!!__
ところがどっこい!!
意気揚々と調べたものの、CGで作られていたり、すでに取り壊されていたりと、聖地情報が希薄・・・。泣これではbotとして成り立たないので、大好きな「ラブライブ!」と組み合わせ、__世界初のコラボレーション__を実現しました。
#デモ動画
完成したものがコチラです!
位置情報を送ると、最寄りの聖地を教えてくれます。Cloud Functions for FirebaseでNode.js 12を利用する方法
[公式ドキュメント](https://firebase.google.com/docs/functions/manage-functions?hl=ja)の「**ランタイム オプションを設定する**」の項目には Node.js のバージョン 12 が使えることが書かれていますが、その利用方法までは書かれていなかったのでこの記事で説明します。
—
一見、ドキュメントにあるように
“`
“engines”: {“node”: “10”}
“`の箇所を`12`とすれば動きそうですが、ここに書いても動作しません。
Node.js の 12 を利用するためには、[firebase-tools](https://github.com/firebase/firebase-tools)のバージョンを`8.6.0`以上に上げたうえで`firebase.json`に`”runtime”: “nodejs12″`を指定しましょう。
“`
{
“functions”: {
“runtime”: “nodejs12”
}
}
“`参考:[firebase/fir
Node.jsでGoogle Driveにファイルをアップロードする (Google Drive API v3)
Google Driveへのファイルアップロードも試してみます。
* 参考記事
* [Node.jsでGoogle Drive上のファイルを削除する (Google Drive API v3)](https://qiita.com/n0bisuke/items/a1b39635029242f31713)
* [Node.jsでGoogle Drive上のファイルをリネームする (Google Drive API v3)](https://qiita.com/n0bisuke/items/dcc7be337a555b018b19)
* [Node.jsでGoogle Drive上のファイルを指定フォルダに移動する (Google Drive API v3)](https://qiita.com/n0bisuke/items/8f108408a9e1067b9225)
* [Node.jsでGoogle Drive上のファイルを複製(copy)する (Google Drive API v3)](https://qiita.com/n0bisuke/items/6d73bb6e1Node.jsでGoogle Drive上のファイルをダウンロードする (Google Drive API v3)
1年くらい前にGoogle Drive関連の記事を書いてたけど、久々に触りたくなったので調査再開。
* 参考記事
* [Node.jsでGoogle Drive上のファイルを削除する (Google Drive API v3)](https://qiita.com/n0bisuke/items/a1b39635029242f31713)
* [Node.jsでGoogle Drive上のファイルをリネームする (Google Drive API v3)](https://qiita.com/n0bisuke/items/dcc7be337a555b018b19)
* [Node.jsでGoogle Drive上のファイルを指定フォルダに移動する (Google Drive API v3)](https://qiita.com/n0bisuke/items/8f108408a9e1067b9225)
* [Node.jsでGoogle Drive上のファイルを複製(copy)する (Google Drive API v3)](https://qiita.com/n0bisuk
【AWS・Lambda】Lambdaから別リージョンのサービスを使用するための設定
# はじめに
Labmda関数から別のAWSサービスを使用したい…
でも、現在リージョンと別リージョンのサービスを使いたい!そんな時に使用する設定をご紹介します。
Pinpointなど、まだ東京リージョンで使用できないサービスを使う時にも役立ちます。
# 方法
以下はNodeの例です。
“`javascript
const AWS = require(‘aws-sdk’);
// 以下を追加
AWS.config.update({ region:’us-west-2′ });
“`# まとめ
`AWS.config.update`することで、リージョンを切り替えできます。