- 1. CDK 2.20.0 と 2.19.0 はぶっ壊れてるので 2.18.0 を使おう
- 2. 無念日記「obniz×圧力センサーで、特定の画像をLINE Botに送りたかった」
- 3. 夜集中して、寝ないで頑張れる環境をつくり、疲れたらLINEで癒しの曲を!
- 4. とかく、この世は住みにくい。対人関係の距離感をobnizで物理的に測り矯正するLINEBotを作成!
- 5. SequelizeでbulkCreateを使用してINSERTする際、値を指定していないAUTO_INCREMENTを付与したカラムの値を取得する
- 6. Node.jsでリバースプロキシを書いた
- 7. 照度センサーを使って灯りがついている時間を計測し、電気料金がわかるものづくりに挑戦してみた!!
- 8. お手軽構築!docker-compose+Circle CI環境下でのスペルチェック環境
- 9. Node.js×TwitterAPIでツイートを連続取得
- 10. Nginx html うまく表示できない エラー[ Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of “application/octet-stream”. Strict MIME type checking is enforced for module scripts per HTML spec.]
- 11. WSL2上でwebpackのホットリロードが効かない
- 12. Node.jsで使えるExcelライブラリ調査
- 13. BoxにNode.jsからファイルアップロードメモ
- 14. Webex APIを使って、メッセージを送る
- 15. serverlessFWにこんにちは serverlessでローカル上でAWS Lambdaを起動・呼び出してみる
- 16. MQTTブローカーの shiftr.io で HTTPリクエスト(内向き/外向き)を組み合わせる【2022年4月版】
- 17. GAEでAPIキーを隠したいとき
- 18. Stripeの料金データを通貨やmetadataなどで検索・取得する6つの方法
- 19. React+Node.js(Express)でMySQL連携する
- 20. Vue3+Node.jsで認証機能を実装する
CDK 2.20.0 と 2.19.0 はぶっ壊れてるので 2.18.0 を使おう
# tl; dr
> npm install aws-cdk@2.18.0
# 何が起きるか
## 2.20.0 を入れようとすると
“`
% npm install aws-cdk@2.20.0
npm WARN tar zlib: incorrect data check
npm WARN tarball cached data for aws-cdk@https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.20.0.tgz (sha512-rs9LTpvrlbsMcenZ3t7TuLDGbHhbnDocrE63Xb2PT++VptR/A8svllK8k1W7hPl77L9QS75GNK5gh+ShkEzsnw==) seems to be corrupted. Refreshing cache.
npm WARN tarball tarball data for aws-cdk@https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.20.0.tgz (sha512-rs9LTpvrlbsMce
無念日記「obniz×圧力センサーで、特定の画像をLINE Botに送りたかった」
# 詰まった箇所はこちら
**1:LINE Botで画像らしきデータ(多分壊れてる)は送れたが、プレビューもオリジナルも見られない**
**2:圧力センサー×obnizのコード/苦戦の一部**
こちらのコードをベースにして、あれこれいじって動かないファイル3つ。
“`js

**obnizと圧力センサーはつなげられたが、LINE Botと連携ができない**
const Obniz = require(‘obniz’);
const obniz = new Obniz(‘69878035’)
夜集中して、寝ないで頑張れる環境をつくり、疲れたらLINEで癒しの曲を!
## Obniz X LINE Botで勉強を頑張れる「環境づくり」にチャレンジ!
最近仕事が特に忙しく、**プログラミングスクールとの両立に苦労していました**。辛酸をなめる状況が続き、まとまった時間を捻出するのが難しい環境だからこそ、**よなよな勉強を頑張れる環境を整えたい。**特に、**仕事後の夜の勉強時間を増やし、質も向上させたい**。そのために今回は、**IoTの力**を利用して、**3つの課題解決**に取り組んでみました。
##### ① 妻が部屋に入ってきて話し込んでしまう → 集中モードの時は赤いLEDを点灯させる
##### ② 眠くなってくると、寝てしまう → ベッドに寝ようとするとき、警報を鳴らす
##### ③ 休憩すると、長くなってしまう → 疲れたよ!と送ると、自動的に癒しの音楽が流れ、その間だけ休憩する**今回のイメージ動画をご覧ください。**
勉強に集中できる部屋作りに、IoTの力を借りてモノづくりしてみた#protoout pic.twitter.com/wlK667w1Qi
— Nori (@NORI30363592) April 14, 2022
## 課題① 妻が入ってきて、話し込んでじゃうので集中モードの時間を
とかく、この世は住みにくい。対人関係の距離感をobnizで物理的に測り矯正するLINEBotを作成!
## 目的
みなさん、毎日生きづらいですか?ちゃんと懊悩してますか?この世の悩みごとの多くは対人関係から生まれると言いますが、他人との距離感の取り方って難しいですよね。私個人としては他人と距離を置き気味で迷惑をかけることもあるのではと思っているのですが、その自己認識すらずれているかもしれません。悩ましい。というわけで、友人知人に対して、自分が心地よいと思っている距離感が、果たして客観的に見てどれぐらいなのかをセンサーで図り教えてくれるLINEBotを作ろうと思います。

