- 1. webpackとは何なのか?
- 2. ElectronでcontextBridgeによる安全なIPC通信(受信編)
- 3. 【MongoDB】APIログ取るのに手軽で最高だった件 (+intellijだとさらに手軽)
- 4. [2020] VPSで複数のNodeJSアプリをHTTPS化してホストする
- 5. Node.js と Babel で ES6
- 6. Nowでプロキシを建ててCORSエラーを爆速解決
- 7. NestJS CLIで初心者でも簡単にNode.js REST APIが作れる!
- 8. GoogleのCloud Text-to-Speechを使ってDiscordの読み上げbotをサクっと作った
- 9. vue-cli-plugin-express でポート番号を指定してサーバーを起動する
- 10. 【NestJS】ヘルスチェック
- 11. Symbol Testnet node 構築備忘録
- 12. Node.js + Express サーバから、Docker(+Docker-Compose) + Redis サーバーにデータを送る・削除する
- 13. 【個人メモ】Node.js LINEBOT雛形
- 14. expo-cliというかnpmでconfigure errorが出たときの対応
- 15. Node.js + Express + express-session でセッション変数を使ってみる
- 16. nodeの便利なsqlビルダー、squelの使い方まとめ
- 17. できるだけasync/awaitを使わないほうがよくて、promsie/thenをつかったほうがいい
- 18. Windowsでgulpの環境構築。yarn編
- 19. Nodejs(TypeScript)とcacとinquirer.jsでサクッとCLIを作成する
- 20. Knexあれこれ(雑多メモ)
webpackとは何なのか?
# 概要
執筆中
ElectronでcontextBridgeによる安全なIPC通信(受信編)
## はじめに
Electronにおけるメインプロセスとレンダラープロセス間のやり取りに関して、セキュアなIPC通信にはcontextBridge[^1]を使おう、[という記事](https://qiita.com/pochman/items/64b34e9827866664d436)を前回書いたらそれなりに読んでもらえているみたいです。ありがとうございます。
その時の例として、レンダラープロセスからメインプロセスへの**送信**を扱いましたが、**受信**についてもリクエストがあったので紹介します。基本的にはStackOverFlow[^2]からの引用です。
基本的にElectronにおけるメニュー操作はメインプロセスでハンドルすることになるので、それをレンダラープロセスへ送る際には、**メインプロセスからチャンネル付きで信号を送信し、レンダラープロセスで受信時にチャンネルに従って処理を分ける**、ということをするでしょう。これを目的としたcontextBridgeの利用法です。
## 前回からの改修点
まずは前回の記事の方法3までをお読みください。今回は前回の方法3から
【MongoDB】APIログ取るのに手軽で最高だった件 (+intellijだとさらに手軽)
#はじめに
気にはなっていたけど、なかなか触れる機会が無かった。。
そんな、同じクラスのあの子のような存在、それがmongoDBでした。
実際、使ってみると手軽でとても使いやすい。こちらの記事では、簡単にインストールから導入までをまとめてみました。
#MongoDBを使った開発内容
趣味の個人開発でMongoDBを利用しました。
[APIを利用したbitcoin自動売買システム]– bitcoin値取得にCryptWatchAPIを使用
– bitcoin売買にBitflyerAPIを使用
– 開発言語:Node.js
– 開発環境:macOS Catalina
– デプロイ環境: AWS:EC2:ubuntu18.04LTSMongoDBはbitcoin売買時の値段と、その売買判断に使われた値のログを取りたくて使用しました。
#mongoDBとは
誤解を恐れずに極端に言うと、**データをJSON形式でレコードできるデータベースです**
すいません! ここでは、わかりやすさ優先しましたm(_ _)m
(玄人の方々、マサカリ投げないでください。)他にも、
[2020] VPSで複数のNodeJSアプリをHTTPS化してホストする
VPSで複数のサービスのAPIサーバーを運用するための手順です。
**概要**
* Digital Ocean の Ubuntu イメージ(5USD/month)
* サブドメインに各アプリを紐づける
* Let’s Encrypt で SSL 化## サーバーのセットアップ
### Digital Ocean Droplets のセットアップ
以下の設定でDropletsを作ります。
※ 他社のVPSサービスを利用する場合は、ドメインの`@` `www` `app1` `app2`をサーバーに向けてSSH接続できる状態までやってこの項を飛ばしてください。* Image: Ubuntu
* Plan: Standard / 5USD
* Region: シンガポール
* Authentication: SSH keysドメインの管理画面から使うドメインの`www` `@` `app1` `app2` を上記で作ったサーバーに向けます。
“`bash
# SSH 接続 できることを確認
$ ssh root@yourdomain.com
“`### メモリのス
Node.js と Babel で ES6
なんか、いつも、Node.js で、ちょっとコード書いて試したり、勉強がてらコード書いたりするときに、 ES6なコード書きたい時どうすんだっけ? と悩んでしまうので、ここにメモしておきます。
実際に確認した時のそれぞれのバージョンは以下になります。
“`
$ node –version
v12.14.1
$ npm –version
6.13.4
$ npx –version
6.13.4
“`あと、このメモ作成時にインストールされる Babel 関連パッケージのバージョンは、以下の通り。
“`
$ grep babel package.json
“@babel/cli”: “^7.8.4”,
“@babel/core”: “^7.8.4”,
“@babel/node”: “^7.8.4”,
“@babel/preset-env”: “^7.8.4”
“`# 作業用のディレクトリを作る
“`
mkdir work
“`# npm init を実行
“`
npm init -y
“`# babel 関連を
Nowでプロキシを建ててCORSエラーを爆速解決
# 前置き
`nuxt generate`で作った静的サイトをGitHub Pagesにホスティングし,自分のはてなブックマークのRSSをAxiosでGETして表示させようとしていました.
何も考えずにブラウザで開くとこんなエラーが出てうまくいきません.
“`
Access to XMLHttpRequest at ‘http://api.example.com’ from origin ‘http://localhost.com’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
“`いわゆる,[オリジン間リソース共有(CORS)](https://developer.mozilla.org/ja/docs/Web/HTTP/CORS)における同一オリジンポリシー違反です.このエラーはブラウザにおいて,現在アクセスしてるサイトと異なるオリジンにあるリソースに対してリクエストを行うときに起きます.
今
NestJS CLIで初心者でも簡単にNode.js REST APIが作れる!
Node.jsなんてほとんど使ったことがないのに、頑張って[NestJS](https://nestjs.com/)でCLIを使ってREST APIを作りました。
あまりドキュメントなかったことに加えて私のスキル不足で半日ほどかかってしまいましたが慣れれば30分もかからないです。# 環境
Ubuntu18.04.01 LTSで動かしました。
NEST CLIの`nest info`でバージョン情報を見ます。“`bash
$ nest info_ _ _ ___ _____ _____ _ _____
| \ | | | | |_ |/ ___|/ __ \| | |_ _|
| \| | ___ ___ | |_ | |\ `–. | / \/| | | |
| . ` | / _ \/ __|| __| | | `–. \| | | | | |
| |\ || __/\__ \| |_ /\__/ //\__/ /| \__/
GoogleのCloud Text-to-Speechを使ってDiscordの読み上げbotをサクっと作った
## Discordのメッセージ読み上げbot
Discordのボイスチャットで、特定のチャンネル内のメッセージを自動で読み上げてくれるbotを作りました。
弊ディスコで導入されている読み上げbot pic.twitter.com/VvdzYlmqEz
— 古都こと (@kfurumiya) February 12, 2020
Discordの読み上げbotとしては[喋太郎](https://www.d
vue-cli-plugin-express でポート番号を指定してサーバーを起動する
vue-cli 3.x プラグインの [vue-cli-plugin-express](https://www.npmjs.com/package/vue-cli-plugin-express) にて、ポート番号を指定してサーバーを起動する際に詰まったので備忘録として。
この記事は vue のプロジェクトに `vue add express` でプラグインを追加した状態から進めていきます。
## 解決方法
`package.json` の `”scripts”` 内にある `”express”` または `”express:run”` の値の末尾に `–port [任意のポート番号]` を付け加えることで、ポート番号を指定してのサーバー起動に成功しました。
“`package.json
“scripts”: {
“serve”: “vue-cli-service serve”,
“build”: “vue-cli-service build”,
“lint”: “vue-cli-service lint”,
“express”: “vue
【NestJS】ヘルスチェック
# やりたいこと
NestJS x TypeORM の環境で、DBまで一気通貫したヘルスチェック用URLを作りたい。
[terminus](https://github.com/godaddy/terminus)というNodeJS用のパッケージで、NestJS用のものがあるので、それを使います。# 環境
– [NestJS 6.11.3](https://nestjs.com/)
– [TypeORM 6.2.0](https://github.com/typeorm/typeorm)
– [terminus 4.3.1](https://github.com/godaddy/terminus)
– [@nestjs/terminus 6.5.6](https://github.com/nestjs/terminus)# インストール
“`
yarn add @nestjs/terminus @godaddy/terminus –no-optional// or
npm install –save @nestjs/terminus @godaddy/termi
Symbol Testnet node 構築備忘録
これは
https://billing.time4vps.com
で
借りたサーバーでテストネットノードを構築した際の 備忘録である
この構築にあたっては
mikun氏@mikunNEM
の協力無くしては
成し得ませんでした 今一度 感謝の意を表します
セキュリティー編———————————————-
ここでは 例として
usernameを ”pasomi”
sshdportを ”20023″
として 作業を進めますrootでログイン
新しいuser作成
adduser pasomi(任意の名前)新しいuserにsudo権限付与
gpasswd -a pasomi sudosshポート変更とrootログイン禁止
vim /etc/ssh/sshd_config“i”で編集を開始
接続Poetの変更
“#Port 22″を”Port 20023″(任意の数字)に変更rootログインを禁止
“PermitRootLogin yes”を”PermitRootLogin no
Node.js + Express サーバから、Docker(+Docker-Compose) + Redis サーバーにデータを送る・削除する
# Node.js サーバーから、Docker サーバにデータを送る
– Ubuntuサーバー環境は2つ使ってます
– マシンA
– Node.js + Express + express-session + connect-redis + Redis
– マシンB
– Docker + Docker-Compose + RedisマシンA から マシンB を参照してデータを表示したかったので、こんな構成になってます。
色々サイト見てたけど、実際にやってみないとコレわかんねーわって思った。## マシンAの下準備
### 色々インストールする
Ubuntu と Node.js は既に導入済を想定#### 必要なものをインストールする
“`bash
$ mkdir exp_redis_test
$ cd exp_redis_test
$ npm install –save express \
express-session \
connect-redi
【個人メモ】Node.js LINEBOT雛形
## プロジェクト作成とハローワールド
“`console
$ mkdir linebot
$ cd linebot
$ npm init -y
“`
“`console
$ npm i @line/bot-sdk express
“`
“`console
$ npm install dotenv –save
“`“`console
$ touch index.js $$ .env
““
“`console
$ code .
“`“`index.js
‘use strict’;const express = require(‘express’);
const line = require(‘@line/bot-sdk’);
const PORT = process.env.PORT || 3000;
const dotenv = require(‘dotenv’)
dotenv.config()const config = {
channelAccessToken: process.env.CHANNEL_ACCESS_TOKEN
expo-cliというかnpmでconfigure errorが出たときの対応
いつも使ってるexpo-cliを利用しようとしたら、下記のようなエラーに遭遇した。
“`bash
gyp WARN EACCES current user (“nobody”) does not have permission to access the dev dir “/Users/xxxxxx/Library/Caches/node-gyp/12.3.1”
gyp WARN EACCES attempting to reinstall using temporary dev dir “/Users/xxxxxx/.anyenv/envs/nodenv/versions/12.3.1/lib/node_modules/expo-cli/node_modules/chokidar/node_modules/fsevents/.node-gyp”
gyp WARN install got an error, rolling back install
gyp WARN install got an error, rolling back install
gyp ERR! confi
Node.js + Express + express-session でセッション変数を使ってみる
# Express + express-session でセッション変数を試す
## 事前準備として、フォルダ作ったりパッケージインストールしたりする
“`bash
mkdir exps_test
cd exps_test
npm install –save express \
express-session \
body-parser \
ejs
“`## http で確認したいので、 index.ejs を作っておく
index.ejs は view として作るので、views フォルダを作っておく
### views フォルダ内に index.ejs を作る“`bash
mkdir views
cd views
nano index.ejs
“`### index.ejs の内容はコレ
“`html:index.ejs
nodeの便利なsqlビルダー、squelの使い方まとめ
##環境
node:v8.11.3##squelとは
メソッドチェーンやって、sqlを組み立てられる便利なnodeモジュール。
sqlを直書きしていると、他の人が見て分かりにくいものになってしまうので、sqlビルダーを使います。僕、フレームワークとか使う前までは直書きしていて、
当時は、文字列連結でandを作っていたので何回もやり直した記憶がある。。。larabelみたいな便利なフレームワークにはクエリビルダとかあったりするけど、今回はnodeなので、nodeのモジュールの力を借りる。
## 準備
●まず、インストール。
npmから、squelをインストールするだけ。
これは動作に必要なモジュールなので、–saveつける。●使い方
以下に書いたが、メソッドチェーンでfromやintoなどを直感的に指定できる。## selectを使った例
where()の中に、「squel.expr().and().and()」のように、拡張というか、追加で条件が書ける。
and()がいけるということは、もちろんor()もいける。あと、order byなら「order
できるだけasync/awaitを使わないほうがよくて、promsie/thenをつかったほうがいい
##環境
node:v8.11.3##非同期処理について
nodeを使ってapi作ってるときに、routeからサービスに行って次にdaoに行って~みたいな流れの中で、比較的少し時間がかかるDB処理や物理ファイル関連の処理やADサーバの処理とかで順番に処理をさせるために関数を非同期にしてawait使っていたんだけど、
それだと全ての関数にasyncつけなきゃいけなかったり、awaitつける必要が出てくるので、いろいろ面倒になってくる。当然、daoの部分が非同期関数なら、それを呼び出すサービスの関数の中でawaitをつける必要があり、awaitを使う関数もまた非同期にしなきゃいけなくて、またその関数を呼び出す関数も非同期にしなきゃいけなくなってしまうってことになる。
つまり、コントローラー、サービス、リポジトリ全て非同期になってしまう。awaitつけて呼び出そうとしたら、「ここ非同期じゃないやんけ。。。」って怒られてasyncのつけ忘れを直す機会がしばしばあるのが面倒だけど、個人的にはそんな嫌いじゃない。でもどいつもこいつも非同期になるのはなんか気持ち悪いですねぇ。。。(至言)
Windowsでgulpの環境構築。yarn編
#yarnでgulpの環境構築
gulpの環構築の時にサラッと出来るように自分用に投稿。
完璧に初心者なのであしからず※ちなみにyarnもgulpもnodeもインストール済みとして書きます。
##環境
・yarn
1.21.1
・gulp
CLI version: 2.2.0
Local version: 4.0.2 `
・node(楽だからnodistで管理したほうがいいかも)
v11.13.0##手順
test(任意)フォルダの中に移動します“`
C:\Users\(ユーザー名) > CD test
“`“`
C:\Users\(ユーザー名)\test >
“`
ちなみにtestフォルダの中は下記になります“`
test─┬─css
├─scss
│ └─main.scss
└─index.html
“`
package.jsonを生成しないとダメなので下記を実行“`
C:\Users\(ユーザー名)\test > yarn init
“`
実行すると色々聞かれるけどエンター連打。
そうすると
Nodejs(TypeScript)とcacとinquirer.jsでサクッとCLIを作成する
# はじめに
NodejsでCLIツールを作成するときに良さそうなパッケージを見つけて、実際に使ってみたら良かったので紹介していきます。
## 使ったパッケージ
### cac
シンプルでパワフルなコマンドラインインターフェイスを作るためのフレームワーク
[https://www.npmjs.com/package/cac](https://www.npmjs.com/package/cac)
### inquirer.js
対話型のインターフェースを組み込むのに便利
[https://www.npmjs.com/package/inquirer](https://www.npmjs.com/package/inquirer)
## インストール
“`terminal
$ npm i cac inquirer
$ npm i –save-dev @types/inquirer
“`## サンプル
`cac` を使ってCLIの骨組みを書いていきます。
下記の例では `cli hello hoge` みたいなコマンドを入力されたときに処理が実行されるようにし
Knexあれこれ(雑多メモ)
# はじめに(次の見出しまで飛ばしてOK)
最近仕事に対する楽しみ方を意識するようになり、今のつまらない仕事が続くのも嫌だったので、6月で辞めますと退職連絡を済ませてきた。
コーディングしてる最中はプライベートでも仕事でも楽しいので、コードをびっしり書くような会社に転職したいと思ったが、個人での活動実績はない。
とりあえず就活に繋がる作品を何か作ってみようと思い立ちこれ1本で大体何とか済ませちゃうNode.jsの勉強を1週間前に始めた。
が、DB処理があまり好きになれなかった。適当に買った参考書に書いてたDB処理は以下のようなもの
“`JavaScript:sql.js
connection.query(‘SELECT * FROM hoge ‘, function (error, results, fields) { //取得結果に対する処理 });
“`
新卒配属された闇プロジェクトのシステム構成がこれに近い形式で実装されていたことが大体の原因ではあるが。# 便利なnpmパッケージ Knex
PHP/Laravelあたりに言語/フレームワークを変更しようかなとこっそ