Node.js関連のことを調べてみた2020年07月29日

Node.js関連のことを調べてみた2020年07月29日
目次

Node.jsのDockerイメージのマルチコア対応をがんばってみた

いろいろ頑張ってみたものの、Docker本家とかその他の情報によると、Dockerfile内部でマルチコア対応は頑張らない方が良いらしい。せっかくがんばったので供養のためにまとめておきます。 * [DockerでNode.jsアプリをイイ感じに保つ4つの方法 #docker](https://www.creationline.com/lab/29422) * [nodejs.org: Dockerizing a Node.js web app](https://nodejs.org/en/docs/guides/nodejs-docker-webapp/) * [Docker and Node.js Best Practices](https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#cmd) # マルチコア対応したい! Node.jsはシングルコアで動くのでマルチコア対応したいですよね?コア数が生かせないのはかっこ悪いですよね?サーバーにそのままデプロイする場合はpm2とかのプロセスマネー
元記事を表示

【はじめてのIoT】サイリウムを自動的に光らせてみた【ラブライブ】

#はじめに  「推しが複数いるとき、どの色にすればいいか悩む・・・」  「サイリウムで盛り上げたいけど、もっとライブに集中したい」  「夢中になりすぎて、サイリウムの色を変えるのを忘れてしまう」 ライブに行った時、このように思ったことはありませんか? __私はあります。__ 私はラブライバーなのですが、箱推し(みんな好き)です。 なので全色光らせたいけど、持つのは2本が限界だし・・・ 「次はオレンジだ!」とか考えてるとライブに集中できなかったり・・・ ということで、今回は__自動的に光るサイリウム__を作ってみました! #理想イメージ ライブと言っても、今はコロナの影響もあって、無観客ライブが増えてきました。 今回もYoutubeのライブをイメージして、曲が始まるとサイリウムが自動的に光ることをゴールにします! [![Image from Gyazo](https://i.gyazo.com/d5111f46d64d7f1ff2613dfa29822187.png)](https://gyazo.com/d5111f46d64d7f1ff2613dfa29822187) Y
元記事を表示

好きなキー好きなBPMでパプれるスピーカーをline botとobnizで作ってみた

#はじめに 好きな曲とか聞いていて「__あーこれ音域低めだし歌えるんじゃね?ヨユウッショ__」って思ってカラオケ行ったら全然音域足らなかったみたいな経験ありませんか? 僕はかの有名な__パプリカ__で実際ありました、裏切られた気分になりますよね。 原曲キーで歌わないにしても、どれぐらいのキーが程よいのか分かりませんよね。 そこで、自宅でも自由にパプってあらかじめ自分にあったキーを探しておけるスピーカーをobnizとline botで作ってみました。 コードはGistに載せてあるので、是非コピーしてハンズオンして__エビバディパプろうぜ!__ (Gist: https://gist.github.com/canonno/2209c7d68870b99d256cb4bac110b37d) #完成デモ ##メロディの送信 obnizの圧電スピーカは周波数を引数として関数を実行する必要がありますメンドクサイィィィ ということで、lineから「ドレミ」のような身近な表記でobnizに音を送信できるようにしました。 ピアノの白鍵が「ドレミ」、オクターブは数字を付けて「ド1レ1ミ1」、
元記事を表示

【obniz×LINE Messaging API】音と光を使い侵入防止システムを製作する

#目的 私の実家では、夏場に玄関を開放し風通しを良くしていると、野良猫が侵入し、食べ物が被害にあいます、そこで今回はobnizで侵入防止システムを製作したいと思います。(効果は保証できません) #できたもの 距離センサーの50㎝以内に入り5秒経過したら、LEDとスピーカーで警告し、システムが作動したことをLINE Messaging APIを使用してプッシュ通知します。映像ではわかりませんが、スピーカーから11khzの音を鳴らしてます。 [![Image from Gyazo](https://i.gyazo.com/5ac30db12fc0d8c7a56c5524c93deb7a.gif)](https://gyazo.com/5ac30db12fc0d8c7a56c5524c93deb7a) #構成 ##全体像 今回製作したシステムの全体像です。 [![Image from Gyazo](https://i.gyazo.com/f5fd16ce04cfc917815c8e8e2538b31d.png)](https://gyazo.com/f5fd16ce04cfc91781
元記事を表示

(Express)HTMLからの処理をNode.jsで同期/非同期処理した時に教わった注意点

連投すみません。お引越し中です…。 結論から言うと、 Expressのミドルウェアには通常のコールバック関数を与えること!

らしいです…

これだけでは理解できなかったのでまとめます。

#ミドルウェアとは

コンピューターは「ハードウェア」「OS」「ミドルウェア」「アプリケーション」の4要素で構成されています。

ミドルウェアは「OS」と「アプリケーション」の間にあるような、「OS」でも「ミドルウェア」でもないもの。

機械とアプリの橋渡しをするようなものは全て「ミドルウェア」のようです…。

例えば、windows10が「OS」ブラウザが「アプリケーション」、
「Webサーバ」(ブラウザからのリクエストに応じてWebページを送信する)が「ミドルウェア」です。

“` “`javascript= selectIcon (e) { // 選択した画像ファイルを取得 const file = e.target.files[0] // refの中身が保存する場所のpathになる const storageRef = firebase.storage().ref(‘images/sample.jpg’) storageRef.put(file) } “` ### firebaseのstorageからデータを取得して画面上に表示
元記事を表示

SwaggerでLambdaのデバッグ環境を作る(7):AWS S3トリガをデバッグする

久しぶりの、SwaggerでLambdaのデバッグ環境を作る の拡張です。  第一回の投稿はこちらから:[SwaggerでLambdaのデバッグ環境を作る(1)](https://qiita.com/poruruba/items/e3a46787c79517a815f9) AWS S3にファイルがアップロードされたときにLambdaを起動するスクリプトを書こうと思っても、Lambda上でのデバッグは大変なので、ローカルでデバッグ(実行中のブレイクを入れたり、変数を参照したり)できるようにします。 S3は、本物ではなく、S3互換のMinIOを使います。 今回のローカルデバッグ環境は以下のGitHubに反映済みです。 poruruba/swagger_template  https://github.com/poruruba/swagger_template #MinIOのセットアップ ほぼこちらに書いてある通りに進めます。 MinIO Quickstart Guide  https://docs.min.io/ 今回は、Distributed MinIO Quicksta
元記事を表示

Node.jsとMySQLをDockerComposeで組んでみた

初めてのDockerネットワーク これから先僕が環境構築する際、思い出せるようにするための、です。 ##事前準備 まずDockerHubから二つのイメージをpullするところから それぞれ12系と5.7系を使うのでバージョン指定 “`$ docker run -it node:12“` “`$ docker run -it mysql:5.7“` runはpull,create,startを一気に行ってくれる control+p+qでコンテナから出る その後“`$ docker ps -a“`で一度止めて、 コンテナが作成されているかを確認する(Upなら一度stopしてExitedにしておく) これからは“`$docker start [コンテナID]“`で起動できる “`$ docker rename [古いコンテナ名] [新しいコンテナ名]“` しておいた方がわかりやすい 正しいバージョンのものが入っているかの確認は起動後 “`$ docker exec -it [コンテナ名] bash“` attachと違うのはコンテナを起動したまま抜けるこ
元記事を表示

Firebaseのfunctionsでadmin.storage().bucketを使って画像をアップロードした時に困ったこと集

## firebase client sdkと違う まずはじめに、firebase admin sdkでは、 firebaseのフロント側で使うSDKの様にcloud storageをそのまま対応してないみたいです。 そのため、下記のようなコードは掛けません。 “`ts import firebase from ‘firebase/app’ const storage = firebase.storage() const uploadImage = async ( imageData: Blob, uploadPath: string ) => { const refStorage = storage.ref(uploadPath) await refStorage.put(imageData) await refStorage.getDownloadURL() .then((downloadURL) => { console.log(‘cloud storageに登録した画像URL’, downloadURL) }) } `
元記事を表示

npm versionでアルファ版やRC版を作成する

Node.jsのプロジェクトでは`npm version`コマンドでバージョンをインクリメントできます。package.json, package-lock.jsonの書き換えと、Gitタグの追加が自動化されます。よく使われる`major`, `minor`, `patch`の他に、`pre*`というプレリリース用のオプションが実装されています。 以下の動作確認はnpm v6.14.5で行いました。 ## 次期バージョンのアルファ版作成 “`sh # 1.2.3 => 2.0.0-alpha.0 npm version premajor –preid alpha “` `premajor`を指定すると、次期メジャーバージョンのプレリリース版となります。このとき`–preid`オプションを指定すると任意の接頭辞(この場合は`alpha`)が付加されます。接頭辞を指定しなかった場合は`2.0.0-0`となりました。 ## アルファ版の中でのインクリメント “`sh # 2.0.0-alpha.0 => 2.0.0-alpha.1 npm version prereleas
元記事を表示

Node.js+Express+MySQLでWebAPIを作成してみる①

# はじめに NodeでReactを用いてフロントの作業をしていて、せっかくならバックエンドもNodeつかってJavaScriptで作ってみようということでWebApiサーバーを作ってみました。 # 実行環境 – CentOS7 – Node.js 8.17.0 # Expressの動作確認 `npm install express`でインストール 以下のサンプルソースを任意のフォルダに保存 “` index.js var exp = require(“express”); var app = exp(); app.get(“/”,function(req,res){ res.send(“Hello,World”); }) app.listen(3000,function(){ console.log(“成功”) }) “` 保存したフォルダに移動し、`node index.js`で実行した後`http://localhost:3000/`にアクセス。 ![image.png](https://qiita-image-store.s3.ap-north
元記事を表示

Node.js: CouchDB のデータを削除 (Delete)

“`js:couch_delete.js #! /usr/bin/node // ————————————————————— // couch_delete.js // // Jul/27/2020 // ————————————————————— var Client = require(‘node-rest-client’).Client // ————————————————————— console.error(“*** 開始 ***”) const key_in=process.argv[2] console.log (key_in) const url = “http://localhost:5984/nagano/” + key_in var client = new Client() client.get
元記事を表示

Node.js: CouchDB のデータを更新 (Update)

“`js:couch_update.js #! /usr/bin/node // ————————————————————— // couch_update.js // // Jul/27/2020 // ————————————————————— var Client = require(‘node-rest-client’).Client // ————————————————————— function get_current_date_proc() { const today = new Date () var ddx = (1900 + today.getYear ()) + “-” + (today.getMonth () +1) ddx += “-” + today.getDate () return d
元記事を表示

Node.js: CouchDB のデータを読む (Read)

“`js:couch_read.js #! /usr/bin/node // ————————————————————— // couch_read.js // // Jul/27/2020 // ————————————————————— var Client = require(‘node-rest-client’).Client // ————————————————————— console.error(“*** 開始 ***”) var client = new Client() const url = “http://localhost:5984/nagano/_all_docs?include_docs=true” client.get(url, function(data, response) { d
元記事を表示

Node.js: CouchDB のデータを作成 (Create)

“`js:couch_create.js #! /usr/bin/node // ————————————————————— // couch_create.js // // Jul/27/2020 // // ————————————————————— var Client = require(‘node-rest-client’).Client // ————————————————————— console.error (“*** 開始 ***”) // const url_collection = ‘http://localhost:5984/nagano’ var client = new Client() client.delete(url_collection, function(data, response)
元記事を表示

やらかしJS先生がみたMapをObject的に扱ってハマった話⭕❌

#Overview 過去にバグになってしまったものを忘れないよう書き留めておくシリーズです。 今回の題材はMapです。以下は私が最初にさらりと書いたコードです。 これを基に❌な部分を修正していきます。 “`javascript const map = new Map(); if (!map[“1”]) { map[“1”] = “⭕”; } for(const {key, value} of map) { console.log(`key:${key}, value:${value}`); } “` #Target reader – この結果がわからない方 #Prerequisite – JavaScriptを一通り理解している – 今回はChromeで実行したが、Node.js等、環境によって出力結果が異なることがあることに注意。 #Body ## 少しだけ言い訳をしたい:sweat_smile: いつもはJSONでファイル出力することが多いため、どうしてもそのまま出力できるObjectを利用することが多い。 そんな折、ファイル出力ないものがあっ
元記事を表示

データ収集めんどくさいからプログラム書いちゃお

# はじめに 私はゼミで統計経済を研究しており、日々エクセルやスプレッドシートとにらめっこしています。 その中で複雑な絞り込みや検索が既存機能だけではできないことがあったので、 この際プログラム書いたほうが「楽だし早いんじゃないかなあ」と思い、Node.jsを用いてやってみました。 また当初はGASでやろうかと考えていたのですが、今後データ収集でスクレイピングをするためにクローラーなどを使用することを考えてNode.jsで統一することにしました。 (VBAを0から触る時間がなかったので今回はパスです、、、) # この記事でわかること Node.jsでエクセルファイルを扱う方法 # 今回すること 今回は特許データを使用して、その中から特定の企業の ①特許総出願数 ②特許共同出願数 ③特許単独出願数 をそれぞれ計算するというものです。 エクセルなどの既存機能では、特許総出願数をフィルターや検索を用いて割り出すことができるのですが、共同出願か単独出願かを見分けるには該当のセルと前後のセルの状態と見比べる必要があるのでプログラムを書く他なさそうでした(多分)。 以下の図のようになって
元記事を表示

クライアントアプリから Google Cloud Speech-to-Text を使ってみた(マイク編)

[前回の記事](https://qiita.com/masatomix/items/9b67e40ba3ba9f4eb660)のつづきです。前提の環境やソースコードなどはすべて前回の記事とおなじなので、そちらを先にご参照ください。 ## 今回のコンテンツ [入門ガイド](https://cloud.google.com/speech-to-text/docs/how-to?hl=ja)にある**[「ストリーミング入力の音声文字変換」](https://cloud.google.com/speech-to-text/docs/streaming-recognize?hl=ja)** をやってみましょう。 ## TL;DR – MacでもWindowsでもマイクによる音声認識が可能でした – ただ [SoX – Sound eXchange](https://sourceforge.net/projects/sox/) というライブラリをOSごとにインストールする方式なので、WEB開発むけという意味だとこの方式は採用しないかな、、。。 ## ライブラリのインストールなど環境設定
元記事を表示

OTHERカテゴリの最新記事