- 1. 無料でSSR・ホスティング・API鯖を立てれるVercel。TypeScript・ExpressでAPI鯖を立てる。
- 2. AWS S3 アクセスログの集約化
- 3. Microsoft Teamsにメッセージと画像を送る(Node.js)
- 4. Node.jsのHTTPクライアントまとめ2020
- 5. AWSLambda(Node.js)の入力パラメータチェック
- 6. Reactでnpm startができなくなった話。
- 7. クジラとネコの親子プログラミング – Docker for Windowsを使ってScratch3.0のオリジナル拡張機能を試してみよう。
- 8. stdout is not a ttyに叱られる
- 9. node環境でのmysql
- 10. Node.js + osm-static-maps で OpenStreetMap や地理院地図の画像を取得する
- 11. Node.js nを使い複数バージョンを共存させる
- 12. LINE チャンネルの友達登録や投稿情報を kintone に保管
- 13. 【JavaScript】String配列の要素をキーとするオブジェクトを作成する方法
- 14. YouTubeチャンネルにアップロードされた動画を埋め込みHTML形式で取得してみた
- 15. Puppeteerで日本語文字化けを防ぐRTA
- 16. Vue.js+Node.jsを利用したチャットアプリの作成
- 17. 【node.js】process.env.{変数名}
- 18. Javascript で RDSの起動・停止を制御して節約する
- 19. Twitter API v2 でキーワードから直近1週間分ツイートを収集する
- 20. Cloud Toolkitを使用したECSインスタンスへのNode.jsアプリケーションのデプロイ
無料でSSR・ホスティング・API鯖を立てれるVercel。TypeScript・ExpressでAPI鯖を立てる。
Vercel
https://vercel.com無料で有名な**FaaS**(Function as a Service)の
**Firebase Functions**や**Netlify Functions**より使い勝手がいいと思う。GitHubの**捨てアカ**作ってログインしようとしたら**弾かれた**。
たぶんアカを作ってから**ある程度時間が経たない**と弾かれるっぽい。## ソースコード
“`package.json
{
“scripts”: {
“ts-build”: “webpack –mode production”
},
“devDependencies”: {
“@types/express”: “^4.17.8”,
“ts-loader”: “^8.0.3”,
“typescript”: “^4.0.2”,
“webpack”: “^4.44.1”,
“webpack-cli”: “^3.3.12”,
“webpack-node-externals”: “^2.5.2”
AWS S3 アクセスログの集約化
# 前提
AWSの[S3](https://aws.amazon.com/jp/s3/)のアクセスログは1回のアクセスにつき、指定したバケットに1個のアクセスログファイルを作成するとします。
感覚的には1回につき1個のファイルではなく、同時間に発行されたログを1つのファイルにまとめて吐いているようです。細かいことは[Amazon S3 サーバーアクセスのログ記録](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/ServerLogs.html)を見て下さい。
つまり「1時間毎に1回、1日で計24回のアクセスがあったとすると作成されるログファイルの数は24個」としてこの記事を読んで下さい。# 何がしたいか
前提で述べたように1回のアクセスで1個のログファイルが作成されるので、1000回アクセスされると1000個のログファイルが作成されてしまいます。「1日に発行されたログを全てまとめて見たい」という時に全てのログファイルをローカルにダウンロードするなんて事はしたくありません。[S3](https://aws.amazo
Microsoft Teamsにメッセージと画像を送る(Node.js)
Teamsのチャンネルに投稿用アカウント(Incoming Webhook)を追加して、
チャンネルにメッセージや画像を投稿する##1.投稿したいチャンネルにIncoming Webhookを追加
* Teamsの投稿したいチャンネルで右クリックして [コネクタ] を選択
* [incoming Webhook] を検索して [追加] をクリック、次画面で再度 [追加] をクリック
* incoming Webhookの名前とアイコン画像を設定して [作成] をクリック
* Webhook用のURLが表示されるのでコピーして [完了] をクリック##2.base64にエンコードした画像をメッセージに埋め込んでpostで送信
* node.jsの環境つくり、”fs”と”request”をインストール
* index.jsと同じ階層に画像を準備
* 以下のindex.jsを実行“`javascript:index.js
const fs = require(‘fs’);
const request = require(‘request’);fs.readFile(‘画
Node.jsのHTTPクライアントまとめ2020
# 概要
2020/2にNode.jsのrequestモジュールがDeprecated(非推奨)になってしまいました。
https://qiita.com/kE-sakai/items/1a64462ad41c36813c92そこで複数の代替モジュールについて各種比較サイトを調べてまとめました。
|モジュール名| 定量的な優位性[参照サイトNo] |
|:———–:|:-:|
|node-fetch | バンドルサイズが小さい[1]
ダウンロード数が多い[2] |
|axios|GitHub starsが多い[3]|
| bent |APIスタイルが多い[1]
アップデートが頻繁[5] |
| superagent |メンテナーが多い[5] |
|ky|インストールサイズが小さい[3]|
| got | |
| make-fetch-happen | |
| unfetch | |
|tiny-json-http | |
|needle | |
| urllib| |# 参照サイト
## 1.
AWSLambda(Node.js)の入力パラメータチェック
AWSLambda(Node.js)のREST APIにおいて入力パラメータのチェックがしたい
そうだ、[value-schema](https://www.npmjs.com/package/value-schema)を使おう#value-schemaができること
1.必須パラメータの有無、
2.型、
3.想定範囲内に存在するか(e.g.limit < input < limit)、 上記3点における入力パラメータの検証と修正ができる #使い方 大きく2つの書き方がある....と勝手に思ってる 基本のフォーマットは vs.型名( {オプション} ) ```javascript //====その1. オブジェクトの中身をまとめてチェックする方法==== var vs = require("value-schema"); // 入力パラメータのオブジェクト let requestbody = { testId: "test", testNum: 1, testlist: [1, 2, 3], NoCheckid:"no", }; // 入力パ
Reactでnpm startができなくなった話。
#React.js Node.js環境でnpm start実行時にエラー発生。
解決策だけ見たい人は最後に載せてます。(予定)##問題編
#####[【React】いまどきのJSプログラマーのためのNode.jsとReactアプリケーション開発テクニックという参考書](https://amzn.to/3i8JRoF)
の写本・実践をやっていると、
React.js Node.js環境でnpm startできなくなった。
##経緯編
create-react-appでreactのアプリを作った。app.jsを編集し、いざ起動する。
“`
npm start
“`そうすると、以下のようなエラーが発生。
“`
> cycle@0.1.0 start /Users/user/Documents/ubuntu/cycle
> react-scripts startThere might be a problem with the project dependency tree.
It is likely not a bug in Create React
クジラとネコの親子プログラミング – Docker for Windowsを使ってScratch3.0のオリジナル拡張機能を試してみよう。
# 親子プログラミングはGitとNode.jsが使えることが前提になっている?
小学校でのプログラミング教育の必須化に伴って、子供たちがScratch 3.0に触れる機会も増えるかと思います。そんな中、ブロックをくっつけるだけのお遊びツールだとあなどっていると、次のような連載が始まりました。
>[「親子でできる!Scratch と AWS を使った “ものづくり” 体験 – 1. 準備 〜 疎通確認編」](https://aws.amazon.com/jp/builders-flash/202009/programming-with-kids/)
2020-09-01
How to be a Developer
金澤 圭この連載の[「2. 作業の前提について」](https://aws.amazon.com/jp/builders-flash/202009/programming-with-kids/#02)で、衝撃的な次の一文があります。
> **PC に Git と Node.js がインストールされている必要があります。**
保護者の方も、GitやNode.jsを当た
stdout is not a ttyに叱られる
完全に自分用の健忘録です
Git Bash(ver2.28)で実行しようとした際に、
“`
$ node hogehuga.js
stdout is not a tty
“`と叱られてしまった。悲しい。
原因はMinTTYのアレです。大体winptyを先頭につければ解決すると思ってたけど、今回は解決しなかった。
Gitを再インストールしてもダメ。5分くらい悩んで、拡張子をつけたら動いた。
“`
$ node.exe hogehuga.js
“`以下参考
https://github.com/mintty/mintty/wiki/Tips#inputoutput-interaction-with-alien-programs
node環境でのmysql
#nodejs環境でmysqlを使用する方法
##mysqlインスタンスの作成
“`
const mysql = require(‘mysql’)
const connection = mysql.createPool({
host: ‘localhost’,
user: ‘root’,
password: ‘secret’,
database: ‘my_db’
})
“`##データの参照
###select文“`
connection.query(‘SELECT * FROM `books` WHERE `author` = ?’, [‘David’], function(error, results, fields){
//error: クエリ実行時にエラーが発生したらエラーオブジェクトを持つ
//results: クエリの実行結果を持つ
//fields: クエリ実行結果のフィールドに関するオブジェクト
})
“`##データの挿入
###insert文“`
connection.query(‘INSERT IN
Node.js + osm-static-maps で OpenStreetMap や地理院地図の画像を取得する
## 概要
– Node.js 用ライブラリの osm-static-maps を使って OpenStreetMap や地理院地図の画像を取得する
## 今回の環境
– macOS Catalina + Node.js v14.9.0
## osm-static-maps のインストール
osm-static-maps パッケージをインストールする。
“`
$ npm install osm-static-maps
“`## OpenStreetMap の地図画像を取得する
ソースコード。
“`js
‘use strict’const osmsm = require(‘osm-static-maps’);
const fs = require(‘fs’);(async () => {
try {
// 地図画像の Buffer オブジェクトを取得
const imageBinaryBuffer = await osmsm({
width: 800, // 画像の横幅(ピクセル)
height: 600,
Node.js nを使い複数バージョンを共存させる
仕事でnode.jpを使用する機会があったのですが、
複数のシステムで様々なnodeのバージョンを使う機会があり、仮想環境(CentOs)でnodeのバージョン切り替えれるようにしました## Node.js と npm インストール
とりあえず、nodeとnpmをインストールします (CentOs)“`
yum install gcc gcc-c++
yum install nodejs npm –enablerepo=epel
“`※ついでにMacの場合は以下のコマンドで
“`
brew install node
“`## n のインストール
“`
npm install -g n
“`## nのパスを通す
~/.bash_profileを使用しパスを指定する
※ない場合は、作成してください。~/.profile, ~/.bashrcでも自分の好みのもので構いません“`
cd
vi .bash_profile
“`.bash_profileに以下の文言を買い込みます
“`
export N_PREFIX=$HOME/.n
ex
LINE チャンネルの友達登録や投稿情報を kintone に保管
## 概要
先月に [SORACOM LTE-M Button Plus と kintone で高齢者を見守るシステムの試作](https://qiita.com/yukataoka/items/4eb48bcbc8890b5b2277) で情報収集を始めましたが、毎日の確認は家族の LINE でできると便利そうです。これまで LINE 開発は未経験のため、先ずはラインチャンネルの作成と、友達登録や投稿情報を kintone に保管する方法を調査し実装を始めました。
![スライド5a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/47898f75-22e8-50aa-a350-9549293675db.png)
調査を始めてみると一連の手順を記録したこの手の情報が少なく、自分の備忘録も兼ねてこちらにまとめてみます。今回は LINE Bot を登録し、LINE チャンネルの友達登録や投稿のイベントを Webhook で通知し、投稿内容などの情報を kintone に保管するまでを実装してま
【JavaScript】String配列の要素をキーとするオブジェクトを作成する方法
# はじめに
ループしながら、配列内の要素をキーとするオブジェクトを作成する方法を紹介します。
# 方法
“`javascript
const array = [‘key1’, ‘key2’, ‘key3’,]const createObj = (array) => {
const obj = new Object();
array.forEach(item => (Object.defineProperty(obj, item, {
enumerable: true, // ループのために必要!
value: ‘ここに値’
})));
return obj;
}console.log(createObj(array));
// {key1: ‘ここに値’, key2: ‘ここに値’, key3: ‘ここに値’}
“`オプションとして設定する、`enumerable: true`が重要です。
これがないと動きません。# まとめ
配列内の要素をキーとするオブジェクトを作成することができました。
YouTubeチャンネルにアップロードされた動画を埋め込みHTML形式で取得してみた
#はじめに
YouTube Data API を使って、YouTubeチャンネルにアップロードされた動画を埋め込みHTML形式で取得してみました。
JavaScriptのYoutube用ライブラリもいくつかあるみたいですが、
今回はURLを直打ちする形で実装しました。GET URLやJSONの仕様は下記を参照しました。
https://developers.google.com/youtube/v3/docs環境は下記になります。
macOS Catalina 10.15.6
Node.js v14.8.0
(Node.js Library)request 6.14.7#コードと実行結果
コードは下記になります。
“`youtube.js
const request = require(‘request’);const URL_YOUTUBE_API=’https://www.googleapis.com/youtube/v3/’;
const YOUTUBE_APP_KEY=process.env.YOTUBE_APP_KEY;
const MY_YO
Puppeteerで日本語文字化けを防ぐRTA
たぶんこれが一番早いと思います
“`Dockerfile
FROM buildkite/puppeteer:5.2.1ENV LANG ja_JP.UTF-8
RUN apt-get update && \
apt-get -y install locales fonts-ipafont fonts-ipaexfont && \
echo “ja_JP UTF-8” > /etc/locale.gen && locale-gen
“`“`shell
$ docker build . -t puppeteer_ja
“`# 実行
“`javascript:qiita.js
const puppeteer = require(‘puppeteer’);(async () => {
const url = ‘https://qiita.com/’;const browser = await puppeteer.launch({
args: [
‘–no-sandbox’,
Vue.js+Node.jsを利用したチャットアプリの作成
## はじめに
最近Node.jsの勉強をしたので、何かしらのアウトプットを行おうとチャットアプリを作成しました。その備忘録です。
機能としては、簡単なログイン・ログアウト機能、チャット機能を実装しました。## 成果物
![sample_other.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555434/b4506835-2333-fce3-dc79-a7e40ce44321.gif)## 利用したライブラリ
– Vue.js
– VueCLI…Vue.js向けのアプリケーション開発環境セットアップなどの機能を提供するCLIツール
– vuetify…Vueのアプリケーションのデザインを容易に整えてくれるライブラリ
– vuex…vue全体で利用できるデータストアを管理できるライブラリ
– vuex-persistedstate…vuexの値をローカルストレージに保存するプラグイン
– socket.io-client…socket.ioでサーバへ接続
【node.js】process.env.{変数名}
大抵の場合、環境変数はハードコードされていて、
“`js
process.env.ENVNAME
“`たまに必要になってぼちぼち忘れてしまうので、メモ
“`js
process.env[ENVNAME]// ユースケース(条件によって環境変数を出し分けたい時)
const env1 = ‘ENV1’;
process.env[env1]; // process.env.ENV1 と同じ
“`こんな感じ。:sunglasses:
Javascript で RDSの起動・停止を制御して節約する
# やったことまとめ
RDSの起動・停止するスクリプトを書いて、cronで営業時間の間だけ起動するように制御しています
## なぜやろうと思ったか?
開発環境を業務時間外の時間で稼働させるとお金がもったいない
reactを勉強しててjavascript が思ったより面白かったから何か作りたくなった## やってみた感想
dash というスニペットツールで課金すると 公式ドキュメントが簡単に見れて文言で検索できたのがすごく便利でドキュメントを探す手間がかなり省けたので助かりました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222463/f483b906-df11-2c2d-1c3b-e34c0ef317bf.png)javascript の書き方を理解し切れていないけれど、今後 react を触る過程で慣れたいな、、
## 実装した内容
### 事前準備※ RDSを制御可能な権限を持った iam の認証情報を使います
“`~/.aws/credent
Twitter API v2 でキーワードから直近1週間分ツイートを収集する
8月12日(米現地時間)、Twitter API v2 がアーリーアクセスで正式リリースされました。
https://developer.twitter.com/en/docs/twitter-api/early-accessそこで早速、直近1週間分のツイートのキーワード検索ができる `recent search API` でツイート集計・保存するコードを作ったので、一例として共有します。
### ソースコード
“`node.js
‘use strict’const fs = require(‘fs’);
const axios = require(‘axios’);
const Qs = require(‘qs’);
const sleep = msec => new Promise(resolve => setTimeout(resolve, msec));// Set target query
const target_query = ‘qiita.com’;// Format nested params correctly
axios.intercepto
Cloud Toolkitを使用したECSインスタンスへのNode.jsアプリケーションのデプロイ
この記事では、Cloud Toolkitを使って**Alibaba Cloud ECSインスタンス**に**Node.js**アプリケーションをデプロイする方法を紹介します。
*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/deploying-a-node-js-application-to-an-ecs-instance_594819)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*
前回の記事では、Alibaba Cloud [Elastic Compute Service (ECS) ](https://www.alibabacloud.com/ja/product/ecs)インスタンスに直接ローカル Java アプリケーションをデプロイする方法について説明し、読者から多くのフィードバックをいただきました。そこで、読者からの質問に答えるために、今回の記事ではさらに、Alibaba Cloud ECSインスタンスにNode.jsアプリケ