- 1. nodeを使ってmysqlに接続する
- 2. Node.jsで、ファイルから1行ずつ読み込むためのreadlineモジュール
- 3. DOMについて調べたことの備忘録
- 4. LINE Notifyのnpmライブラリ作った
- 5. [kintone] node.jsで開発環境のフィールド権限を本番環境に反映する
- 6. Node.js + axios で 画像をFormDataでアップロードしようとしてハマった話
- 7. WSLのUbuntu環境でPC内音楽データをWeb操作する(おまけでyoutube音楽とGooglehomeで伝言)
- 8. Axiosの前処理でAPIレスポンスのスネークケースをキャメルケースに変換する
- 9. Authorizationヘッダーを使ったPOSTリクエストのTypeScript / Node.jsサンプル各種
- 10. Technology Radar 2019のピックアップ
- 11. CircleCIのnode imageでnpm installに失敗する
- 12. Node.jsのfsモジュールの使い方
- 13. ファイルをセーブしたら、npmスクリプトを走らせる」というライブラリを1行で作る。
- 14. Node.js で無限ループしつつ、一定周期で処理をしたい
- 15. ZEIT NowでNode.jsのバージョン指定をする
- 16. Node.jsでプロファイリングをする方法
- 17. Node.jsで簡易テストをできるassert.equal()
- 18. Node.jsのprocess.argv[i]とは
- 19. Node.jsでのリクエストIDのログ出力(express, log4js, request-context)
- 20. Nodejs Send Email Using Nodemailer
nodeを使ってmysqlに接続する
nodeでmysqlに接続するには
“`
// requireの設定
const mysql = require(‘mysql’);// MySQLとのコネクションの作成
const connection = mysql.createConnection({
host : ‘localhost’,
user : ‘root’,
database: ‘testdatabase’
});// 接続
connection.connect();// userdataの取得
connection.query(‘SELECT * from userdata;’, function (err, rows, fields) {
if (err) { console.log(‘err: ‘ + err); }console.log(‘name: ‘ + rows[0].name);
console.log(‘id: ‘ + rows[0].id);});
// userdataのカラムを取得
connection.query(‘SHOW C
Node.jsで、ファイルから1行ずつ読み込むためのreadlineモジュール
##注意
この記事は初心者視点でザックリとした説明をしています。正確性に欠ける可能性がございますが、ご了承ください。「明らかに違うよ」ということがありましたら、ご指摘くださると幸いです。##Node.jsでファイルに1行ずつ書き込みたい。
Node.jsを使う際、.txtファイルや.csvファイルを一行ずつ読み込みたい場合がありました。
そんな時に使えるのが[readline](https://nodejs.org/api/readline.html)モジュールです。Node.jsで標準に備えられています。##readlineモジュールの使い方
まずは以下のように、ファイルに書きます。“`JS:index.js
‘use strict’;
//モジュールの読み込み
const fs = require(‘fs’);
const readline = require(‘readline’);//readstreamを作成
const rs = fs.createReadStream(‘./input.csv’);
//writestreamを作成
const ws =
DOMについて調べたことの備忘録
# DOMについて
– Document Object Model
– HTML や XML 文書を操作するための、たくさんの機能や規則のこと
– DOMは階層構造をとる
– 各要素はノードという単語を用いて表現される# ノードについて
– ノード
– 子ノード(children)
– 親ノード(parent)
– 兄弟姉妹ノード
– ノードは、webページとプログラミング言語をつなぐ役割を持つ
– ID名からノードを取得、操作する[JavaScript初心者でもすぐわかる!DOMとは何か?]
(https://eng-entrance.com/what-is-dom)[DOMとは何か?【JavaScript初心者向けにわかりやすく説明します!】](https://watablogtravel.com/document-object-model/)
DOMの話に戻ります
## HTML要素の取得:getElementById()
– Documentオブジェクトのメソッドである「getElementById()」が一般的らしい
– 文字列のHTMLタグを認識で
LINE Notifyのnpmライブラリ作った
## はじめに
[LINE Notify API](https://notify-bot.line.me/doc/ja/)のNode.jsライブラリを作りました。
https://www.npmjs.com/package/line-notify-nodejs使い方とサンプルソースを紹介します。
## 使用イメージ
![Lwie2cZnxIv4eVYeEe9e1574930325-1574930375.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/90087/be445a22-ef3c-be3c-4eaa-601b1f4b4858.gif)
## インストール
“`
$ npm install line-notify-nodejs
“`## 使い方
簡単2STEPです。
### STEP1. トークンを発行する
下記ページからトークンを発行します。
– https://notify-bot.line.me/my/
![image.png](https://qiita-
[kintone] node.jsで開発環境のフィールド権限を本番環境に反映する
# 概要
開発環境を本番環境に反映する際、フィールド権限などはアプリテンプレートでは
持ってこれないのでcli叩いてやりたかった。
kintone-cliとか便利なツールあるのでそれ使えたら使ったほうがいいと思います。
今回しか使わない捨てコードなので適当ですが“`main.js
const request = require(“request”);const params = {
url: “開発用のドメイン/k/v1/field/acl.json?app=1”,
method: “GET”,
json: true,
headers: {
“X-Cybozu-Authorization”: “ログイン名とPWをBase64エンコードしたもの”
},
};request(params, (err, res, body) => {
if (err) {
console.log(‘err :’, err);
return;
}const Admine = “本番用ドメインのログイン名とPWをBase64エンコードした
Node.js + axios で 画像をFormDataでアップロードしようとしてハマった話
# やりたかったこと
Node.jsのスクリプトでローカル上の画像ファイルを`mulitpart/form-data`で送信したかった。
フロント側でaxiosを使っていて楽だったのでそれを使おうと思った。# 結論
“`js
const fs = require(‘fs’)
const axios = require(‘axios’)
const FormData = require(‘form-data’)const uploadImage = async ({ auth_token, imageFilePath }) => {
const form = new FormData()
const file = fs.createReadStream(imageFilePath)
form.append(‘image_file’, file)
const config = {
headers: {
‘X-AUTH-Token’: auth_token,
‘X-API-Token’: env.API_TOKEN,
..
WSLのUbuntu環境でPC内音楽データをWeb操作する(おまけでyoutube音楽とGooglehomeで伝言)
#はじめに
●PC内音楽データをWEBで操作し、PCスピーカで再生できるようにする。
(Googlehomeで声で操作するのWeb操作版です。声でキーワードがうまく入力できない場合に使用してます)
【操作例】WEBから「竹内まりや」と入力する
![コメント 2019-11-27 230824.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222582/f9e43aa4-82c0-22d0-eb1f-747e099fa1af.png)
●おまけ
youtube音楽:下記の記事と同じです。
WSLのUbuntu環境でyoutube音楽をWeb操作する(おまけでradikoとサイマルラジオ)
伝言:Googlehomeで伝言を再生します。google-home-notifierを使用。#環境
●Windows10 HOMEのPCにWSLのubuntuをインストールする。
●ubuntuでapache2,npm,node.js,youtube-dl,mplayerをインストールする
●WSLのubuntu
Axiosの前処理でAPIレスポンスのスネークケースをキャメルケースに変換する
## はじめに
サーバサイドからのAPIレスポンスが`some_id`のようにスネークケースで定義されていると、JS側で毎回キャメルケースに変換することになりますよね。“`ruby
{
some_id: 1,
some_name: “name”,
}
“`今回はそんな変換処理をAxiosの共通処理でまとめてみました。
## レスポンスをキャメルケースに変換する
“`javascript
import { camelCase, snakeCase } from ‘change-case’;const isObject = (target: any): boolean => Object.prototype.toString.call(target).slice(8, -1)
.toLowerCase() === ‘object’;const convertSnakeToCamel = (target: any): void => {
if (Array.isArray(target)) {
target.forEach((t) => c
Authorizationヘッダーを使ったPOSTリクエストのTypeScript / Node.jsサンプル各種
# POSTの例を
Node.js上動くアプリから、POSTリクエストを投げるコードを書くことが最近多いので、パターンをいくつか書き残そうと思いました。モジュールによって変わる使用感やコードの量、デバッグ方法などを比較したかったため、複数の方法を残します。
なお、ここではコードサンプルを残すのみで、特に比較や分析は述べてません。### ここに記録しているコード
下の3つです。すべてTypeScriptに対応しているモジュールです。* Node.js標準のhttp/httpsモジュールを使った例。
* requestモジュールを使った例.
* [got](https://github.com/sindresorhus/got)モジュールを使った例## Nodeの標準に含まれているhttp, httpsモジュールを使った例
“`typescript:Node標準のhttp/httpsモジュール
import jsonDataImported from ‘./data.json’;const ACCESS_TOKEN = `<<アクセストークンと置き換えます>>`;
con
Technology Radar 2019のピックアップ
[Technology Radar](https://www.thoughtworks.com/radar)から気になったものをピックアップし、軽く説明を添えてみました。
社内で共有したところ、反響が良かったのでQiitaにも投稿します。(自分と似た技術スタックの方に刺さるのではないかと考えています)
# ピックアップの観点
**「自社の技術スタックとマッチしてるか」**、**「自分の技術スタックとマッチしているか」**の観点からピックアップしています。筆者は現在web系の企業のSREチームに所属しており、業務や趣味で触れる技術/言語としては下記のとおりです。
– Ruby on Rails
– Node.js / Vue.js / Nuxt.js
– AWS + Terraform
– Go/python/Firebase/GCP一方で下記技術は興味が無い/専門じゃない等の理由でスルーしていますのでご注意ください。
– モバイルアプリ系
– ML系
– JVM系# Technology Radarとは
要は**今年のイケてる技術の紹介**です。
4段階で導入のお
CircleCIのnode imageでnpm installに失敗する
CircleCI2系で、公式ドキュメントを参照してセットアップしたらnpm installがコケた。
circleci/node:6.17.1のイメージを使用してる環境。https://circleci.com/docs/ja/2.0/language-javascript/
“`console
Error: Cannot find module ‘strip-ansi’
“`こういうエラーでnpm installが停止する。
package-lockの中を見るとstrip-ansiは入ってるし……と思ってたがプロジェクトのパッケージが問題ではなくて、原因としては、公式ドキュメントにある `sudo` がだめ。“`yml:.circleci/config.yml
– run:
name: update-npm
command: ‘sudo npm install -g npm@latest’
“`npmがsudoでインストールされるとそのあとのnpmコマンドが通らなくなる(別にinstallに限らずnpmコマンド全部落ちる)。
sudoを外すと
Node.jsのfsモジュールの使い方
#fsモジュールとは
fsモジュールはファイルを扱うためのモジュールで、ファイルから書き出したり、ファイルに書き込んだりするときに役立ちます。
Node.jsがはじめから提供しているモジュールなので、Node.jsのインストールがしてあれば、fsモジュールのインストールの必要はありません。##ファイルの読み込み
“`JS
const fs = require(‘fs’);//fs.readFileSync(ファイルのパス, 文字コード, コールバック関数)
fs.readFileSync(‘./text.txt’, utf-8, (err, data) => {
//dataがファイルの中身、errは読み込み時のエラー
if(data) {
console.log(data);
} else {
console.log(err);
}
});
“`##ファイルへの新規書き込み
“`JS
const fs = require(‘fs’);//fs.writeFileSync(ファイルのパス, 書き込む文字, 文字コード, コールバック
ファイルをセーブしたら、npmスクリプトを走らせる」というライブラリを1行で作る。
## 「ファイルをセーブしたら、npmスクリプトを走らせる」というライブラリがある日突然欲しくなりました。
[onchange](https://github.com/Qard/onchange)というライブラリが見つかりました。npmライブラリです。
使い方は簡単で、onchangeをグローバルにインストールした後、grobパターンで、監視するファイルとnpmスクリプトを記述するだけです。
“`
npm install -g onchange
onchange ‘app/**/*.js’ ‘test/**/*.js’ — npm test
“`しかしです…
**globパターンを記述するのが地味に面倒い!**
ルートフォルダ以下で変更があれば、npmスクリプトを走らせるだけでいいのに…## そこでよりシンプルなライブラリを自作することにしました
作ったのが「save-run」というライブラリ。
名前は、save-runとして、npmに登録してあります。
[githubリポジトリはこちら](https://github.com/t-kabaya/sav
Node.js で無限ループしつつ、一定周期で処理をしたい
メモ。
Node.js で無限ループしつつ、一定周期で処理をしたいという要件があった。
(具体的には SIGTERM シグナルを受けてから1秒毎に標準出力に文字列を出力したい)
上記について Node.js のサイトにずばり書いてあった。[“Infinite Loop” Execution ~ setInterval()](https://nodejs.org/de/docs/guides/timers-in-node/#infinite-loop-execution-setinterval)
“`node.js
function intervalFunc() {
console.log(‘Cant stop me now!’);
}setInterval(intervalFunc, 1500);
“`この場合、1.5秒毎に `intervalFunc()` が実行される。
必要に応じて時間や処理内容を変えれば良い。Node.js v10.17.0 で動作確認済み。
ZEIT NowでNode.jsのバージョン指定をする
## NowへのデプロイでNodeのバージョンに起因するエラーが起きた
“`
Error: @grpc/grpc-js only works on Node ^8.13.0 || >=10.10.0
“`
上記のエラーが起きて困った。## :bomb: 原因
要するに8.13.0 から 10.10.0 の間のバージョンじゃないと動かないよということだと思う。## :star: 解決策
じゃあNodeのバージョンをこっちで指定してあげようということになる。英語の情報しか出てこないが漁っていると、「now.json」で「engine」という項目を指定するみたいな情報が出てくるがこれが罠である。
***ZEIT NowのNode.jsバージョン指定は「now.json」ではなく「package.json」で指定する***
“`package.json
“engines”: {
“node”: “10.x”
}
“`これでOK。
ただし、バージョンは何でもかんでも指定出来る訳ではなく提供されているものだけ。
Node.jsでプロファイリングをする方法
##node –prof index.js
–profはプロファイリングと呼ばれる、処理に時間がかかっている様子やどれ位メモリを使っているのかを調べる方法を提供するオプションです。“`console:console
$ node –prof index.js
“`
とすると、index.jsが入っているディレクトリに、“`index.jsが入っているディレクトリ
isolate-0x103002a00-v8.log
“`
以上のようなログファイルが生成されます。
しかし、このログファイルは人間が見てもよくわかりません。
そこで、このログファイルを以下のように人間が見やすいファイルにします。“`console:console
$ node –prof-process isolate-0x103002a00-v8.log
“`
すると、コンソールに以下の表示が出ます。“`console:console
>
Statistical profiling result from isolate-0x103002a00-v8.log, (382 ticks,
Node.jsで簡易テストをできるassert.equal()
##assert.equal()
assert.equalは、アサーションというnode.jsが提供する簡易テストのモジュールです。“`JS
const assert = require(‘assert’);
assert.equal(50, 50); //OK
assert.equal(50, “50”); //OK
assert.equal(50, 70); /*AssertionError: 50 == 70 *///関数と答えの比較もできます
function addition(n) {
let result = n + 1;
return result;
}
//第三引数に、エラーが出た場合のエラー表示の設定をできる。
assert.equal(addition(1), 3, `1 + 2の答えは3ですが、計算は${additon(1)}でした`)
//AssertionError: 1 + 2の答えは3ですが、計算は${additon(1)}でした`
“`##assert.deepEqual()
assert.deepEqualは配列オブジェクトの深
Node.jsのprocess.argv[i]とは
Node.jsのファイルで以下のような記述がありました。
“`JS:index.js
‘use strict’;
const number = process.argv[2] || 0;
let sum = 0;
for (let i = 1; i <= number; i++) { sum = sum + i; } console.log(sum); ``` それに対して、いかのような記述をすると、 ```console:console $ node index.js 3 > 7
“`
となります。
つまり、node index.js 3の3の部分が、process.argv[2]に当てはまるということです。
process.argv[0]だったら、node
process.argv[1]だったら、index.js
を意味します。
Node.jsでのリクエストIDのログ出力(express, log4js, request-context)
##概要
Node.jsのexpressベースのWebアプリで、リクエストIDをログ出力します。
今回、log4js、request-contextを使用しました。request-contextで、リクエスト毎にリクエストIDを保持します。
log4jsのtokensに、リクエストIDをセットして、patternでリクエストIDを出力するようにしています。##参照情報
参考にさせていただいたページは下記です。* 参照先1: [Node.jsでログにRequestIdを入れる](https://qiita.com/ippei_ukai/items/adea86744777cbef5eba)
* 参照先2: [Node.js で Log に userId を自動で出力する方法](https://qiita.com/waterada/items/3b3cedc86e1a4eb47d91)
##注意点
request-contextは、下記の通り、Node.jsのdeprecatedになっているdomainに依存しています。参照先2でも指摘されており、より詳しく記載されていま
Nodejs Send Email Using Nodemailer
Email is use to send notification or information to the user.This nodejs tutorial help to send email using nodemailer. You can send mail as a plain text, HTML body and email with attachment.I will demonstrate all flavors of email using node Nodemailer.