- 1. C#とNode.jsを連携する
- 2. Angular CLIインストール時のWARN解消
- 3. React + Express + Docker の環境構築
- 4. Azure Web PubSub と Node.js を組み合わせた軽いお試し
- 5. Sequelizeを使う際のurl設定について
- 6. ES2022のArray.prototype.atは今の所遅い (2021/10/16時点)
- 7. 【Node.js】Qiita デイリー LGTM 数ランキング【自動更新】
- 8. webpack入門(Node.jsの導入からjsファイルのバンドルまで)
- 9. GR-ROSE と Node.js のプログラムの間でシリアル通信(一方向)
- 10. これからWeb開発を始める人に知ってほしいGithubプロジェクト
- 11. Azure Web PubSub を試してみるための下調べ(JavaScript を利用する方向で)
- 12. Node.jsでディレクトリを再帰的に作成/削除するのにmkdirpやrimrafはもう必要ない
- 13. discord.js-v13でdiscordbot (スレッド周りの機能実装)
- 14. GitHub Actionsを使ってGithub PagesにOpen APIのRedocドキュメントを出力したメモ
- 15. ESP32とIRリモートおよび手動制御を使用したAlexaホームオートメーション-IoTプロジェクト2021
- 16. Javascriptのコールバック関数について
- 17. [Node.js] コマンドライン引数の取得
- 18. コロナ禍前後で、クラウドファンディングへの関心は変わったのか?
- 19. Node.jsにおける同期/非同期処理に関して
- 20. 【Electron】MenuItemConstructorOptionsの型推論
C#とNode.jsを連携する
###C#とNode.jsを連携する
####EdgeJsを利用する
EdgeJsを利用しNode.jsからC#通信ができます。その逆もできます。.net4.6のみ。まだ.netCoreには未対応のようです。#####Node.js側
“`
const edge = require(‘edge-js’);const helloWorld = edge.func(‘cs’, function () {/*
async (input) => {
return “.NET Welcomes ” + input.ToString();
}
*/});helloWorld(‘Node.js’, function (error, result) {
if (error) throw error;
console.log(result);
});
“`
#####C#側
NodeJsからC#のメソッドを実行しデーターを渡します
Angular CLIインストール時のWARN解消## はじめに
Angular CLIインストール時にWARNが出たので調べてみました。
2021年10月時点
## 環境
“` shell
$ node -v
v14.18.1
$ npm -v
8.1.0
“`Node.js(安定最新版) + npm(最新版)
## Angular CLIのインストール
“` shell
$npm i @angular/cli
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: ‘@angular/cli@12.2.10’,
npm WARN EBADENGINE required: {
npm WARN EBADENGINE node: ‘^12.14.1 || >=14.0.0’,
npm WARN EBADENGINE npm: ‘^6.11.0 || ^7.5.6’,
npm WARN EBADENGINE yarn: ‘>= 1.13.0’
npm WARN EBADENGINE },
npm
React + Express + Docker の環境構築
Reactで作成した画面からExpressで作成したAPIを呼び、取得したデータを画面表示するところまでを構築していきます。
React/Expressはそれぞれ別のDockerコンテナで動作させます。# ディレクトリ
“`
app/
├── docker/
│ ├── docker-compose.yml
│ └── Dockerfile
├── backend/
└── frontend/
“`
`docker/` の2ファイルはホスト側で作成しますが、その他の `backend/` と `frontend/` 内のファイルは全てコンテナ側で作成していきます。# Docker
`Dockerfile` と `docker-compose.yml` を作成し、コンテナを起動します。## ファイル作成
React、Express で共通で使う Dockerfile を1つ作成します。“`:Dockerfile
FROM node:14
“`
今回はひとまずnodeが動けば良いので何も設定していません。次に docker-compose.ym
Azure Web PubSub と Node.js を組み合わせた軽いお試し
この記事は、以下の続きにあたる内容です。
●Azure Web PubSub を試してみるための下調べ(JavaScript を利用する方向で) – Qiita
https://qiita.com/youtoy/items/c1c9c2893e0e0fe29703記事執筆時点でプレビュー版の「[Azure Web PubSub](https://azure.microsoft.com/ja-jp/services/web-pubsub/)」を使ってみる話で、Node.js のプログラムと組み合わせてみたという内容になっています。
![Azure Web PubSub.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/9d397ce3-de6f-84d6-4d7d-b459927d1d48.jpeg)## サンプルプログラムを使ったお試し
[前の記事](https://qiita.com/youtoy/items/c1c9c2893e0e0fe29703)でも引用していた以下の記事の
Sequelizeを使う際のurl設定について
Node.jsのORマッパーを実現するライブラリである、sequelizeを使って、RDBMSに接続する際のurlの設定方式についてのメモ。
# 前提
– postgreSQLはDockerにてローカルに起動“`
docker run –name postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=sample_db -p 5432:5432 postgres:12
“`– Version
“`
“sequelize”: “^6.6.5”
“`# 確認結果
– OK
“`js
const url = process.env.DATABASE_URL || “postgres://postgres:postgres@localhost:5432/sample_db”;
“`– OK (port番号を省略)
“`js
const url = process.env.DATABASE_URL || “postgres://postgres:postgres@localhost/sampl
ES2022のArray.prototype.atは今の所遅い (2021/10/16時点)
# Array.prototype.atは何ができるの
Pythonのように, 負数を指定すると配列の後ろから取得できます. 特に最後尾の数個や, 文字列での末尾からの指定など, 待ち望まれていた機能です. (String.prototype.atもあります)
“`js
const arr = [1, 2, 3]
console.log(arr.at(-1)); // 3
“`## 速度
普通の添字で指定と速度を比べてみます.
バージョンは
“`text
> node -v
v16.9.0
“`ソース
“`js
const arr = […Array(1000*1000)].map((_, i) => i);
// for内の余分な計算は取っ払いたいので先に
const len = arr.length;
const len2 = len – 1;
const nlen = -len;// [] 昇順
{
const startTime = (new Date()).getTime();
for (let n = 0; n < 10
【Node.js】Qiita デイリー LGTM 数ランキング【自動更新】
# 他のタグ
[`AWS`](https://qiita.com/items/8c4aeec4fc98e4b1ba0e) [`Android`](https://qiita.com/items/9c6bf21a9880e242a0d6) [`Docker`](https://qiita.com/items/70aa655b580ed4f91756) [`Git`](https://qiita.com/items/36cfb2318aabe8b3f8df) [`Go`](https://qiita.com/items/16809f8444e0329bed8a) [`iOS`](https://qiita.com/items/da7fabcf41ed103528ae) [`Java`](https://qiita.com/items/9003b8beb47a46292028) [`JavaScript`](https://qiita.com/items/31e7365a838b890f7cc3) [`Linux`](https://qiita.com/items/7bcae94b268b
webpack入門(Node.jsの導入からjsファイルのバンドルまで)
# はじめに
業務でwebpackを使用する機会があるので、学習したことをまとめていきます。
今回は、Node.jsのインストール・jsファイルのバンドル~~・Loaderを使ってcssのバンドルを~~実際に行います。※一度にいろいろやると分からなくなるので、今回はjsファイルのバンドルまで行います。次回Loaderを用いてcssやscssファイルをバンドルする手順についてまとめます。
以前の学習まとめはこちら[package.jsonとpackage-lock.jsonのバージョン指定や必要性について](https://qiita.com/sasao3/items/b794c1e44715bb6f834f)
# 今回使用するツールなどのバージョン
– Node.js:12.16.3
– npm:6.14.4
– webpack: 5.58.1
– webpack-cli: 4.9.0# webpack導入の前に
図が多くわかりやすかったので、こちらの記事を見ておくとイメージが少しつくかと思います。
[webpack学習の基本のき](https://www.funde
GR-ROSE と Node.js のプログラムの間でシリアル通信(一方向)
表題の件を試した際のメモです。
GR-ROSE と Node.js のプログラムとの間で、一方向のシリアル通信を軽く試してみます。## GR-ROSE側
以下の公式のプログラムを動かしてみます。●GR-ROSE チュートリアル:IDE for GRでスケッチ | Renesas
https://www.renesas.com/jp/ja/products/gadget-renesas/boards/gr-rose/project-arduino-sketch-ide-gr開発には IDE for GR を使う形で、手順は上記のページ内のとおりです。
書き込みをする際、GR-ROSE のリセットボタンを押して USBドライブとして認識させてから行う、というのがあったりします。プログラムは以下で、サンプルほぼそのままです。
遅延の設定だけ、100ミリ秒から 1秒に変えています。“`c
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(P
これからWeb開発を始める人に知ってほしいGithubプロジェクト
## はじめに
この記事ではProgrammingを始める方や学生でこれからエンジニアを目指されている方々に私がよく紹介しているGithubのプロジェクトを紹介しています。どのプロジェクトも英語ですが、どのプロジェクトもきっと皆さんのキャリアにとって役に立つはずです。ぜひお役立ていただければと思います。## 1. Web Developer Roadmap
https://github.com/kamranahmedse/developer-roadmap
このプロジェクトではWeb Developerになるまでにどのような知識が必要なのかを体型的にまとめてくれています。
これはFrontendのRoadmapの例ですが、以下のようにTopicにつき質問がいくつかあるのでそれに答えられるようになっていけば必然とFrontend開発を学ぶことができます。![frontend.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407956/1d648d3b-77cd-3305-e211-a13a8a
Azure Web PubSub を試してみるための下調べ(JavaScript を利用する方向で)
この記事は、以下の「Azure Web PubSub」に関する記事です。
どうやら、WebSocket を通信に使って、パブリッシュ – サブスクライブ型のメッセージングができるものらしく、「MQTTっぽい感じなのかな?」と気になりました。●Azure Web PubSub – WebSocket Web パブリッシング | Microsoft Azure
https://azure.microsoft.com/ja-jp/services/web-pubsub/過去に書いた Qiita の記事でも、リアルタイム通信系で WebSocket・MQTT は何度も登場していて、リアルタイム通信周りの技術は非常に気になるところです。
この Azure Web PubSub は、記事執筆時点では以下の公式ページのサービス名の部分に書かれているように、「プレビュー」という位置付けのようです。
![Azure_Web_PubSub_–_WebSocket_Web_パブリッシング___Microsoft_Azure.jpg](https://qiita-image-store.s3
Node.jsでディレクトリを再帰的に作成/削除するのにmkdirpやrimrafはもう必要ない
Node.jsでディレクトリを再帰的に作成/削除するためのnpmパッケージとして[mkdirp](https://www.npmjs.com/package/mkdirp)や[rimraf](https://www.npmjs.com/package/rimraf)がありますが、現代のNode.js([v14.14.0](https://nodejs.org/dist/v14.14.0/docs/api/)以降)において、それらはもはや必要ありません。
## ディレクトリを再帰的に作成する方法
`mkdir -p`のようにディレクトリを再帰的に作成するには、[fs.mkdir](https://nodejs.org/api/fs.html#fs_fs_mkdir_path_options_callback)の`recursive`オプションを使います。
コールバックAPIを使う場合:
“`js
const fs = require(‘fs’)const dir = process.argv[2]
console.log(`try creating ${dir} direc
discord.js-v13でdiscordbot (スレッド周りの機能実装)
#はじめに
当記事は筆者の忘備録であり、完全なチュートリアルではないことをご理解ください。
スレッド周りのみを見たい方は[こちらを](#スレッド周りの実装)#開発環境
“`
Node.js – 16.11.0
discord.js – 13.2.0
“`##環境構築
[Node.js 公式サイト](https://nodejs.org/ja/)
[discord.js 公式Guide](https://discordjs.guide/#before-you-begin)まずは適当な場所に新規フォルダを作成し、そのフォルダ内で
“`
npm init -y
“`を実行、完了したら同フォルダ内で
“`
npm install discord.js
“`上記二つが完了すればひとまず開発環境は構築できました。
#botの招待
[discord developer portal](https://discord.com/developers/applications)
###その1ログイン後`New Application button`をクリッ
GitHub Actionsを使ってGithub PagesにOpen APIのRedocドキュメントを出力したメモ
# 概要
Github Pagesがorganizationでprivateに対応していたので
業務で使ってるOpen APIの定義をpushされた時に自動デプロイするようにしてみましたswagger-viewerとかで見るのがめんどかったので
## ソースコード
https://github.com/novr/redoc-sample
## 構成
“`bash
├── .github
│ └── workflows
│ └── gh-pages.yml
├── docs
│ └── index.html
├── package-lock.json
├── package.json
└── petstore.yaml : from https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/petstore.yaml
“`## workflows
“`yaml:gh-pages.yml
name: github pageson:
branch
push:
ESP32とIRリモートおよび手動制御を使用したAlexaホームオートメーション-IoTプロジェクト2021
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873014/3907bcc4-c0e8-8b64-5245-4638ea9e4f9d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1873014/9e35e6cd-7381-b87e-f9ae-b46ad6e9e839.png)
![im
Javascriptのコールバック関数について
Javascriptのコールバック関数に関して、アウトプットのため本記事を投稿します。
Javascriptにおけるコールバック関数とは「将来のある時点で実行される関数」のことを指します。
### 簡易的な例
下記に例を記載します。
“`js
function a(callback) {
callback();
}function b() {
console.log(“コールバック関数として呼び出されました”);
}a(b);
//実行結果
コールバック関数として呼び出されました
“`処理の流れを記載します。
① aという関数を宣言します。(仮引数の名称は何でも大丈夫です)
② bという関数を宣言します。
③ ②で宣言したbという関数を実引数として、①で宣言したaという関数を呼び出します。
④ aの処理が実行され、bという関数が実行されます。
⑤ bの処理が実行され、文字列が出力されます。関数aの仮引数には、実引数である関数bが入るので、callback() と b()は同じ命令に変換されます。
このように、コールバック関数では、引数に関数を渡し
[Node.js] コマンドライン引数の取得
# コマンドライン引数の取得
Node.jsプログラムからコマンドライン引数を取得するには、**process**オブジェクトの**process.argv**プロパティを参照する。**process**オブジェクトはnode.jsの実行環境のグローバル変数の1つであるため、モジュールを**require**で読み込む必要がない。また、**process.argv**は、文字列配列になっている。“`javascript:sample.js
for(let i = 0; i < process.argv.length; i++){ console.log('argv[' + i + '] = ' + process.argv[i]); } ``` 上記の「sample.js」に引数を指定して実行すると以下の結果となる。 ```javascript:実行結果 $ node sample.js red green blue argv[0] = C:\Program Files\nodejs\node.exe argv[1] = C:\work\workspace\sampl
コロナ禍前後で、クラウドファンディングへの関心は変わったのか?
# はじめに
はじめまして、JavaScript初心者です。
恥ずかしながらAPIについても数日前に初めて意味を知った素人。当然ながらQiitaAPIに触れたのも初めて。知識を武器にできるよう、楽しみながら学んで行きたいです。# 目的
どうせやるなら自分が好奇心を持てるものを。
思い浮かんだのは、最近よく耳にするクラウドファンディング(以下、CF)について。
数年前に小学校の同級生が、子供の頃からの夢を実現させるためCFを達成させ起業した話を聞き、とても夢があると感動した。2021年10月現在はコロナ禍真っ只中。私がCFで初めて支援したのも昨年コロナが蔓延し始めた頃だった。
ちなみに当時支援したのは、こちら。https://camp-fire.jp/projects/view/261212
プリントごっこを思い出す、昔懐かしい印刷が楽しめる印刷所。シルクスクリーン発注をして自分で手刷り印刷もできるので、いつか利用してみたいなぁと思っていたところ、経営難となり経営存続を賭けてCFが発起された。(結果は是非、リンク先からご確認を!)
同じようにコロナの影響でCFに救いの手を
Node.jsにおける同期/非同期処理に関して
Node.jsの同期/非同期処理に関してのアウトプットするために本記事を投稿します。
### マルチスレッド
スレッドとはCPU利用の単位です。
CPUとは、Central Processing Unit(中央演算処理装置)の略で、プログラムの命令を解釈して、コンピューター全体の動作を制御する制御装置や演算を行う演算装置などの機能を持つ装置です。
近年のCPUでは、1つのプロセッサ・パッケージ内に複数のプロセッサ・コアを搭載するマルチコアプロセッサを使用しており、それに応じて複数のスレッドを同時に処理できるようになっています。(マルチスレッド)マルチスレッドを利用するとサーバーは複数のリクエストを受け取った際に、スレッドを増やして対応します。
![SnapCrab_NoName_2021-10-14_15-44-50_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1229062/a6d3f6df-c94a-24c7-ecaa-c62766b57455.png)
しかし、リクエスト
【Electron】MenuItemConstructorOptionsの型推論
初書:2021/10/14
mac : 11.6
electron : 15.1.2
typescript : 4.4.3# 前置き
electronとtypescriptを使ってアプリケーションを開発中のこと。
メニューバーを作成しようと試みたときに起きた出来事。「型推論が通らない」
ので、それの修正メモ。
# 該当コード
該当ページ[Menu | Electron](https://www.electronjs.org/ja/docs/latest/api/menu)
Electronの日本語公式ページにある「サンプル」コードで問題は起きた。
ちなみにそのコードを、Typescript用に若干書き換えたものがこちら。“`ts
import { app, Menu } from (‘electron’);const isMac = process.platform === ‘darwin’;
const template = [
// { role: ‘appMenu’ }
…(isMac ? [{
label: app.name,