- 1. SurgeにWebページをデプロイするメモ
- 2. JavaScriptで比較的安全にeval()する
- 3. Docker React環境簡単構築
- 4. 超爆速でLamndaでDenoを動かしてみる
- 5. 【API】Firebase × Express で API を作成する。 JWT 保護もする。
- 6. Javascriptでバッチを作って実行する(Node.js)
- 7. Serverless FrameworkでLinebot作成
- 8. JavaScriptでcsvダウンロードを実装する方法
- 9. nodejsハマるところまとめ
- 10. Cloud9 – 既存のEC2インスタンスに接続する
- 11. package.jsonにfilesを書かないあなたは、誰かを少しだけ不幸にしています
- 12. Macでnodev経由でnode 16.x がinstallできない。
- 13. Node.js はどんな流れで非同期・同期処理を実行するのかイメージしたい
- 14. DynamoDB localを使ってDynamoDBをローカルでデプロイする
- 15. Updated node package globally, but the version was not changed.
- 16. オニオンアーキテクチャ on Node.js + Express + TypeScript
- 17. BLEビーコンとソラコムAPIでつい押してみたくなる出退勤記録ボタンを作る(Slack通知機能追加版)
- 18. APL環境構築 & テキスト表示
- 19. Prisma を Google App Engine で使いたい場合
- 20. discord.js v12でVCの入退室に反応するbotを作るメモ
SurgeにWebページをデプロイするメモ
## ざっくりSurge
https://surge.sh/
静的Webページを公開することができるサービスです。
無料プランと 月30ドルの有料プランがありますが、無料プランでも趣味の範囲なら十分そうです。– `surge`コマンドを使って、マシン上のどのディレクトリのコードでもデプロイできる
– カスタムドメインを利用できる。(`xxxxxx.surge.sh`。購入済みドメインも設定できる。)
– 無料版でもパブリッシュの上限なし## さっそくデプロイしてみる
surgeのCLIツールをインストールします。
“`bash
npm i -g surge
“`デプロイしたいディレクトリに移動し、surgeコマンドを実行します。
“`bash
cd /path/to/publish/directory/
surge
“`初回実行時のみユーザー登録が必要なので、登録しましょう。
いくつかオプションを聞かれるので、答えます。
– `project`: デプロイしたいディレクトリ。カレントディレクトリがデプロイしたいディレクトリであればそのままでOK。
–
JavaScriptで比較的安全にeval()する
## evalって?
文字列をJavaScriptのコードとして評価してくれます。
一見便利だけど、めっちゃ危険だから通常使うことはありません。
使ったらESLintにも怒られます。でも、外部からコードを注入できるのはとても拡張性が高いので、クローズドなBotとかの開発に使いたい場面はあります。
## eval的なやつ
`eval()`が一番有名だと思うけど、実は他にも同じようなことができる方法があります。
具体的には、グローバルオブジェクトの`Function()`と、Node.jsのVMです。> * [eval ( )](https://developer.mozilla.org/ja/docs/orphaned/Web/JavaScript/Reference/Global_Objects/eval)
* [Function ( )](https://developer.mozilla.org/ja/docs/orphaned/Web/JavaScript/Reference/Global_Objects/Function)
* [Node.js VM](https:/
Docker React環境簡単構築
## 概要
Dockerを使って簡単にReact環境を構築する方法をご紹介します。## 環境
– macOS Big Sur 11.4
– Docker 20.10.6
– docker-compose 1.29.1## 構成
“`
.
├ docker
│ └ node
│ └ Dockerfile
├ node
│ └ react-sample
└ docker-compose.yml
“`## 手順
今回は、`react-sample`という名前でアプリケーションが作成されます。### 1. docker-compose.ymlの作成
他の名前が良ければ以下の`react-sample`を変更してください。
“`docker-compose.yml
version: ‘3.9’services:
node:
build: ./docker/node
volumes:
– ./node:/usr/src/app:cached
command: sh -c “cd react-sample && yarn
超爆速でLamndaでDenoを動かしてみる
私はLmabdaが大好きだ。
もう全てLambdaで動かせばいいんじゃないかな?(少なくともAPIはAPIGateway + Lambdaで十分だと思ってる。)それはさておき
そんなLambdaでDenoを爆速で動かす方法をまとめてみた。
# 前提条件
– aws cliが使用できる
– 実行環境はmac# 1.Layerの登録
## deno-lambda-layer.zipをダウンロード
“`sh
$ curl -OL https://github.com/hayd/deno-lambda/releases/download/1.11.0/deno-lambda-layer.zip
“`※ 公式サイトより最新のアーカイブファイルをダウンロードすることを推奨
## deno-lambda-layerを登録
“`sh
$ aws lambda publish-layer-version \
–layer-name deno-la
【API】Firebase × Express で API を作成する。 JWT 保護もする。
# 概要
Node.js + ExpressでAPIを作成し、それをFirebase Functionsにデプロイします。
また、APIのエンドポイントは、JWTで保護します。
# JWT(JsonWebToken)とは
OAuth2準拠のアクセストークンの一種で、APIのエンドポイントに対して誰もがアクセスできないように保護します。・基礎的な知識
https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be
・JWTの動作
https://qiita.com/Na
Javascriptでバッチを作って実行する(Node.js)
知っている人には当たり前過ぎる情報なので、素通りいただければです。
思い返すと2年前はこれ全然知らなかったなー、、、とふと思ったので参考になる人がいるかもということで記事にしました。
個人的には、お手軽にプログラミングできるのでお勧めです。
# 前提
mac(Windowsでも環境構築すれば問題なく実行できます)# 用語
## Node.js
– JavaScriptの実行環境
– `node test.js`とかで、JavaScriptをターミナルで実行可能になる
– 例えると`php test.php`のphpに当たるもので良いと思う
– メジャーバージョンよく更新されている=モダン?
– 更新多いのでバージョン管理ツールを使うと便利(nodebrew, nodenv, anyenv 色々あります。)
– 最近だとasdfを使って構築する記事をよく見ます## npm
– Node.jsのライブラリのパッケージ管理ツール
– `npm install {パッケージ名}`とかで、カレントディレクトリに.node_modulesというディレクトリが
Serverless FrameworkでLinebot作成
#概要
Serverless FrameworkでLinebotを作成するための記事です。#アジェンダ
1. Serverless Frameworkの設定
2. Linebotの設定
3. パラメータの変更
4. デプロイ・実行#1 Serverless Frameworkの設定
“`javascript:aws-nodejsテンプレートのインストール
~/develop/study/linebot $ serverless create –template aws-nodejs –path linebot
Serverless: Generating boilerplate…
Serverless: Generating boilerplate in “/Users/kawamurakouji/develop/study/linebot/linebot”
_______ __
| _ .—–.—-.–.–.—–.—-| .—–.—–.—–.
| |_
JavaScriptでcsvダウンロードを実装する方法
#はじめに
フロント(React)でcsvダウンロードを実装する機会があったため、備忘録です。
どうぞご活用ください。#実装
“`javascript
const handleDLcsv = async () => {
//アイテムの定義
const download_items = [
{‘id’: 1, ‘name’: ‘apple’, ‘price’: 100},
{‘id’: 2, ‘name’: ‘orange’, ‘price’: 120},
{‘id’: 3, ‘name’: ‘melon’, ‘price’: 800}
];
//csvヘッダー
const array_data = [[‘id’, ‘name’, ‘price’]];//文字コード
const bom = new Uint8Array([0xEF, 0xBB, 0xBF]);//csv用データ作成
download_items.map((
nodejsハマるところまとめ
## gypのbuildコケる問題
`make gcc g++ python` が大体無い
g++は`sudo yum -y install gcc-c++`
Cloud9 – 既存のEC2インスタンスに接続する
#まえがき
毎度のことながら環境構築に四苦八苦しております。
今回もうんうん唸りながら構築しました。
sshログイン時にNode.jsのインストール、ログインせずnodebrewでのインストール、
の両方とも経験した(ただ失敗しただけ)ので、どちらも投稿します。
結局新たにEC2インスタンスを作成し、SSH環境では使用していないので、
ゴンがカッツォを助けたみたいに、どなたかの助けになれば、、Cloud9を使用する際は、AD Blockなどの拡張機能の停止または削除してから実行しましょう。
不具合が発生する模様です。#動作環境
・MacBook Air (Retina, 13-inch, 2020)
・Big Sur11.4
・ターミナルシェル:zsh#前提
VPCやEC2インスタンスの作成、
あるいはElastic IPアドレスの取得等は事前に済んでいることとします。
Cloud9のリージョンは東京にしました。#1.Node.jsをインストール
Cloud9にはNode.jsが必要なので最初にインストールします。
(1
package.jsonにfilesを書かないあなたは、誰かを少しだけ不幸にしています
## 先に結論だけ
`package.json`に`files`フィールドを指定すると、`node_modules`に保存されるファイルサイズが減ります。
## はじめに
この記事は、[npm](https://www.npmjs.com/)の[package.json](https://docs.npmjs.com/cli/v7/configuring-npm/package-json)に指定するフィールド、[files](https://docs.npmjs.com/cli/v7/configuring-npm/package-json#files)の指定方法と効用を解説、共有するためのものです。
### 想定する読者
この記事は、以下の読者を想定して書かれています。
+ JavaScriptの開発経験がある
+ npmを使ったことがある
+ npmやGitHubでnpmモジュールを公開している### 想定する環境
この記事は、以下の環境を想定して書かれています。記事を読む前に、お手元の環境をご確認ください。
“`shell
$ npm –version
Macでnodev経由でnode 16.x がinstallできない。
nodenvでnodeの16系がinstallできなかった。nodenvのplugin pathにはいって、git pullすると更新できるらしい。
“`jsx
cd “$(nodenv root)”/plugins/node-build && git pull
“`参考。
[nodenvでinstall出来るnodeのバージョンを確認したら最新が出てこなかった時 – Qiita](https://qiita.com/kzk_FE/items/0baf5cdda00eab36c441)[Twitter](https://twitter.com/yoshixj)
Node.js はどんな流れで非同期・同期処理を実行するのかイメージしたい
# 経緯
Node.js は V8 上に構築された JavaScript の実行環境ってのは [Wikipedia](https://ja.wikipedia.org/wiki/Node.js) を読んでなんとなくわかった。Wikipedia の少し下の方にある「クライアント1万台問題」についての記述を読んで見ると
>非同期処理のNode.jsではクライアント1万台問題は起きない。
Node.jsでこの問題を解決した技術の中核は、シングルスレッドにおける非同期処理を容易に実装可能にしたイベント駆動型プログラミング環境である。なるほど、シングルスレッドで動作してるから、プロセスを無制限にフォークすることでコンテキストスイッチが起こりまくって超重くなることはない。詳しくわかってないけど「非同期処理を容易に実装可能にしたイベント駆動型プログラミング」によって同時に処理を捌けるらしい…。
**とりあえず node.js だと非同期や同期処理が混ざってるときはどう進むのかだけでも知りたい!**
**※** 正確に知りたい方はこちらの記事や、`libuv` を調べてください。
ht
DynamoDB localを使ってDynamoDBをローカルでデプロイする
## 概要
DynamoDBはウェブサービスとして利用できるほか、別に提供されている**DynamoDB Local**を使えばDynamoDBを**開発用ローカルDBサーバ**としてデプロイすることができます。
DynamoDB Localに関する公式ドキュメントは以下の通り。https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.html
上記の記述の通り、DynamoDB Localは実行可能な.jarファイルとして提供されているほか、Dockerイメージとしても提供されており、`docker-compose`で簡単にデプロイすることができます。
今回は公式の記述を参考にしつつ、`docker-compose`でDynamoDB Localをデプロイし、Node.js上から読み書きするまでを行ってみたいと思います。
### dynamodb-admin
また、**dynamodb-admin**というDynamoDB Local用のGUIを提供してくれる
Updated node package globally, but the version was not changed.
# When I’d have loved to update a node package
I ran below command for updating firebase-tools version.
“`
yarn add global firebase-tools
“`But version was not changed
# Why version was not changed
Because command was wrong.
Correct command is below.
“`
yarn global add firebase-tools
“`If we put `global` before `add`, node package is installed only globally.
If we put `global` after `add`, node package is installed globally and locally.
And my `firebase-tools` version was different
オニオンアーキテクチャ on Node.js + Express + TypeScript
# 概要
設計の脳内整理資料# ディレクトリ構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1621988/9db85b3e-7cb2-9221-fe3e-7ebb8e2b0b54.png)# プレゼンテーション層
## ルーター
`routes\task.route.ts`
“`typescript
import express from ‘express’;
import TaskApplication from ‘../applications/task.application’;
import TaskRepository from ‘../infrastructure/task.repository’;const taskRepository = new TaskRepository();
const taskApplication = new TaskApplication(taskRepository);
const router = expres
BLEビーコンとソラコムAPIでつい押してみたくなる出退勤記録ボタンを作る(Slack通知機能追加版)
#初めに
以前、BLEビーコンとソラコムAPIを使って、出退勤記録と天気やニュースの読み上げをしてくれるボタンを作成しました。
[BLEビーコンとソラコムAPIでつい押してみたくなる出退勤記録ボタンを作る](https://qiita.com/k_izutani/items/3c8be65c34187dbb038b)
その記事の中で今後の改善案として、> 次は以下の情報を参考にして、稼働情報をslackに反映するようにしたいです。
> [SORACOM レシピ:IoTで在席状況の自動更新](https://soracom.jp/recipes_index/3401/)と書きましたので、本当に作成しました。
# システム構成
システム構成を以下に示します。赤四角の、ソラコム ~ AWS Lambda ~ Slackの経路が、今回追加した箇所です。他の部分は以前の記事を参照してください。
![システム構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125043/ab65e51b-3bd5-ac
APL環境構築 & テキスト表示
# やること
[Alexa ハローAPL、Alexaスキルの画面への対応](https://qiita.com/Mount/items/72d9928ff2c0ae5de737)
やることはまんまこの記事。– APLオーサリングを用いたデザインの作り方
– APLを使えるように設定する
– APLドキュメントを使って画面を描画する。あたりについて示す。
# 前提
[ASK CLI 環境構築](https://qiita.com/Teach/items/b7901071a646fa974ed6)# 環境
[APLオーサリングツールドキュメント](https://developer.amazon.com/ja-JP/docs/alexa/alexa-presentation-language/apl-authoring-tool.html)
APL v1.6
所持実機 Echo show 5![スクリーンショット_2021-07-09_20_00_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c
Prisma を Google App Engine で使いたい場合
# TL; DR
普通にデプロイしてしまうと`prisma generate`をしていないせいでエラーが出る。解決策は以下の2つ。## 案1. postinstallスクリプトに登録する
“`json-doc:package.json
“scripts”: {
// 中略
“postinstall”: “prisma generate”
},
“dependencies”: {
“prisma”: “” // devDependenciesではなく、dependenciesに入れる
}
“`## 案2. prisma generate の出力先を変更する
“`tf:schema.prisma
generator client {
provider = “prisma-client-js”
// ここを追加するだけ
output = “../src/generated/client”
}
“`“`ts
// 生成先のパスを参照する
import { PrismaClient } from ‘./generated/cli
discord.js v12でVCの入退室に反応するbotを作るメモ
はじめに
===discord.jsを使ったbotの資料はたくさんありますが、
– v12対応
– voiceStateUpdateを利用
– VCの入退室に関連した資料というのが殆どなかったのでメモっときます。**~~v11対応だったりErisだったりするとあるんだけどdiscord.js v12がいいんだよ!!~~**
このページに載っている情報でなにができる?
===– 入退室時、ミュートなどの状態を変更したときに関数を発火させることができる
– 状態を変化させたユーザやチャンネル、ギルド(サーバ)などの情報を取得することができる環境
===
Node.js v14.17.0
discord.js v12.5.3サンプルコード
===
“`js
// discord.js モジュールのインポート
const Discord = require(‘discord.js’);// Discord Clientのインスタンス作成
const client = new Discord.Client();// トークンの用意
const discor