- 1. google-home-notifierを使ってGoogleHomeに喋らせる
- 2. 初めてのAuth0ハンズオン
- 3. WebSocket についてまとめてみる
- 4. nodebrewコマンドのメモ
- 5. 【自分用】Node.jsアプリの設計の手順
- 6. nvmでdefaultバージョンを設定してもsystemのnodeが使用されてしまう
- 7. とりあえずnode.jsでES6記法(importなど)を使ってみたい時
- 8. ESLint v6.7.0
- 9. 喉頭がんの治療プロトコルをNode.jsでVueに表示しHerokuにデプロイ
- 10. Greengrass(v1.9.4)上でNode.js(v8.10)のLambdaのデプロイができない問題の解決法
- 11. sequelizeパッケージを初心者が使ってみる。
- 12. Mocha, Chaiを使ったテストの表記パターン
- 13. puppeteerを用いた要素の取得(page.$())
- 14. WSLのUbuntu環境でyoutube音楽をWeb操作する(おまけでradikoとサイマルラジオ)
- 15. Node.jsで簡易的なHTTPサーバーを起動 / sleepと組み合わせ
- 16. OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた(2)
- 17. Puppeteerで作ったスクリプトを実行可能ファイル化する
- 18. IBM Cloud FunctionsでAPIを作成する
- 19. Create React Appで作成したReactアプリをGoogle App Engineにデプロイする際の設定
- 20. シンプルなサーバーをDocker/Node.jsで構築してみた
google-home-notifierを使ってGoogleHomeに喋らせる
※こちらの記事は株式会社ギフトパッド「システム開発部技術委員会」の11月発表内容です
GoogleHomeは基本的にこちらから「OK!Google」と話しかけることをトリガーに何かしらの処理を行ってくれますが、こちらからの指示がなければただの置物です。
今回は「google-home-notifier」というnpmパッケージを使って、Slackで投稿した内容をGoogleHomeが発言してくれるようにします。#### google-home-notifier
https://github.com/noelportugal/google-home-notifier#### インストール
“`
npm install google-home-notifier
“`#### 実装
「google-home-notifier」READMEのサンプルを参考に、通知用のjsを作成
とりあえず喋る言葉を固定にする“` js
const googlehome = require(‘google-home-notifier’);
const language = ‘ja’;g
初めてのAuth0ハンズオン
# はじめに
この記事は、初めてAuth0を触る方がAuth0を利用した認証・認可の基本的な実装方法を短時間でご習得頂くことを目的とした簡易チュートリアルです。# 事前準備
事前に下記をご準備お願いします。– MacまたはWindows PC
– Chrome
– GitHubのアカウント、Git CLI
– Node.js, Node Package Manager
– SMSが使える携帯電話
– 通信制限がかかっていないインターネット環境# ハンズオン
## Auth0無料アカウントの取得〜テナントの作成
Chromeで`https://auth0.com`にアクセスして画面右上の”SIGN UP”を押します。任意のEmailアドレスでアカウントを作成します。アカウントが作成されると開発テナントが作成され、このアカウントがテナントの管理者となります。右上の顔写真の右下矢印をクリックして”Create tenant”を選択します。
# WebSocket とは?
Web 上でクライアント(Web ブラウザ)・サーバー間を`常時接続にしておいて、双方向通信を低コストで`実現するための技術規格。プロトコル。
# WebSocket の何がありがたいのか?
近年 SNS アプリなどではインタラクティブで `リアルタイム` なやりとりが求められるようになってきました。
例えば、チャットアプリでは、複数のユーザーが同じページを見ているような状況で、誰かの発言が他のユーザーのページにも`ページのリロードなしでリアルタイムに更新`されるようにしたい、ということがあると思います。
この `リアルタイムに更新` という機能を実現するためには、誰かが発言したということを `サーバーからクライアントに伝える必要があります。` このような機能を WebSocket は実現します。`クライアントからのリクエストがなくても、常時接続しているのでサーバーからクライアントに好きなタイミングで通信ができる` ということを実現できるところが WebSocket の魅力です。
# HTTP ではダメなの?
Web サイトを閲覧するする
nodebrewコマンドのメモ
# nodebrewめも
「なにインストールしたんやったっけ?」
「切替ってどうやるんやったっけ?」
勉強のときこういうこと多いので備忘録用のめもです。
なのでインストールは終わってる前提です。ご了承ください。。。### インストールできるバージョンを確認したい
“`
$ nodebrew ls-remote
“`### インストールしたい
* バージョンを指定する方法
* エイリアスで指定する方法があるようです。
#### バージョンを指定する方法
“`
$ nodebrew install [version] # 例えば [version] -> v12.0.0
“`#### エイリアスで指定する方法
安定版が欲しい場合“`
$ nodebrew install stable
“`最新版が欲しい場合
“`
$ nodebrew install latest
“`※安定版と最新版の違い
安定版: 安全。
最新版: 新しい機能が盛り込まれている。バグが残ってることもある。
のような感じ### バージョンを指定してNodeを使いたい
`
【自分用】Node.jsアプリの設計の手順
Twitterのようなアプリを設計する際
###①要件定義
<機能要件>
投稿を作る。
投稿を編集する。
投稿を削除する。
投稿をお気に入りとする。
投稿に対してコメントをする。などの基本的な機能を定義することを言います。
<非機能要件>
機能に付随する要件やセキュリティ要件などを定義する。
###②用語定義
上記の要件定義であがった用語を定義する。|用語 |英語表記 |意味 |
|:——–:|:———-:|:———|
|ユーザー | user | 投稿の利用者 |
|投稿 | tweet | 投稿をすること |
|お気に入り | favorite | 投稿をお気に入りに登録すること |
|コメント| comment |投稿に対してコメントをすること|用語の表す対象の意味付けをしっかりすることで、思わぬ実装ミスを防ぐことができます。
###③データモデリング
ER図などを使い用語の関係性などを定義する。
用語設計をすることによって、要件に漏れがない
nvmでdefaultバージョンを設定してもsystemのnodeが使用されてしまう
nvmでnodeのバージョン管理をしたいのだが、`nvm alias default v*.*.*`でデフォルトのバージョンを設定しても、新しいターミナルを開くとsystemのnode(brewでインストールしたnode)が使用されてしまう問題が起こった。
`nvm ls`を実行するとdefaultではなく、systemを指してしまうのだ。“`
$ nvm ls
v12.13.1
-> system
default -> lts/* (-> v12.13.1)
node -> stable (-> v12.13.1) (default)
stable -> 12.13 (-> v12.13.1) (default)
“`## 実行環境
macOS 10.14.6
nvm 0.35.1(node v12.13.1をインストール済み)
brewでインストールしたnode v13.1.0## 原因
もともと、yarnをbrewでインストールした時にnodeが一緒にインストールされてしまい、それがターミナルを開くとnvmでインストールしたnodeより優
とりあえずnode.jsでES6記法(importなど)を使ってみたい時
## 概要
とりあえずnode.jsを勉強してみようと思いコードを書き始めました。
その中で“`import“`を使おうと思ったのですがエラーとなってしまいました。babelなどを使わないといけないのかと思い、いろいろ調べていたのですが実際には簡単にできます。
試しにnode.jsを書いてみたいという場合に便利です。## どうやるのか
### 方法1
1. jsファイルの拡張子を、`.js`から`.mjs`に変更
2. `–experimental-modules`オプションを付けて実行する“`
node –experimental-modules index.mjs
“`これだけでES6記法でnode.jsで書いたjsファイルを実行することができます。
https://nodejs.org/api/cli.html#cli_experimental_modules
### 方法2
1. `esm`というモジュールをインストールします“`
yarn add esm
“`2. 次のように実行します
“`
node -r esm index.
ESLint v6.7.0
前 [v6.6.0](https://qiita.com/mysticatea/items/0a77713cff42d84d85c7) | 次 (2019/12/21 JST)
ESLint v6.7.0 has been released:https://t.co/GB8fHji3dq
— ESLint (@geteslint) November 22, 2019
ESLint `6.7.0` がリリー
喉頭がんの治療プロトコルをNode.jsでVueに表示しHerokuにデプロイ
##概要
プログラムの勉強を始めて4か月ほどの開業医です。病気のおすすめの診断法や、治療法などを記載した診療ガイドランというものがあります。その中に治療の進め方(治療計画)を示す、**治療プロトコル**というものがあります。病気の程度や治療の効果によって、治療の進め方が枝分かれしていくものなので、ifとelseさえ知っていればプログラム初心者でも治療プロトコルが簡単に作成できます。
昔私が書いた喉頭がんの診療プロトコルの医学書の内容を基に勉強したばかりのVueを少し使ってNode.jsでプログラミングしHerokuにデプロイしました。
##実装
質問に答えていくと喉頭がんの治療の進め方が分かるWEBアプリ。##動作
喉頭癌治療プロトコル pic.twitter.com/Nonj4qkvdJ
Greengrass(v1.9.4)上でNode.js(v8.10)のLambdaのデプロイができない問題の解決法
※追記
Greengrass Nodejs SDKのGitHubに書いてますね。。
https://github.com/aws/aws-greengrass-core-sdk-js> Rename the file to nodejs8.10
> Make sure the file is not a symlink.シンボリックリンクもだめらしいです。
—
GreengrassにNode.js(v8.10)のLambdaをデプロイすると、エラーになります。
“`
Deployment xxxxx of type NewDeployment for group xxxxx failed error: worker with xxxxx failed to initialize
“`ログを確認すると、`nodejs8.10`というバイナリがないよと言っているようです。
“`console:/greengrass/ggc/var/log/system/runtime.log
[ERROR]-runtime execution error: unable to
sequelizeパッケージを初心者が使ってみる。
###sequelizeとは
Node.jsにはデータベースを利用するためのパッケージがたくさん存在します。
しかし、データベースを扱うにはSQLというデータベースを操作する言語が必要になります。
sequelizeというパッケージを使えば、SQLを知らなくても、Node.jsでデータベースを利用することができます。#####さらに詳しく
sequlizeは公式によるとORM(Object-relational mapping, オブジェクト関係マッピング)と呼ばれるものらしいです。
以下は引用です。>オブジェクト指向の概念とリレーショナルデータベースの概念を橋渡しする役割がORMです。オブジェクト指向とリレーショナルデータベースの相性はそれぞれの概念が異なるため、相性が良くありません。なぜなら、オブジェクト指向では、データをオブジェクトとして扱うのですが、リレーショナルデータベースではデータを2次元の表として扱うためギャップが生じてしまいます。ORMを利用することによって、オブジェクトとデータベース問い合わせの相互変換を行います。
**引用:[ORMとは?](https:/
Mocha, Chaiを使ったテストの表記パターン
# TypeScriptでMocha, Chaiを使ったテスト駆動開発
## インストール
“`bash:TDDをサポートしてくれるパッケージのインストール。
$ npm install chai mocha ts-node @types/chai @types/mocha –save-dev
“`
参考: [Testing TypeScript with Mocha and Chai](https://42coders.com/testing-typescript-with-mocha-and-chai/)しかし、私の場合なぜかTypeScriptをグローバルインストールしているにも関わらず、テスト実行時に「typescriptモジュールが見つからない」とエラーが出てしまうので、ローカルに開発インストールを行いました。よってコマンドは以下になります。
“`bash:テスト実行時のエラー例
✖ ERROR: Cannot find module ‘typescript’# typescriptが見つからない、とエラーが出る場合のインストール。
$ npm insta
puppeteerを用いた要素の取得(page.$())
nokogiriの場合はとりあえず取ってくるため、取ること自体に難しさは無いが、puppeteerの場合はメインはサイト上の処理を自動化するのが目的であるため、データを取り出す場合は取り出す処理を書く必要がある。
とりあえずこんな感じでやればできる
“`js
const selector = ‘ul > li > a’;
const elementHandle = await page.$(selector);
const value = await (await elementHandle.getProperty(‘textContent’)).jsonValue();
“`
# `page.$(selector)` とは
puppeteerのgithub(pageselectorの説明部分)
https://github.com/GoogleChrome/puppeteer/blob/v2.0.0/docs/api.md#pageselectorelementHandle.$(selector)
– `selector` \A selector
WSLのUbuntu環境でyoutube音楽をWeb操作する(おまけでradikoとサイマルラジオ)
#はじめに
●youtube音楽をWEBで操作し、PCスピーカで再生できるようにする。
(Googlehomeで声で操作するのWeb操作版です)
【操作例】WEBから「クリスマスイブ」と入力する
![WEB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222582/25dc5da5-6b02-b62c-0a1f-81b6b5894f25.png)#環境
●Windows10 HOMEのPCにWSLのubuntuをインストールする。
●ubuntuでapache2,npm,node.js,youtube-dl,mplayer,mpvをインストールする
●WSLのubuntuでpulseaudioでPCのスピーカを使うようにする
●Windows側でpulseaudioサーバのインストールが必要です
https://www.cendio.com/thinlinc/download の 「Client Bundle」のリンクからダウンロードできます
●radikoを再生するには、その環境構築(radi
Node.jsで簡易的なHTTPサーバーを起動 / sleepと組み合わせ
Node.jsのバージョンは`v12.13.1`です。
“`js:server.js
const http = require(‘http’)
server = http.createServer((req, res) => {
res.writeHead(200, {‘Content-Type’ : ‘text/plain’})
res.end(‘Hello World’)
})
server.listen(8080)
“`起動。
“`bash
node server.js
“`—
sleepと組み合わせる。(デバッグ用)
“`js
const http = require(‘http’)SLEEP_MSEC = 3000
server = http.createServer((req, res) => {
setTimeout(() => {
res.writeHead(200, { ‘Content-Type’: ‘text/plain’ })
res.end(‘Hello World’)
OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた(2)
# この投稿の前提
この投稿はQiitaの別投稿「[OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた。](https://qiita.com/daihiraoka/items/23cfaed7662d36ccc7ab) 」で作成した、ビジネスロジック用のOpen Libertyで実行されているJava EEアプリケーションに加えて、今回で患者向けUIのNode.jsアプリケーションをMiniShiftに作成して、結合するのが今回の範囲になります。
![minishift-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209170/75943dc0-f532-8040-984c-cf60ea4d0089.png)今回作成する患者向けUIのNode.jsアプリケーションはモックモードで動作するので、この記事だけで試せますが、ユースケースは別記事に書いてあるので、[OpenShiftによるJava EEアプリケーションのモダナイゼーションをやってみた](https
Puppeteerで作ったスクリプトを実行可能ファイル化する
# TL; DR
– Node.jsを実行可能ファイルに変換するのに[Pkg](https://github.com/zeit/pkg)を使用した。
– `puppeteer.launch()`のオプションに`executablePath: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome`を指定する。要は普段使っているであろうGoogle Chromeのパスに変更してあげる必要がある。
– 共有先のPCによっては実行権限が無かったりするので、`chmod`で付与してあげる。## 課題
– ブラウザ上で行っていた管理者限定の単純作業を自動化したい。## やったこと
– ブラウザ操作はPuppetterでやる。ログイン情報とかはscriptの実行時に尋ねるようにする。今回は[enquirer](https://github.com/enquirer/enquirer)を使った。
– 自分の権限的に見れない画面だったので、保存したHTMLファイルを貰って、それをローカルサーバーで開き、Puppetterの自
IBM Cloud FunctionsでAPIを作成する
# はじめに
IBM Cloud Functions上に作成したActionを、APIとして呼び出す方法にはいくつかあります。
WEBアクションを有効にするのが一番お手軽ですが、指定出来ることが少なく、
APIゲートウェイを使用するの若干手間がかかりますが、より複雑な指定が可能になります。以下では、それぞれの方法での作り方について、覚書としてまとめます。
# サンプルのアクション
APIとして呼び出して実行するサンプルのアクションは次の通りです。
パラーメータとして渡された`name`に対して、`Hello name!`を返します。
`name`の指定がなかった場合は、`Hello Someone!`を返します。“`javascript
function main(params) {
let name = (params.name) ? params.name : ‘Someone’;
return {message : ‘hello ‘+name+’!’ };
}
“`# 方法1.Webアクション
一番簡単な方法は、Webアクションを有効にすることです。
Create React Appで作成したReactアプリをGoogle App Engineにデプロイする際の設定
Create React Appで作成したReactアプリをGAEにデプロイする際に、少し設定ファイルの工夫が必要だったので共有します。
## ざっくりした手順
1. `yarn run build`や`npm run build`でリリースビルドを作成
2. `app.yaml`でデプロイ時の設定を指定
3. `gcloud app deploy`でGAEにデプロイ通常これらはCI上で行われるべきものですが、手元の開発環境でも実行できます。
(今回、手順3.の詳細は説明しません)## `yarn build`でリリースビルドを作成
Create React Appで作成したReactアプリでは、`build`コマンドを実行することで、簡単にリリースビルドを作成することができます。
リリースビルドの成果物はだいたい以下のような構造になっています。“`
build
├ static
└ js
├ ~~~~.js
├ …
└ ~~~~.js
├ asset-manifest.json
├ favicon.ico
├ manifest.js
シンプルなサーバーをDocker/Node.jsで構築してみた
# はじめに
業務でログ監視システムの構築を行い、その際にログを出力するだけのシンプルなサーバーをDocker/Node.jsで作りました。
スタブ用途等ですぐに建てれる、サーバーの雛形としてお使い頂ければと思い、記事投稿に至りました。# 前提
`Docker` / `docker-compose`を用いているので、インストールをお願いします。
インストール手順は、他の方がいっぱい書いておりますのでそちらをご参考に。# リポジトリ
下記のリポジトリになります。
[simple_server](https://github.com/inagacky/simple_server)# 使い方
`docker-compose build` や `docker-compose up` 等々は、
当リポジトリでは シェルスクリプトでラップしています。## ビルド手順
下記のシェルを実行し、イメージのビルドを行います。“`
/bin/sh build.sh
“`上記のシェルを実行すると、イメージの構築が出来ます。
“`
% docker images
REPOSITO