- 0.1. Azureに関するStackover flowの質問を誰よりも早く回答するために、Node.js、Azure Functions、CosmosDB、StackExchange API、Slack APIでサーバレスアプリケーションを作ってみる。
- 0.2. OpenSSLの脆弱性をSnykで駆逐してみた
- 0.3. クロスプラットフォーム対応! MIDI経由のハードウエア制御システムをサっと作る
- 0.4. nodejs + express + mongoDB のCRUDまとめ
- 0.5. Expressで多次元配列でフォームの入力値を受け取る
- 0.6. LINEビーコンで無限プッシュなメンヘラ女子BOT #iotlt #esp32 #linedc [WIP]
- 0.7. Dockerでnpm installが遅い問題を解決する
- 0.8. Next.jsとはなんぞや
- 0.9. WordPressサイトにウォレットを接続するプログラムの作り方
- 1. ウォレットを接続するソースコード
- 1.1. Webアプリケーション初心者がNode.jsでWebサーバーを構築してみた
- 1.2. MinecraftのチャットとDiscordが連携できるらしい
- 1.3. nodejs + express + mysql + passport を用いて簡単なログイン機能
- 1.4. Socket.IOを使って、Node.js(client)とPython(Server)の双方向通信
- 1.5. クセ強!Firestoreのトランザクションを書いてみた【コード例あり】
- 1.6. replaceAll is not a function
- 1.7. [TIPS]: Node.jsでglobパターンを、RegExpに変換するBetterな法方
- 1.8. npm run start実行した際、scriptsのprestartを先に実行させる
- 1.9. Azure WebAppsでPuppeteer動かしたかったけど上手くいかないメモ
- 1.10. Socket.IOでコンソールベースのチャットを作成する
- 1.11. Dockerを用いたnode.jsの実行環境構築
Azureに関するStackover flowの質問を誰よりも早く回答するために、Node.js、Azure Functions、CosmosDB、StackExchange API、Slack APIでサーバレスアプリケーションを作ってみる。
![arch5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822052/af91dca0-9c58-6f72-98e2-3ebee170c24f.png)
# はじめに
azure functionを使って、サーバレスらしい小さなアプリケーションを作って見たかったので作ってみました。コンセプト的には、「azureに関するstack overflowの質問を一番に回答してやろう」的なやつです。そのための機能として、以下を実装していきます。– 毎日stackoverflowのazureに関する質問を取得する
– 取得した質問をデータベースに保存する
– 質問をslackに送信する
– REST APIからデータベースに保存した質問を取得できるようするに、毎日最新の stack overflow の azure に関する質問を slack のチャンネルに送信してくれるアプリケーションです。実際に回答をするかはあなた次第です。あと一応データベースに保存してあるので、REST API も作ってお
OpenSSLの脆弱性をSnykで駆逐してみた
# はじめに
こちらの記事はアドベントカレンダー「[Snykを使って開発者セキュリティにまつわる記事を投稿しよう! by Snyk Advent Calendar 2022](https://qiita.com/advent-calendar/2022/snyk)」の初日の記事として投稿しています。
私[@tajima_taso](https://twitter.com/tajima_taso)からは、Snykを使って先日発生したOpenSSLの脆弱性([CVE-2022-3786およびCVE-2022-3602](https://www.openssl.org/blog/blog/2022/11/01/email-address-overflows/))を検出し、対処する具体的な方法についてご紹介いたします。
今回は気軽に試せるよう[Github上にリポジトリ](https://github.com/yuya-tajima/dangerous-train)を用意しましたので、興味を持たれた方がいましたら一緒に手を動かしながらお試しいただければと思っております。
具体的には「*
クロスプラットフォーム対応! MIDI経由のハードウエア制御システムをサっと作る
### Webからハードを操作する環境を素早くつくりたい!
Webエンジニアです!
普段仕事でプロトタイピングすることも多く、雑にWebからハードを操作するシステムを試作することも多いです。
今回紹介するのは、つい先日のお話です。下記のような要件のシステム(プロトタイプ)を作りました。
– 操作用のPCやスマホから別の場所にあるPCとそのPCに接続されたハードを制御する
– ハードが接続されたPCはWindows PCの上で動作させる想定だがOSはLinuxにするかもしれない。さらに開発はMacで行いたい
– PCとハードの接続にはUSBケーブルを用いる
– ハードは制御コマンドに基づいて動く。コマンド体系はいくつかのコマンド+ON/OFF程度で単純
– 数台作れれば良い。さくっと明日までにプロトタイプを1台つくれ。的なスピード感(実際は2-3日猶予がある)![sc1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31758/3cd4c188-081c-ac3a-097c-6c8b11c7
nodejs + express + mongoDB のCRUDまとめ
# はじめに
mongoDBはNon-SQLとしてMySQLのような行列のデータではなく、JSON構造のデータである。そもそもクラウドデータベースなので、環境を変えながら開発をしたい場合、個人が気軽にデータベースを持ちたい場合、利点を持つ。ここではnodejs + mongodbを用いた基本的はCRUD (Create, Read, Update, Delete)をPostmanを用いて簡単にまとめた。## PostManの参考
https://qiita.com/notch0314/items/97c7d1bb565fdae4a712
# 環境
mongodb 4.12.1
window 10
express: 4.18.2## MongoDB
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821152/4c2c48e5-11c4-df98-6003-5d45b6197feb.png)
Database -> Cluster0 -> Connect![image.
Expressで多次元配列でフォームの入力値を受け取る
Expressでフォームの入力値を配列で受け取るにはexpress.urlencodedの指定が必要。
“`javascript
app.use(express.urlencoded({extended: true}));
“`[Expressでbody-parserがいらない理由: “bodyparser is deprecated”](https://qiita.com/hirochan/items/e63d74cb70f0b97889fc)
どういった形式で指定することが出来るかのサンプルを以下に記載する。
“`html
LINEビーコンで無限プッシュなメンヘラ女子BOT #iotlt #esp32 #linedc [WIP]
LINEビーコンを使うことで本来は有料なプッシュ機能の擬似無限プッシュがやれることをご存知でしょうか?
前回のIoTLTで発表した内容を記事化していきます。
> [![スクリーンショット 2022-11-30 23.55.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/a3f92ab9-e43a-673f-8a45-b9e9bbe1f32e.png “スクリーンショット 2022-11-30 23.55.11.png”)](https://speakerdeck.com/n0bisuke2/linebikondewu-xian-putusiyunamenherabot-number-iotlt-number-esp32-number-linedc)
> ↑イラストのさおりちゃん、一発で生成した割には可愛いよ。## LINE公式アカウントの改悪問題
改悪ってのは僕が言ったわけではなく世の中の記事が言ってます。はい。
##
Dockerでnpm installが遅い問題を解決する
昔よく`docker npm install 遅い`などのワードで検索していたのですが、そもそもComposeファイルの書き方をあまりよく理解しておらず、自分のフォルダ構成に落とし込むことができなかった経験があります。
あれから学習し少しは分かるようになったのでその成果を記述します。
ともあれ、もし上記ワードで検索してこの記事に来たならば、できればComposeファイルの記述方法を学んでほしいです。
おすすめ→https://zenn.dev/suzuki_hoge/books/2022-03-docker-practice-8ae36c33424b59
# docker-compose.yml
“`docker-compose.yml
version: ‘3.9’services:
front:
container_name: ContainerName
working_dir: /front
tty: true
build:
dockerfile: ./Dockerfile
context: .
volume
Next.jsとはなんぞや
最近Next.jsというものを使い始めたのですが、Nuxt.jsやReactと何が違うのでしょうか?
細かい違いがわからなかったので、ここで整理しておきます。
## Next.js/Reactの相違点
Next.jsはReactをベースにしていますが、以下のようにReactと異なる点があります。
| | Next.js | React |
| —| ——- | —– |
|サーバーサイド|〇|×|
|用途|アプリケーションフレームワーク|UIライブラリ|
|部分導入|×|〇|
## Next.js/Nuxt.jsの相違点
Nuxt.jsというフレームワークがあります。
Next.jsもNuxt.jsもSSRを実現するJavaScriptフレームワークです。
サーバーサイドレンダリングが必要な場合によく導入されます。
ユースケースによって、Reactで作られたアプリケーションのSSRにはNext.jsを、Vue.jsのアプリケーションのSSRにはNuxt.jsを使うという違いがあります。
## Node.jsとの関係
Next.jsは単体では動作しません。
あらか
WordPressサイトにウォレットを接続するプログラムの作り方
今回個人サイトにMetaMaskを接続できるプログラムを作成しました。
必要な物
- npmコマンドが利用できるパソコン(Node.js)
- MetaMask
- WordPressが動く環境
ウォレットを接続するソースコード
MetaMaskの公式サイトによると、下記のソースコードを呼び出すと接続できるようになると記載しています。
“`javascript:web3.js
ethereum.request({ method: ‘eth_requestAccounts’ });
“`完成ソースコードはWebアプリケーション初心者がNode.jsでWebサーバーを構築してみた
始めまして。ソフトウェアメーカーで働いている新卒1年目のぺーぺーエンジニアです。
自社製品の話なのですが、今まで[Electron](https://www.electronjs.org/ja/docs/latest)で開発していたものを、EC2へ移行するということをやろうとしています。
が、1か月前に配属されるまでWebアプリケーションなんか作ったこともないし、なんのこっちゃという感じでした。というわけで色々調べながらNode.jsを使ってHello Worldを返すWebサーバーを構築してみたという話です。
# この記事が約に立つかもしれない人
– なんかWebコンテンツ作ってみたいけどなんもわからんという人(この記事を書く前の筆者がそう)
– Node.jsてなに という人
ちなみに筆者の環境はWindowsですが、Macでも似たような手順でできると思います。
# Node.js
Node.jsは、JavaScriptの実行環境です。
一言で片づけてしまうと、「JavaScriptでサーバーサイドの処理が書けるよ」というものですが、最近はクライアントサイドのアプリ開発もで
MinecraftのチャットとDiscordが連携できるらしい
この記事は2020年に今は無き別サービスに投稿したものを、今更Qiitaに再投稿したものです。
# 「rcon」って何に使うのだろうか
Minecraftのサーバーのバージョンを更新して`server.properties`を見直していた際に、`enable-rcon`という項目を発見した。気になったので、「Minecraft rcon」でググってみた。そこで見つけたのが、**Minecord**だ。もりやませーたさんという方が作り、MITライセンスで公開されている。どうやらNode.js製のサーバーで、そこからMinecraftサーバーのrconを利用してDiscordのチャットを流しているということなのだろうか。# 早速導入
もりやませーたさんのブログ、「[ModなしでMinecraftサーバーとDiscordを連携するツールを作った](https://s8a.jp/connects-minecraft-and-discord-minecord)」を見て、その通りに進めていく。進めていく前に、実行には当然ながらNode.jsの環境が必要である。また、Minecordはnp
nodejs + express + mysql + passport を用いて簡単なログイン機能
# はじめに
ログイン機能はとても基本的な内容であるが、ある意味ともて大事な機能である。
最近は自分のデータベースにパスワードを保存せず、GoogleやFacebookのIDを代わりに利用できるので、
ユーザーの個人情報管理の重要さは、個人が運営するサイトなどにおいては減っている気がする。
ここではnodejs + express + mysqlを用いてログイン機能、方法を書く。# 環境
window 10
mysql 8.0.31
express: 4.18.2# Code
## Mysql
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821152/ef6188a8-be46-0649-cce7-34da3d26adbc.png)
DBeaverからmysqlのaccountsのテーブルにこのようにユーザーの個人情報と、id, passwordを入れた。
ここでuser_idは固有の識別番号として設定した。## Nodejs
“`:passport install
Socket.IOを使って、Node.js(client)とPython(Server)の双方向通信
Node.jsとPython間で、Socket.ioでメッセージをやり取りする自分用メモ。
いやぁ、、、Python難しい、、、まじでわけわからん。。# やりたかったこと
* Pythonが定期的に(やや重たい)演算処理を実行している
* Python側の演算処理が一巡したら、Node.jsへ結果を送りたい
* また必要に応じてNode.js側からPython側へ演算のもとになるデータを送りたい
* Python側がメインのシステム。
⇒PythonからNode.jsと、Node.jsからPythonへ、双方向でやり取りしたい
⇒とりあえずメッセージをやりとりするための土台をつくろう!# 環境
* Windows 10 64bit
* Node.js(v18.0.0)
* Python(3.7.9)# Python のパッケージ
* cmd > pip install python-socketio
⇒依存:python-engineio, bidict
* cmd > pip install eventlet
⇒依存:dnspython, greenlet, s
クセ強!Firestoreのトランザクションを書いてみた【コード例あり】
## はじめに
FirebaseのNoSQLデータベースであるFireStoreは、トランザクション制御が可能です。
しかし、RDBとは異なりクセのある概念や書き方に戸惑う方が多いのではないでしょうか?私自身、受託開発の案件でFireStoteを扱っておりますが、とにかくクセが強くて何度も挫折しかけました。今回、そんな初見殺しのトランザクションの制御方法についてコードベースで紹介しようと思います。FireStoreを採用した開発で苦戦されてる方は是非参考にしてみてください。
※この記事は、Admin SDKが対象です
※この記事で紹介する制御方法はあくまで私個人のやり方です。正しい考え方・書き方等のベストプラクティスがあれば、ご教授いただけますと幸いです!## 対象読者
– FireStoreのトランザクションに戸惑っている方
– Admin SDKを使っている方## SDKについて
FirebaseのSDKは、以下の2種類あります。
– クライアントSDK(web、アプリ)
– Admin SDK (サーバー)**サーバーサイドでは、Admin SDK を使います
replaceAll is not a function
# 事象 : jestでテストを実行したらreplaceAllメソッドで怒られた
“`bash
$ yarn jest hogedetail
yarn run v1.22.19
# …省略…
TypeError: this.hogeCode.replaceAll is not a function104 | computed: {
105 | bookThumbnailUrl() {
> 106 | return `https…省略…/${this.hogeCode.replaceAll(‘-‘, ”)}`
| ^
107 | }
108 | },
109 |
“`## 原因 : Node.jsのバージョンがreplaceAllに対応していないから
replaceAllはNode.jsのv15.0.0以上でないと対応していないのでした。
参考 : [String.prototype.replaceAll() – JavaScr
[TIPS]: Node.jsでglobパターンを、RegExpに変換するBetterな法方
[自分ブログより](https://blog.hedrall.work/posts/20221120-glob)
# 結論
以下のコードで`glob`の文字列を`RegExp`の文字列に変換することができました。
“`typescript
const minimatch = require(‘minimatch’).Minimatch;
const globToRegExp = glob => {
const regexp = new minimatch(glob).makeRe();
if (!regexp) throw new Error(`globに変換できません。glob: “${glob}”`);
return regexp.toString().slice(1, -1); // 前後に `/` がついてしまうので、sliceする
};
“`# 解説
`glob`を`RegExp`に変換する際にちょうど良いライブラリを見つけるのに時間がかかったので、本記事を書きました。
まず `glob to regexp` などで検索すると [glob-to-
npm run start実行した際、scriptsのprestartを先に実行させる
## 背景
ローカルで色々と遊びたい。
ただ、AWS上の本番環境への影響は避けたい。
また、コマンドの入力も極力減らしたい。
そういう時に使えるTIPS。復習もかねて、アウトプットしてみる。
## 前提
* Node.js(v16.14.2)
* VSCode
* AWSアカウント## 結論から先に
package.jsonのscriptsを以下のように設定し、
コマンドで`npm run start`を実行すると、
実は`start`が実行される前に、`prestart`が実行される。“`package.json
“scripts”: {
“prestart”: “setx AWS_PROFILE kenny_test”,
“start”: “env-cmd -f .env npm run start-without-env”,
“start-without-env”: “nodemon ./index.js”,
}
“`
流れとしては、以下のようになる。1.`npm run start`をコマンドで実行
2.scriptsの、`
Azure WebAppsでPuppeteer動かしたかったけど上手くいかないメモ
Azure WebAppsでPuppeteerを動かしたかったけど動かないのでやったことメモしておきます。
## プランなど
– プラン: B1
– ロケーション: East Asia
– ランタイム: Node – 18-lts## スタートスクリプト
> 続 puppeteer を Azure Web Apps で動かす試み
> https://uncaughtexception.hatenablog.com/entry/2020/01/05/171945この辺りの記事を見て`/home/start.sh`を作成して
“`sh
#!/bin/shapt update \
&& apt install -y \
ca-certificates \
fonts-liberation \
gconf-service \
libappindicator1 \
libasound2 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libc6
Socket.IOでコンソールベースのチャットを作成する
Socket.IOの勉強によく使われる簡単なチャットを作ってみました。
公式ドキュメントや各種記事には、ブラウザベースのチャットの例が多くありますが、今回はコンソールベースのチャットを作ってみました。
“`js:index.js
const io = require(‘socket.io’)();
io.listen(3000);io.on(‘connection’, (socket) => {
console.log(`connected, id: ${socket.id}`);socket.on(‘chat message’, (user, message) => {
data = `${message} from ${user}`;
console.log(data);
socket.broadcast.emit(‘chat message’, data);
});socket.on(‘disconnect’, () => {
console.log(`disconnected, id: ${socket.id}`);
Dockerを用いたnode.jsの実行環境構築
Dockerを用いてnode.jsの実行環境を構築しました.
nodejsのbase imageをpullせずに,ubuntuのbase imageにnode.jsをインストールする形で構成しました.#フォルダの構成
“`text
├─Dockerfile
└─bash
└─nodesource_setup.bash
“`# ファイルの内容
“`Dockerfile:Dockerfile
FROM ubuntu:20.04ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y –no-install-recommends \
apt-utils sudo git curl vim unzip openssh-client wget gnupg2 lsb-release software-properties-common \
build-essential cmake \
libopenblas-dev \
libglib2.0-0