- 0.1. CLI のテンプレートプロジェクト by node and TypeScript
- 0.2. Jest実行時にserverless.ymlの環境変数を読み込む
- 0.3. Golang, Node.js, Kotlin, Swift で ECDSA
- 0.4. Lambda Node.js8.10から10.xへの バージョンアップに伴うImageMagickの対応
- 0.5. Tektonを使ってAppsodyで作ったNodejsアプリケーションをK8sにデプロイする。
- 0.6. Tektonを使ってAppsodyで作ったNodejsアプリケーションをK8sにデプロイする。(Tekton準備編)
- 0.7. Azure DevOps を社内 npm registry として使う時の Tips
- 0.8. Node.jsからFBX SDK Pythonを呼べるDockerイメージ作った
- 0.9. [Node.js]モジュール定義について整理(exports-require / export-import)
- 0.10. [JavaScript][Node.js]メモ:アロー関数の文法
- 0.11. Typescript Node.js メソッドの結果をキャッシュする
- 0.12. Node.jsとDynamoDBで日時データの処理
- 0.13. Node.js、Web Speech APIを使って音声認識を出力
- 1. 音声認識サンプル
- 1.1. WSL と VSCode と Windows Terminal でコマンドプロンプトにさようなら
- 1.2. Slackに匿名で画像を投稿できるようにした
- 1.3. Glitchが全く動作しない時または誤作動でコード変えても反応しないときの対処法
- 1.4. pre-commitとtextlintを使ってHTMLに潜むゼロ幅スペース文字や記号の表記ゆれを倒す
- 1.5. [JavaScript][Node.js]メモ:アロー関数の即時関数(関数を定義してその場で実行する)
- 1.6. DynamoDBでPromiseが使えた(Lambda Node.js)
- 1.7. Cannot find module 'express' | dockerでNode.js
CLI のテンプレートプロジェクト by node and TypeScript
node で CLI(Command Line Interface) を開発する機会が数回あって、せっかくなのでテンプレートプロジェクトとしてまとめてみた。
## テンプレートプロジェクト
* [amay077/node-cli-sample: Sample npm project for development your CLI](https://github.com/amay077/node-cli-sample)
### 必要なモノ
* nodejs: v11.13.0+
* typescript: v3.7.3+### 試し方
1. 上記のリポジトリを Clone する
2. リポジトリのディレクトリに cd して “npm ci“ する
3. “npm run build“ する
4. “npm link“ する
5. “source ~/.bash_profile“ を行うかまたはターミナルを再起動するこれでどのディレクトリでも “my-great“ コマンドが使用できるようになる。
#### 例
“`terminal
$ my-
Jest実行時にserverless.ymlの環境変数を読み込む
[jest-environment-serverless](https://github.com/fireeye/jest-environment-serverless) を利用して`serverless.yml`から環境変数を読み込みます。
(`.env`を読み込む以外の方法を試してみたかった)## 手順
### パッケージのインストール
必要なパッケージをインストールします。
“`.bash
$ npm install serverless jest jest-environment-serverless
“`### プロジェクトの作成
“`.bash
$ npx serverless create –template aws-nodejs
“`### 設定
`serverless.yml`に読み込む環境変数の名称と値を記述します。
“`serverless.yml
service: sampleprovider:
name: aws
runtime: nodejs12.xfunctions:
hello:
handl
Golang, Node.js, Kotlin, Swift で ECDSA
## はじめに
楕円曲線DSA (ECDSA) は楕円曲線暗号を利用した電子署名方式で、通信のセキュリティ確保のために広く使われています。様々なプログラミング言語の標準的なライブラリでサポートされているため、言語をまたいで利用することができます。
ただし、実際に言語をまたいで署名生成 & 検証をしようとしてみると API の違いやフォーマット方式によりハマること多々あったため、書き方をまとめておくことにしました。
## この記事に書かれていること
Golang, Node.js, Kotlin, Swift での(できる限り)標準ライブラリを利用した キーペア生成、署名生成・検証方法を記載します。
以降の記述は基本的に ECDSA を前提に書かれています。
**全体的に、エラーハンドリングは省略しているので注意してください。**
## この記事に登場するキーワード
キーワード | 概要
— | —
EC | 楕円曲線、もしくは楕円曲線暗号のこと。
P-256 | 利用する楕円曲線の種類。キーペア生成、署名生成・検証時にパラメータとして指定します。NIST
Lambda Node.js8.10から10.xへの バージョンアップに伴うImageMagickの対応
# はじめに
今回、LambdaランタイムNode.js8.10のサポート終了に伴い、Node.js10.xへアップデートを行いました。
結構詰まった部分などが合ったので、その備忘録として残します。## LambdaランタイムNode.js8.10のサポート終了について
以下、AWS公式より
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtime-support-policy.html2020/2/3を持ってLambdaのランタイムNode.js8.10の更新が終了します。
これに伴い、Node.js8.10で実装しているLambdaのランタイムを10.xにバージョンアップをしま
Tektonを使ってAppsodyで作ったNodejsアプリケーションをK8sにデプロイする。
さて、
[Tektonを使ってAppsodyで作ったNodejsアプリケーションをK8sにデプロイする。(Tekton準備編)](https://qiita.com/motuo/items/8d768175abcb077067dc)で、`Tekton Dashboad`の用意ができたら、いよいよ`Appsody`で作った`Node.js`のモジュールをデプロイしていきます。## 今回は私のリポジトリをクローンします。
“`sh
$ git clone https://github.com/motuo1201/appsody-test-build.git
$ cd appsody-test-build/
“`## 一度、ローカルで動かしてみましょう。
[こちらの記事](https://qiita.com/motuo/items/1cde634a010e9e1d7d5a)にも書きましたが、下記のコマンドでローカルの稼働が確認できます。“`sh
$ appsody run
……
[Container] App started on PORT 3000
“``
Tektonを使ってAppsodyで作ったNodejsアプリケーションをK8sにデプロイする。(Tekton準備編)
先日、[Appsodyを使ってNode.jsモジュールをK8sに簡単にデプロイする方法](https://qiita.com/motuo/items/1cde634a010e9e1d7d5a)を記事にしました。
この記事ではさらに踏み込んで、作成した`Node.js`モジュールを`Tekton`を使ってK8sにデプロイするCI/CDパイプラインを作ってみましょう!
まず、この記事では以下の環境に`Tekton`を準備するところから始めます。
**※前回と同様に環境はmac。docker for macで`Kubernetes`が有効であることが前提です。**## What’s Tekton?
ざっくりいうと、**Kubernetes上で稼働するクラウドネイティブなCI/CDパイプライン**となります。
代表的な使い方は、`Github`からソースコードを取得して、それを自動的にKubernetesへデプロイする、というところでしょうか。
詳細は本筋とは逸れるのであまり触れませんが、[Githubのリポジトリ](https://github.com/tektoncd/pipelin
Azure DevOps を社内 npm registry として使う時の Tips
社内開発フレームワークの npm package を管理するために、Azure DevOps の Artifacts がメンバー限定 npm registry として使える事が判った。
その設定を行った際に判ったことをメモ。## Azure DevOps の設定
* [Use packages from npmjs.com – Azure Artifacts | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/devops/artifacts/npm/upstream-sources?view=azure-devops)
に書いてある通りなのだが、サラッと言うと。
1. Azure DevOps にプロジェクトを作成し、Artifacts を選択
2. Create Feed で Feed を作成。名前は適当に、Visibility は “Member of” で。”Upstream Source” もチェックを入れる。
3. 右上のギアアイコンをクリック → Upstream sou
Node.jsからFBX SDK Pythonを呼べるDockerイメージ作った
# Node.jsからFBX SDK Pythonを呼べるDockerイメージ作った
とある事情により、Node.jsからFBX SDK Pythonを呼ぶ必要があったので、Dockerイメージを作りました。作ったDockerイメージは以下に公開しました。
https://hub.docker.com/r/seguropus/fbx-sdk-python-nodejs# サンプルコード
サンプルコードを以下に置きます。
https://github.com/segurvita/docker-fbx-sdk-python-nodejs# サンプルコードの使い方
“`bash
# Dockerイメージをビルド
docker-compose build# Dockerコンテナを起動
docker-compose up
“`これで、以下のような表示が出れば成功です。
“`
fbx-sdk-python-nodejs | # FBX SDK can read the following formats.
fbx-sdk-python-nodejs
[Node.js]モジュール定義について整理(exports-require / export-import)
## はじめに
あるファイルに定義した関数等を別のファイルで使いたいときにどうするか。Node.jsでは二つのやり方がある。
1. exportsで公開してrequireで読み込む(CommonJS)
2. exportで公開してimportで読み込む(ES2015)**常に使えるのは1の方法。Babelを使うなら2の方法でも可能。**
どちらを選んでもメリット・デメリットがあるわけではない(と思う)ので、お好きなほうで。個人的には、常に使える1の方法がいいような気がしている。
## 使用例
### exportsで公開してrequireで読み込む(CommonJS)
#### 一つの関数だけをエクスポート
“`javascript:module.js
// 関数を定義
const f = () => {
console.log(‘Hello!’)
}// 関数を公開
module.exports = f
“`“`javascript:client.js
const f = require(‘./module’)
f() // Hello!
`
[JavaScript][Node.js]メモ:アロー関数の文法
アロー関数(ES2015)の書き方。
“`javascript
f = () => console.log(‘Hello!’)
f() // Hello!
“`“`javascript:評価した値を返す
// 式(Expressions)の評価結果が戻り値になる
sum = (a, b) => a + b
r = sum(1, 2)
console.log(r) // 3
“`“`javascript:returnで値を返す
// {}で文(Statements)を作り、returnで値を返す
sum = (a, b) => {
return a + b
}
r = sum(1, 2)
console.log(r) // 3
“`“`javascript:引数のカッコを省略
// 引数が一つの時のみカッコを省略可能(0個もしくは2つ以上のときは省略不可)
say = word => console.log(word + ‘!’)
say(‘Yeah’) // Yeah!
“`“`javascript:即時関数
(() => console
Typescript Node.js メソッドの結果をキャッシュする
## 背景
APIの結果を指定した時間キャッシュさせたかったので、シンプルにキャッシュできるクラスを自前で実装する。
## 使用ライブラリ
* ioredis
* zlib## 実装
“` typescript
import ioredis from ‘ioredis’
import zlib from ‘zlib’class Client {
private redis: ioredis.Redis = new ioredis(‘redis://exammple:6379’)async fetch
(key: string, func: () => Promise , expire): Promise {
const cached = await this.redis.get(key)
// キャッシュがあれば、解凍して返却
if (cached) {
const cacheString = await new Promise((resolve, reject) =>
zli
Node.jsとDynamoDBで日時データの処理
#DynamoDBに日時データを持たせる2つの方法
1. データ型を`String`にして`2016-02-15`や`2015-12-21T17:42:34Z`のように文字列で持たせる。
2. データ型を`Number`にして`1579740176030`のように数値で持たせる。2.項のNumber型の実用例としては、エポック時間 (1970 年 1 月 1 日の 00:00:00 UTC 以降の秒数) を利用することができる。([UNIXTIMEの詳細](https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93))
#Node.jsでエポック時間を扱う
##現在の日時をDateオブジェクトで取得する
“`javascript
const date = new Date();
console.log(date); // 2020-01-23T01:09:41.444Z
console.log(typeof date); // ‘object’
“`##現在の日時をエポック時間で取得する
“`javascript
Node.js、Web Speech APIを使って音声認識を出力
#概要
WebSpeechAPIを使用して聞き取った音声の文字おこしをブラウザ上に表示させます。#作成方法
1.WebSpeechAPIを含むhtmlフォルダの作成新規フォルダを作成し、その中にindex.htmlを作成。
“`html:index.html
音声認識サンプル
音声認識サンプル
“`
音声認識をするための処理をscriptタグ内に書いていきます。“`html:index.html