こちらの42カ国、9000人を対象にしたパーソナルスペースの調査によると、ルーマニアやハンガリーなどは、130センチ以上距離を取り、アルゼンチンやペルーは80センチを下回る超情熱系のインファイターと、国によってもパーソナルスペースにかなり変動がある
SequelizeでbulkCreateを使用してINSERTする際、値を指定していないAUTO_INCREMENTを付与したカラムの値を取得する
## 初めに
SequelizeでbulkCreateメソッドを使用する際に、AUTO_INCREMENTを付与しているカラムを指定せずに挿入した場合に、thenメソッドの引数に挿入したカラムの値がNULLで格納されていた。
検索した際に日本語の情報が少ないと感じたため、AUTO_INCREMENTを付与したカラムの値を取得する方法を記載する。■ Sequelizeのバージョン
3.30.4
■ MySQLのバージョン
5.7.37
## 解決方法
bulkCreateメソッドに以下の記述を追加することで解決した。“`js
individualHooks: true
“`#### 例
“`js
Model.bulkCreate(
[ { coulumn: “test” }, { coulumn: “test” } ],
{ individualHooks: true }
).then((results)=>{
// 引数resultsに挿入されたAUTO_INCREMENTを付与したカラムの値が格納されている
})
“`## trans
Node.jsでリバースプロキシを書いた
# リバースプロキシとは
インターネットにてリクエストをほかのサーバの代わりに受けて(代理:proxy)他のサーバへ中継してくれるサーバ
# なぜわざわざNode.jsで書くのか
ふつうはNginxを使う。
今回は小規模な自分用サーバのために使うので、ほかの機能で使っているnode.js
にまとめて載せられると便利だと思い書いた。# コード
https://github.com/wonderhorn/nodegateポイント
– [http-proxy](https://github.com/http-party/node-http-proxy)を使う、プロキシもリバースプロキシもこれでできる
– http-proxyのバグでPOSTが通らないのでヘッダをいじる:https://github.com/wonderhorn/nodeg
照度センサーを使って灯りがついている時間を計測し、電気料金がわかるものづくりに挑戦してみた!!
こんばんは。
現在小売業で働いており、新入社員の受け入れの研修をしています。
講義の中で「**店舗で使用しているものはすべて経費が掛かっていると思ってください。**」と
新入社員に伝えましたが、こんなぼんやりしている説明はないなと反省・・・**なので、経費としてわかりにくいものを**
**分かりやすくするための装置を作ろうと実装してみました。**(ひとまず照度センサーを使って電気料金がわかるものを作りたくなったので、
まずは家のトイレで使用している電気料金を調べてみることにしました!)## 作ろうとしたもの
照度センサーを使って電気がついている時間を分単位で計測し、
電気料金がわかるものを作ろうとしました。
↑の画像は電気をつけている状態でNode.jsを実行して、
0.15v以下になった時間を計測してくれるものです。
お手軽構築!docker-compose+Circle CI環境下でのスペルチェック環境
## この記事 is 何
ソースコードをcommit/push(後の本流へmerge)した後に「あっ、これtypoしてる…」という経験はありませんか?
英語が苦手な私はよくあります。VSCodeの拡張機能でスペルチェッカーを入れてますが、それでも見落としがちです…
そのようなときにCIで自動で検出/ブロック出来たらいいですよね!この記事では、その対策方法について解説しました。
## この記事では解説しないこと
解説している素晴らしい記事はたくさんあるので、既存の記事にお任せしました!– Docker、Docker-composeの導入方法/解説
– Circle CIとは?
– githubとCircle CIの連携方法
– Visual Studio Codeの導入方法/解説## 動作環境
– Local環境
– Windows 10
– Docker Desktop 2.2.0.4
– docker-compose 1.25.4
– Visual Studio Code 1.66.1
– Code Spell C
Node.js×TwitterAPIでツイートを連続取得
# search_metadataによる連続取得
TwitterAPIは一度のリクエストで最大100件までしかツイートを取得できません。
例えば`#ゲーム実況`というタグが付いたツイートを収集しようと思っても最新の100件を取得したらそこで次の取得を打ち切ってしまいます。
どうにかならないかということで調べてみたところ以下の記事がヒット。
[Node.jsでTwitter検索から100件を超えるツイートを取得したい](https://qiita.com/ryo-a/items/53fe9eadcf719b817c9a)詳細はリンクを参照してほしいのですが、以下のようなコードで連続取得が可能になります。
“`
const Twitter = require(‘twitter’);
const client = new Twitter({
consumer_key: “—“,
consumer_secret: “—“,
access_token_key: “—“,
access_token_secret: “—”
});const
Nginx html うまく表示できない エラー[ Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of “application/octet-stream”. Strict MIME type checking is enforced for module scripts per HTML spec.]
## きっかけ
1. viteでつくったサイトをwebブラウザで表示させようと思ったらなにも表示されない
1. コンソールを見るとエラー
“`:Chrome コンソール
Failed to load module script:
Expected a JavaScript module script but the server responded
with a MIME type of “application/octet-stream”.
Strict MIME type checking is enforced
for module scripts per HTML spec.
“`## 改善方法の結論
httpコンテキストに以下を追記
“`conf:nging.conf
http{
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;..省略
}
“`– include /etc/nginx/mime.type
WSL2上でwebpackのホットリロードが効かない
# はじめに
上記の本を参考にTypeScriptの勉強をしていたところ、webpack serveによる自動ビルドがうまく働かず少し悩んだため、解決策を備忘録として残しておきます。
# 状況
webpack serveでサーバーを起動するこ
Node.jsで使えるExcelライブラリ調査
Excelファイルを扱うライブラリが多すぎてどれを使ったらよいかわからないので・・・
# 結論
データの読み込みだけなら __xlsx__
Excelのテンプレートに書き込むなら __ExcelJS__ or __xlsx-populate__
ただし、ExcelJSはかなり多くのバグが放置されているので注意| | TypeScript | 読み込み | 書き込み | スタイル設定 | スタイル保持 | 画像挿入 | セルコメント |
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
| xlsx | ○ | ○ | ○ | | | | ○ |
| xlsx-js-style | ○ | ○ | ○ | ○ | | | ○ |
| node-xlsx | ○ | ○ | ○ | | | | |
| ExcelJS | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| excel4node | | | ○ | ○ | | ○ | ○ |
| officegen | | | ○ | |
BoxにNode.jsからファイルアップロードメモ
[Box](https://www.box.com/ja-jp)のAPIを使ってファイルアップロードを試してみます。
## シンプルなサンプル
https://github.com/box/box-node-sdk
こちらのSDKを使って試してみましたが、割とシンプルに動きました。
ドキュメントを見つつasync/awaitに書き換えてます。
> https://github.com/box/box-node-sdk/blob/main/docs/files.md#upload-a-file
“`js
‘use strict’;const BoxSDK = require(‘box-node-sdk’);
const fs = require(‘fs’);// Initialize the SDK with your app credentials
const sdk = new BoxSDK({
clientID: ‘xxxxxxxxxxx’,
clientSecret: ‘xxxxxxxxxxxx’
});
const client = sdk.g
Webex APIを使って、メッセージを送る
React、node.js、Google Cloud Platform (App Enigine)で[SORTFUL](https://sinceretech.app/ “SORTFUL”)というチームビルディングゲームを作る際に出てきた疑問を、備忘録として記事にまとめています。
はじめに
今回SORTFULで、参加者それぞれにこっそりメッセージを送らなきゃいけない場面があり、そのためにwebex,slackのAPIを利用することにしました。
webex for Developersに登録する
まずは[webex for Developers](https://developer.webex.com/ “webex for Developers”)にSign Upします。
※Webexアカウントをお持ちの方は、そのアカウントでログインできます。のCICDをGitHub Actionsで構築](https://qiita.com/yuta-katayama-23/items/d5c786aaa2a439a3cb17)でサーバーレスアプリケーションを構築するフレームワークとして[AWS SAM](https://aws.amazon.com/jp/serverless/sam/)は触った事があったが、[serverless](https://www.serverless.com/)は触った事がなかったので、serverlessでHello World(Node.js)をやってみたので備忘録を残す。やってみた事としては、以下の3つ。
– cli上で`severless`コマンドからHello World的なLambda関数を作成するseverless.ymlの作成
– ローカル環境でそのLambda関数を実行し、Lambdaを呼び出し
– 【おまけ】実際にAWS環境にDeployソースコード全体は以下。
https://github.com/yuta-kata
MQTTブローカーの shiftr.io で HTTPリクエスト(内向き/外向き)を組み合わせる【2022年4月版】
MQTT を利用する際の仲介役となる MQTTブローカーを準備する際、外部サービスやライブラリ等を利用して準備するなどしますが、クラウド・デスクトップの両方で使える MQTTブローカーで shiftr.io というサービスがあります。
この shiftr.io は、MQTT だけでなく HTTP のインタフェースを持っており、HTTPリクエストと MQTT の Pub/Sub との間をつなぐ役割を担うこともできます。その shiftr.io の HTTPインタフェースについては、過去に一部を試したことがあり、手順を以下の記事に書いていました。
●【NoCode 2020】 MQTTブローカーの shiftr.io と IFTTT の Webhook をつなぐ(shiftr.io の HTTP Interface) – Qiita
https://qiita.com/youtoy/items/c690e2f1aa064e6dd289しかし、その時に試せてなかった機能もあったり、試したものの記事にしてなかった部分もあったため、あらためて今回の記事で情報をまとめてみようと思います
GAEでAPIキーを隠したいとき
React、node.js、Google Cloud Platform (App Enigine)で[SORTFUL](https://sinceretech.app/ “SORTFUL”)というチームビルディングゲームを作る際に出てきた疑問を、備忘録として記事にまとめています。
はじめに
今回SORTFULを開発するにあたって、Webex APIとSlack APIを使いました。
ここで問題になってくるのが、APIキーの隠し場所です。そこで私は、GAEにデプロイする際に使うyamlファイルに環境変数として登録する方法を選びました。
以下にその方法を記します。環境変数を設定する方法
GAE(Google App Engine)では、app.yamlに環境変数を設定できます。(参考:[app.yaml構成ファイル](https://cloud.google.com/appengine/docs/standard/go/config/appref?hl=ja “app.yaml構成ファイル”))
“`app.yaml
env_variables:
MY
Stripeの料金データを通貨やmetadataなどで検索・取得する6つの方法
Stripeでは、一回切りの決済でも定期課金でも商品・料金データをDashboardで登録して利用します。
Checkoutのサンプルコードでも、料金IDを引数に設定していますね。
“`js
const sesssion = await stripe.checkout.sessions.create({
mode: ‘subscription’,
line_items: [{
price: ‘price_xx’,
quantity: 1
}]
…
})
“`そのため、ECやSaaSなどで、複数の商品・料金をユーザーが選んで決済できるシステムを作りたい場合には、料金データのリストを取得して表示させる実装が便利です。
ただし、提供する製品やサービスによっては、「取得したい料金」と「除外したい料金」が発生します。
ここでは、料金データをStripeのAPIから取得する方法を6種類紹介します。
## 基本: Price APIのListメソッドを利用して取得する
まず基本の形として、Price APIでList
React+Node.js(Express)でMySQL連携する
##### はじめに
Reactの学習をはじめようと思った時に、DBとの連携はどのようにするのか不明だったので調査したところ、「Node.jsでAPIサーバーを立てて、Reactから実行、結果をごにょごにょする」という結論に至ったのでそれを実現するための備忘録です。##### 開発環境
・OS: MacOS Big Sur
・Editor: Visual Studio Code
・DB: MySQL##### 事前準備
Node.jsやReact、MySQL Serverのインストールは事前に済んでいるものとします。
DB、テーブルは事前に簡単なものを作成済みです。
***
VSCodeのターミナルで作業を行います。
clientディレクトリとserverディレクトリを作成
“`
$ mkdir client
$ mkdir server
“`
#### Reactの設定
client側にはReactをインストールする
“`
$ cd client/
$ create-react-app .
“`
ではナレッジが少ないことと対応ライブラリが少ない事から、今後の開発が辛いことが分かりましたので、社内システムはVue2で作り直そうと思っています。# 本記事で紹介すること
1. 構成図
1. 完成イメージ
1. VueCLIからVueプロジェクト作成
1. フロントエンド-認証画面の実装
1. Node.jsプロジェクト作成
1. バックエンド-認証処理の実装※Node.jsとVue.jsのインストールは割愛しております。
# 構成図
ざっくりこんな感じです。
![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517685/a2ae7f5b-6d32-