- 1. 【動画付き】 draw.io 使い方まとめ 〜エンジニアでなくても使えるTips集〜
- 2. bullで管理するNodeJSの分散job
- 3. Node.jsでGoogle Slides内のテキストの書き換え
- 4. FirestoreでCollectionを削除する
- 5. Node.js の gRPC で Redis のデータを削除 (Delete)
- 6. Node.js の gRPC で Redis のデータを更新 (Update)
- 7. Node.js の gRPC で Redis のデータを読む (Read)
- 8. Node.js の gRPC で Redis のデータを作成 (Create)
- 9. Electronで作成しているアプリケーションでfirebaseモジュールを使おうとした時に発生するエラーの解決[Failed to load gRPC binary module because it was not installed for the current system]
- 10. npmコマンド備忘録
- 11. npmモジュールをインポートしてRollupでビルドしたときに○○ is not definedが出たときの対処
- 12. Vueはどこへ消えた?
- 13. Macでnodeのバージョンを切り替える〜少しめんどい〜
- 14. 【解決】nuxtでyarnをすると「gyp: No Xcode or CLT version detected!」エラーが発生
- 15. 【AWS】IAM-APIGetway-Lambda-DynamoDB-S3でシンプルなアプリケーション制作
- 16. Node.jsでGoogle Slidesの新規スライド作成
- 17. Node.jsでGoogle Slides内のテキストを取得してみる
- 18. Node.jsでGoogle Slides APIを触ってみる
- 19. Node.js – Mysql「Error: Cannot enqueue Query after invoking quit.」の対処(Connection pool)
- 20. nodeコマンド(non-blockngとblockingについてメモ)
【動画付き】 draw.io 使い方まとめ 〜エンジニアでなくても使えるTips集〜
[draw.io](https://www.draw.io/) はブラウザを使用してフローチャート、プロセス図、組織図、UML 図、ER モデル、ネットワーク図などを作成できる優れたツールです。作成した図は xml ファイルとして保存でき、GitHub との連携もシームレスに行われます。3 年ほど愛用しているツールですが、隠された使い方がたくさんあります。すぐに忘れてしまうので取りまとめておきます。
「こんな使い方あるよ!オススメだよ!!」という方はぜひ編集リクエストをいただければ追記していく予定です ?
※ 主に参照している文献は以下、公式ブログは非常に分かりやすいのでオススメです。
– [ツイッター公式アカウント](https://twitter.com/drawio)
– [公式ブログ]
bullで管理するNodeJSの分散job
# bullとは
NodeJSで分散ジョブとメッセージを処理するためのキューパッケージです。redisをベースに動作します。
kueの後継的なライブラリです。# 確認環境
– node: v10.17.0
– [redis ( for windows )](https://github.com/microsoftarchive/redis/releases): 3.0.504# express-generator にてプロジェクト作成
ここでは、`play_node_bull`というプロジェクトで作成します。“`
npx express-generator play_node_bull
cd play_code_bull
npm install
“`# bullのインストール
“`
npm install bull
“`# app.js の編集
app.jsに以下の行を追記します。“`Diff:App.js
var createError = require(‘http-errors’);
var express = require(‘express
Node.jsでGoogle Slides内のテキストの書き換え
Google Slides APIをNode.jsから触ってみてます。
* [Node.jsでGoogle Slides APIを触ってみる](https://qiita.com/n0bisuke/items/8a343ca4d8fe2f1bac55)
* [Node.jsでGoogle Slides内のテキストを取得してみる](https://qiita.com/n0bisuke/items/325fbe56a48e7d83e8dc)
* [Node.jsでGoogle Slidesの新規スライド作成](https://qiita.com/n0bisuke/items/1160bb5c524cdaff3342)の記事の続きです。
## batchUpdate()で更新
[presentations.batchUpdate](https://developers.google.com/slides/reference/rest/v1/presentations/batchUpdate)でどうやら更新ができそうです。
## presentations.batchUpdate
FirestoreでCollectionを削除する
Firestoreではコレクションを完全に削除するにはその下に紐づいているドキュメントを一個一個全部削除してからそのあと、コレクションを削除しないと、完全に削除できません。
Firestoreのコレクションは削除できない。
削除できないので、全てのドキュメントを取得して一個一個削除していくしかない。また、ドキュメントを削除してもそのドキュメントの下のサブコレクションは削除できない。
これはめんどくさい? pic.twitter.com/M3sHypt0w0
— shogo.yamada (@yshogo87) February 9, 2020
Node.js の gRPC で Redis のデータを削除 (Delete)
設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。
設定ファイル
>redis_delete.proto
こちらと同じ
[Python の gRPC で Redis のデータを削除 (Delete)](https://qiita.com/ekzemplaro/items/451d253a277d6b9bece6)サーバープログラム
“`js:redis_delete_server.js
#! /usr/bin/node
// —————————————————————
// redis_delete_server.js
//
// Feb/08/2020
// —————————————————————
var PROTO_PATH = ‘redis_delete.proto’var grpc = require(‘grpc’)
var protoLoader = requ
Node.js の gRPC で Redis のデータを更新 (Update)
設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。
設定ファイル
>redis_update.proto
こちらと同じ
[Python の gRPC で Redis のデータを更新 (Update)](https://qiita.com/ekzemplaro/items/1e94293e0471504b0663)サーバープログラム
“`js:redis_update_server.js
#! /usr/bin/node
// —————————————————————
// redis_update_server.js
//
// Feb/09/2020
// —————————————————————
var PROTO_PATH = ‘redis_update.proto’var grpc = require(‘grpc’)
var protoLoader = requ
Node.js の gRPC で Redis のデータを読む (Read)
設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。
設定ファイル
>redis_read.proto
こちらと同じ
[Python の gRPC で Redis のデータを読む (Read)](https://qiita.com/ekzemplaro/items/3216564b385ddba8457e)サーバープログラム
“`js:redis_read_server.js
#! /usr/bin/node
// —————————————————————
// redis_read_server.js
//
// Feb/08/2020
// —————————————————————
var PROTO_PATH = ‘redis_read.proto’var grpc = require(‘grpc’)
var protoLoader = require(‘@grpc
Node.js の gRPC で Redis のデータを作成 (Create)
設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。
設定ファイル
>redis_create.proto
こちらと同じ
[Python の gRPC で Redis のデータを作成 (Create)](https://qiita.com/ekzemplaro/items/f6d7f5e310d45e0bc1d6)サーバープログラム
“`js:redis_create_server.js
#! /usr/bin/node
// —————————————————————
// redis_create_server.js
//
// Feb/09/2020
// —————————————————————
var PROTO_PATH = ‘redis_create.proto’var grpc = require(‘grpc’)
var protoLoader = requ
Electronで作成しているアプリケーションでfirebaseモジュールを使おうとした時に発生するエラーの解決[Failed to load gRPC binary module because it was not installed for the current system]
`% npm i firebase`
を実行して、プログラム内に“`javascript
const firebase = require(‘firebase’);
“`
を記述し、`% electron .`でアプリを起動した際に“`
Uncaught Error: Failed to load gRPC binary module because it was not installed for the current system
“`
とgrpcモジュールに関するエラーが表示された。`% npm i grpc`
を実行したが、今度はgrpcモジュール内に`node_modules/grpc/src/node/extension_binary/electron-v6.0-darwin-x64-unknown/grpc_node.node`というファイルが無いぞとエラーで怒られる。
さらに`node-v72-darwin-x64-unknown/grpc_node.node`ってファイルならあったけどね!`npm rebuild`すると治るかも!と書かれてい
npmコマンド備忘録
#確認
npm -–version
npm -v
npm version
npm help
npm root
npm bin
npm show パッケージ名
##パッケージ検索
npm search パッケージ名
##リリースされたパッケージのバージョン
npm info パッケージ名 versions
##直接インストールしたパッケージ
npm list –depth=0
##ローカルインストール済みのパッケージのバージョン
npm list (–depth=0)
##グローバルインストール済みのパッケージのバージョン
npm list –depth=0) -g
##未更新のパッケージを確認
npm outdated
##package.jsonに記載されているパッケージのバージョンに更新
npm update
#初期化
npm init
#復元
npm install
#インストール
##グローバル
npm install –g パッケージ名
##ローカル
npm install パッケージ名
##package.json記述
###package.json記述
npm in
npmモジュールをインポートしてRollupでビルドしたときに○○ is not definedが出たときの対処
[svelte](https://svelte.dev/)を使ってちょっとしたWebアプリを作っているときにハマったのでメモ。
# 環境
– macOS Catalina
– Node v12.15.0
– npm v6.13.4
– rollup.js v1.20.0
– Svelte v3.0.0# 事象
svelteではクイックスタート用のテンプレートが用意されており、その中でモジュールバンドラとして[Rollup](https://rollupjs.org/)を利用しています([参考](https://github.com/sveltejs/template))。
このテンプレートを元に開発を進めていたところ、特定のnpmモジュールをインポートして動かした際に下記のエラーに遭遇しました。“`
Uncaught ReferenceError: stream is not defined
“``stream`というモジュールは自分が書いたプログラムの中では使っていません。
# 問題点
インポートしたnpmモジュールが内部でNodeのビルトインモジュールを利
Vueはどこへ消えた?
この物語は、[Vue CLI](https://cli.vuejs.org/)に興味を持ち、[Yarn](https://classic.yarnpkg.com/ja/)を使ってインストールしてみたものの、パスを見失ってしまった哀れな開発者の奮闘の記録です。
## 第1話 WindowsにYarnでVue CLIをインストールする
### 事件編
まずはWindowsに[Node.js](https://nodejs.org/ja/)とYarnをインストールします。使うのは、Windows用のパッケージマネージャ[Chocolatey](https://chocolatey.org/)。
“`
choco install nodejs
choco install yarn
“`で、[Vue CLI](https://cli.vuejs.org/guide/installation.html)の記述の通り、YarnでVue CLIをインストール。
“`
yarn global add @vue/cli
“`ちゃんとインストールできたかか確認すると……
“`
Macでnodeのバージョンを切り替える〜少しめんどい〜
nodeのバージョンを切り替えるための処理です!
homebrewがインストールされている前提で話をすすめます。homebrewがインストールされてない方はインストールして下さい。## nodebrewがインストールされているか確認
“`ruby
$ nodebrew -v
“`“`ruby
$ node -v
“`
でnodeのバージョンも確認できる## nodebrewをインストール(インストール済みであれば不要)
“`ruby
$ brew install nodebrew
“`“`ruby
$ nodebrew -v
“`
でバージョン確認## nodebrewでインストール可能なnodeのバージョンを確認
“`
$ nodebrew ls-remote
“`## ローカルの状況確認(nodebrewを通さずにインストールされているnodeがあれば一旦、アンインストールが必要)
“`ruby
$ brew ls
“`
→nodeが入っていれば一度アンイストールしなければいけない## 今まで使っていたnodeをアン
【解決】nuxtでyarnをすると「gyp: No Xcode or CLT version detected!」エラーが発生
# 環境
* macOS Catalina 10.15.3 (zsh)
* node.js v10.15.2
* yarn 1.21.1
* vue/cli 4.1.1# 事象
nuxt + typescript + vuetify環境を作成するために、以下のテンプレートを使用しました。
https://github.com/nuxt-community/typescript-templateそこでyarnコマンドを実行すると以下のエラーが発生し正常に起動できませんでした。
“`
gyp: No Xcode or CLT version detected!
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/Users/dmorita/.nodebrew/node/v10.15.2/lib/node_modules/npm/node_modules/node-gyp/lib/co
【AWS】IAM-APIGetway-Lambda-DynamoDB-S3でシンプルなアプリケーション制作
# はじめに
サーバーレス勉強する際に、いろいろ試したメモ、
つまずいた点や、解決法など、主に自分用のメモになります。
他の方の参考にもなれば嬉しいです。# やること
– DynamoDBでテーブル作成
– IAMでDynamoDB用のロール作成
– Lambda上でDynamoDBに値を挿入
– Lambda上でDynamoDBから値を取得
– API Gatewayの設定
– S3にウェブアプリケーションをアップし、公開する
– 公開されたアプリケーションでDynamoDBを操作する# DynamoDBでテーブル作成
`テーブルの作成` をクリックしてください。
![UNADJUSTEDNONRAW_thumb_42.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/320164/e8b36328-a977-b97b-9a40-85a61a69fe36.jpeg)
`テーブル名`と`プライマリキー`を入力します、`プライマリキー`のタイプは`数値`を選んでください。
![2020-02-07
Node.jsでGoogle Slidesの新規スライド作成
Google Slides APIをNode.jsから触ってみてます。
* [Node.jsでGoogle Slides APIを触ってみる](https://qiita.com/n0bisuke/items/8a343ca4d8fe2f1bac55)
* [Node.jsでGoogle Slides内のテキストを取得してみる](https://qiita.com/n0bisuke/items/325fbe56a48e7d83e8dc)の記事の続きです。
## Google Slideのcreateを試す
スライドの新規作成が出来そうな雰囲気です。
[presentations.createのドキュメント](https://developers.google.com/slides/reference/rest/v1/presentations/create)を覗くとスライド作成できそうな雰囲気がありました。
## 準備
[Node.jsでGoogle Slides APIを触ってみる](https://qiita.com/n0bisuke/items/8a343ca4
Node.jsでGoogle Slides内のテキストを取得してみる
[Node.jsでGoogle Slides APIを触ってみる](https://qiita.com/n0bisuke/items/8a343ca4d8fe2f1bac55)の続きです。
## 準備
前回の記事を参照して、スライド情報にNode.jsからアクセス出来るようにしましょう。
## 適当なスライドを用意する
こちらを用意してみました。
https://docs.google.com/presentation/d/1ziVnaFocZ_YF_cuXyXF5PUKGoE62eX-XlnOEslPkKUc/edit#slide=id.p
![](https://i.gyazo.com/f9214387d452f250f4af7147925a735e.png)
`https://docs.google.com/presentation/d/<ここがプレゼンテーションID>/edit#slide=id.p`になるのでこのスライドのプレゼンテーションIDは`1ziVnaFocZ_YF_cuXyXF5PUKGoE62eX-XlnOEslPkKUc`になります。
## N
Node.jsでGoogle Slides APIを触ってみる
[Google SlidesのAPI](https://developers.google.com/slides)をNode.jsで触ってみます。
![](https://i.gyazo.com/09de96d089095030dac6fa1cc65cfd3d.png)
[公式チュートリアル](https://developers.google.com/slides/quickstart/nodejs)になぞりつつ試したメモ
です。## 準備
Node.jsのバージョンは13.7.0です。
* 作業フォルダ作成
“`bash
$ mkdir slidesapitest
$ cd slidesapitest
“`* 利用モジュールをインストール
“`bash
$ npm init -y
$ npm i googleapis@39
“`* `app.js`ファイルを作成
“`bash
$ touch app.js
“`## APIをオンにして、 `credentials.json`を作成
[公式チュートリアル](https://develo
Node.js – Mysql「Error: Cannot enqueue Query after invoking quit.」の対処(Connection pool)
## はじめに
本記事はデータベースにおける`コネクションプール(connection pool)`について触れていくものです。
実際にハマったシチュエーションをもとに説明していきたいと思います。
* 事象の詳細
* 原因
* 状況を再現してみる
* 適切な対処方法
* コネクションプールの実装## 事象の詳細
`Node.js`にて、`Mysql`からデータを取得しようとしたとき、以下のエラーが発生した。
`Error: Cannot enqueue Query after invoking quit.`
どうやら2回目の`GET:/api/todo`を呼び出した時に必ず発生するようです。
その時のソースコードは以下です。“`javascript
const express = require(“express”);
const mysql = require(“mysql”);
const app = express();// データベースへのコネクションを生成
const connection = mysql.createConnection({
/
nodeコマンド(non-blockngとblockingについてメモ)
# コマンドライン上で操作
node.jsではブラウザなどを使用せずにコマンドライン上で操作ができる
“`sh
# コマンドライン上での操作開始を宣言
$ node# この状態で処理を書くと実行される
> console.log(‘hello world’) # 出力結果: hello world# 終了する
> .exit
“`# jsファイルから実行
jsファイル`sample.js`を作成し、処理を実行させる“`sh
# コマンドライン上でjsファイルの処理開始を宣言
$ node sample.js
“`# non-blockngとblockingな書き方
– nodeはメインのスレッドが1つであるため、処理がブロックされるような書き方はnodeの処理の速さの特徴を殺してしまうためやめるべきである
– setTimeoutなどのタイマー処理やデータベースへのアクセス、ファイルの書き込みといった命令は処理に時間を要するため、次の命令をブロックしないように書く必要があるそこで、non-blockingな書き方を採用し、時間がかかりそうな関数は