- 1. その実装で大丈夫?!DBクライアントのコネクションはいつ作られるかを確認してみた ioredisを例に
- 2. HTTP, WebSocket混在のプロキシサーバに個別の証明書を適用する方法(node-http-proxy)
- 3. Lambdaのレイヤーの参照方法
- 4. Amazon SQSのローカル実行環境ElasticMQの構築
- 5. コード譜投稿アプリを作る #1(アプリ構築)
- 6. nodebrewインストールメモ
- 7. 【Express】起動時に、「TypeError: express is not a function」のエラー
- 8. Node.js ExpressでEJS+静的ファイルWebサーバー
- 9. CoinCheck API を TypeScript + Node.js で書いてみる
- 10. あの最強ハッカー「ウォールナット」の七つ道具の一つ「Internet Automatic Search Program」がGithubで公開されている件
- 11. WARN Address localhost:8080 is already in use.の解決策
- 12. D3.jsとGridDBによる気象データの可視化
- 13. TensorflowJSとGridDBを用いた赤ワインの品質予測
- 14. 自作 isEmpty が意外と難しかった件
- 15. JavascriptでAuth0の認可を実装してみた
- 16. Amazon Linux2での環境構築メモ(Git、Node.js、MySQL)
- 17. BufferとTextDecoderの微妙な差
- 18. OpenseaでNFTに「無限いいね」するツールをリリースしました。
- 19. 【Node.js】Node.js を nodenv で管理する
- 20. Node.jsでSNMPエージェントから値を取得する
その実装で大丈夫?!DBクライアントのコネクションはいつ作られるかを確認してみた ioredisを例に
## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/n99b706bede8f
**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です。**
## 補足
ソースコード全体は以下。https://github.com/yuta-katayama-23/node-express/commit/51acc37d775f156bc4c312edcace88c49916080b
HTTP, WebSocket混在のプロキシサーバに個別の証明書を適用する方法(node-http-proxy)
タイトル通りです
自作アプリ内でHTTPとWebSocketのリクエストを[node-http-proxy](https://github.com/http-party/node-http-proxy)のプロキシサーバで振り分けていて、HTTPにしか証明書を適用しなくても動いていたのが、いつからか動かなくなった(Appleのポリシー変更?)ため、対応した内容を書きます。
ネットにある情報で上手くいかなくて苦労しましたが、
肝心なのはSNICallbackの第二引数で制御することでした後はコードでご確認ください
“`
var httpProxy = require(‘http-proxy’);
var https = require(‘https’);
var tls = require(“tls”);
var fs = require(‘fs’);var normalProxy = new httpProxy.createProxyServer({
target: {
host: ‘localhost’,
port: 8080,
Lambdaのレイヤーの参照方法
Layerに配置したファイルは `/opt`で参照可能。
試しに表示してみる。Google fontから[Noto Sans Japanese](https://fonts.google.com/noto/use#how-are-noto-fonts-organized)をダウンロードし、`.font.zip`にしてLayerにアップロード。
Lambda側でLayer参照の設定をしてから以下を実行“`js
const fs = require(‘fs’);exports.handler = function(event, context){
fs.readdir(‘/opt/’, function(err, files){
console.log(files);
context.done(null, err);
});
}
“`Cloud Watchに以下のように出力される
“`
[ ‘.font’ ]
“`さらに`.font`ディレクトリの中身を表示してみる
“`js
const fs = requir
Amazon SQSのローカル実行環境ElasticMQの構築
Amazon SQSと互換があるElasticMQをインストールし、ローカルにあるLambdaのソースコードと連携するローカル実行環境を構築します
softwaremill/elasticmq
https://github.com/softwaremill/elasticmq
# ElasticMQのインストール
ElasticMQのインストール方法には複数ありますが、今回はDockerを使います。
特に、Docker環境としては、QNAPのNASにインストールします。理由は単にQNAP NASを利用しているから。QNAPには、Docker環境として、ContainerStationがあります。
ElasticMQのDockerファイルは、リポジトリに対して、elasticmqの入力で検索にひっかかります。https://hub.docker.com/r/softwaremill/elasticmq-native/
Dockerに馴染みのある方は、以下がわかりやすいかと思います。
“`docker run -p 9324:9324 -p 9325:9325 so
コード譜投稿アプリを作る #1(アプリ構築)
[←前回の記事](https://qiita.com/t_sekky/items/de8768b9826d98601164)
今回はひとまずRailsのAPIモードとNext.jsのアプリケーションを作っていきます
環境はM1macです## Railsアプリ作成
[この記事](https://qiita.com/ydammatsu/items/a2fbae968149bf2c1999)に書いてあることを~~コピペ~~参考にしてdockerを使って構築しました
ruby3系とRails7系は初めてだけど試すのには絶好の機会だしまぁええでしょ詰まった点としては`db:create`する際に以下のようなエラーが出ました
“`
/lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29′ not found (required by /usr/local/bundle/gems/nokogiri-1.13.0-aarch64-linux/lib/nokogiri/3.1/nokogiri.so) – /usr/local/bund
nodebrewインストールメモ
nodebrewインストール方法
忘れるのでメモ## nodebrew インストール
“`bash
$ brew install nodebrew
$ nodebrew setup
Fetching nodebrew…
Installed nodebrew in $HOME/.nodebrew========================================
Export a path to nodebrew:export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================# 上記で setup したときに表示されたコマンドを .bash_profile に追記
$ echo “export PATH=\$HOME/.nodebrew/current/bin:\$PATH” >> ~/.bash_profile
$ source ~/.bash_profile# インストールしたいバージョンを下記から選択
$ nodebrew ls
【Express】起動時に、「TypeError: express is not a function」のエラー
expressでサーバー立てようと思い、このように書いていたら、
“`typescript
//index.ts
import * as express from “express”;
const app = express();
“`トランスパイルして実行したところ、こんなことを言われました。
“`
/dist/index.js:2
var app = express();
^TypeError: express is not a function
“`
※ちなみに、tsconfig.jsonの`module`は、`es6`です。## 対処法
“`typescript
//index.ts
import * as express from “express”;
//↓
import express from ‘express’;
“`
という記事を見て、真似してみましたが、今度は下のようなコンパイルエラーも出ました。“`
このモジュールは ‘export =’ を使用して宣言されていて、
‘allowSyntheticDefa
Node.js ExpressでEJS+静的ファイルWebサーバー
# 概要
Node.jsでEJS実行環境と静的ファイルをそのまま返すwebサーバーを作ってみた
# 方針
目標はApache(Nginx)+PHPのような環境をNode.js(Express)+EJSで構築すること
– 拡張子.html .ejsはEJSテンプレートとしてレンダリングして返す
– それ以外のファイルはそのまま返す# インストールしたパッケージ
“`json
{
“dependencies”: {
“body-parser”: “^1.20.0”,
“ejs”: “^3.1.8”,
“express”: “^4.18.1”
}
}
“`# 参考
以下の記事を参考というかほとんどこれをベースにカスタマイズしました
https://note.affi-sapo-sv.com/nodejs-webserver.php?utm_source=pocket_mylist#i2
拡張子htmlをejsとして実行する方法
https://stackoverflow.com/questions/21922854/change-
CoinCheck API を TypeScript + Node.js で書いてみる
# About
何故か CoinCheck API の example に Node.js が無いので簡単な API クライアントを TypeScript で書いてみました。
https://coincheck.com/ja/documents/exchange/api
# Main Code
各種モデルとインフラストラクチャ(CoinCheck class)を1コードにした形で示します。
“`CoinCheck.ts
/**
* 相場情報(簡易版)
*/
class Ticker {
last?: number // 最後の取引価格
bid?: number // 現在の買い注文の最高価格
ask?: number // 現在の売り注文の最安価格
high?: number // 24時間での最高取引価格
low?: number // 24時間での最安取引価格
volume?: number // 24時間での取引量
timestamp?: number // 現在の時刻
}/**
* 残高
*/
あの最強ハッカー「ウォールナット」の七つ道具の一つ「Internet Automatic Search Program」がGithubで公開されている件
# ウォールナットって?
リコリス・リコイル(以下、リコリコ)というアニメに出てくる金髪ロリ美少女最強ハッカーです。
本名はクルミちゃんといいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1135021/96fe1c3b-fcf3-42d4-26ab-6ad9ed3319ea.png)# Internet Automatic Search Programって?
そんな超絶かわいい個人的最推しキャラのクルミちゃんが第7話で見せた七つ道具の一つがInternet Automatic Search Programです。
インターネッツの海から一瞬で目当てのものを自動検索してくれるプログラムみたいですね。
検索しても出てこない情報を探せるのだとか。ダークウェブっぽくてハッカー感ありますね
### 余談
ダークウェブって呼び方よりもウラインターネットとかのほうがしっくりくるのは私だけでしょうか(エグゼ世代)# プログラム考察
私はアニメに出てくるソースコードは読んでしまう病に罹って
WARN Address localhost:8080 is already in use.の解決策
サーバー起動時に
“`
WARN Address localhost:8080 is already in use.
“`と出た場合は、すでにそのポートが使用されています。
## 解決策
“`
lsof -i -P | grep 8080
“`
でそのポートを使用していないか確認。“`
kill PID(プロセスID)
“`
上記コマンドで消去できない場合は
“`
kill -9 PID(プロセスID)
“`
`-9`を使用して強制終了します。https://amateur-engineer.com/port-process-kill/
D3.jsとGridDBによる気象データの可視化
今回は、GridDBを使って気象データを可視化・分析する方法を紹介します。CSVファイルで提供されているデータセットをGridDBにロードし、GridDBからデータを取得してデータ分析を行います。気象データセットを使用します。
[ この記事の全ソースコードはこちら ][1] をご覧ください。
## GridDBにデータをロードし、GridDBからデータを取得する
“`javascript
var griddb = require(‘griddb_node’);const createCsvWriter = require(‘csv-writer’).createObjectCsvWriter;
const csvWriter = createCsvWriter({
path: ‘out.csv’,
header: [
{id: “DATE”, title:”DATE”},
{id: “WIND”, title:”WIND”},
{id: “IND”, title:”IND”},
{id: “RAIN”, title:”RAIN”
TensorflowJSとGridDBを用いた赤ワインの品質予測
## はじめに
今回は、TensorFlowJSとGridDBを使ってモデルを学習し、赤ワインの品質を予測します。このチュートリアルでは、以下のNodeJS用ライブラリを使用します。
* TensorflowJS – モデルのトレーニングに使用します。
* DanfoJS – DataFrameの操作に使用します。[ 記事の全コードはこちら ][1]をご覧ください。
データサイエンスやMLの実験を容易にするためにはNode Notebooksを使った作業が便利です。Visual Studio CodeはNode Notebooksをサポートする素晴らしいエディタなので、この記事ではそれを使用することにします。注: Danfo JS と Tensorflow JS は最低でもnodeのバージョン 12 が必要で、griddb はnodeのバージョン 10 で動きます。
“`javascript
const dfd = require(“danfojs-node”)
var fs = require(‘fs’);
const tf = dfd.tensorfl
自作 isEmpty が意外と難しかった件
# とにかく empty
– undefined
– null
– [](Arrayの要素0)
– {}(Objectのメンバーなし)
– ”(空文字)javascriptには様々な型(値)がありますが、四の五の言わず empty として判定したい!
# isEmpty(最終版)
“`javascript: util.js
const isEmpty = (obj) => {
return (‘number’ === typeof obj ? false : (!obj || 0 === Object.keys(obj).length))
}
“`ttatsf さんの指摘により修正しました。
三項演算子やORでつなぐのは反則にしています。見にくいですからね。
1回ずつならOKかと### isEmpty ver.1
“`javascript: util.js
const isEmpty = (obj) => {
if (‘number’ === typeof obj) {
return false
}return (!obj ? tr
JavascriptでAuth0の認可を実装してみた
# はじめに
認証認可のシステムを社内で実装する手間を避けるために、SaaSを使用することも多いかと思います。この手のツールの中でもyoutubeに日本語関連の動画が少なかったAuth0について実際にコードから使用してみようというのが今回の記事になります。
対象読者は認証認可サービスに興味がある人なら誰でもOKです。
まず前提知識としてこれらの認証認可のサービスがどんなことをやるのかを頭に入れておく必要があります。私は以下の記事を一読し、似た単語などをGoogleで調べるなどして勉強してみました。
https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be
https://qiita.com/TakahikoKawasaki/items/498ca08bbfcc341691fe
ただ、ここまでは実装方式のホワイトペーパーを見ているにすぎないため、実際のサービスであるAuth0を叩いてみましょう。
今回やるのは以下です。
大目標「フロントアプリから適当なユーザでログインを行い、そのユーザの権限を使ってAPIへ
Amazon Linux2での環境構築メモ(Git、Node.js、MySQL)
## はじめに
よくわからなくなってググるので超個人的備忘録として書き記しておきます。### 動作環境
OS:Amazon Linux2## gitのインストール
コマンドラインで以下のコマンドを入力
“`bash
sudo yum install git
“`インストール確認。
“`bash
git –version
“`これでgitのインストールは完了。
あとは任意のリポジトリを`git clone`してやればOK## Node.jsのインストール
まずはnvm(Node.jsのバージョン管理ツール)をインストールします。
[公式サイトの手順](https://github.com/nvm-sh/nvm/tree/v0.37.2#installing-and-updating)に従うだけで大丈夫。コピペで簡単。
“`bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
“`bashを開き直すよう言われるので開き直してからインストー
BufferとTextDecoderの微妙な差
Node.jsの標準で存在する`Buffer`と、WHATWG発祥の`TextDecoder`でそれぞれバイト列をUTF-8として解釈できますが、微妙に結果が違うことに気づきました。
## TL; DR
* 正当なUTF-8となるバイト列であれば、`Buffer`と`TextDecoder`の結果に差は出ない
* 途切れたマルチバイト文字の解釈で、生成される`�`(U+FFFD)の数が違う
* この挙動差に依存するコード自体に嫌な雰囲気を感じる一方、`Buffer`の挙動のほうが一貫している印象を受けた## 気づいたきっかけ
`Buffer`で書かれたコードを`TextDecoder`に直したところ、テストがコケてしまいました。テストの状況を確認してみたところ、正常系では特に問題がなかったのですが、正しくUTF-8として解釈できないコードで、`�`(U+FFFD)の個数が違っていました。
## UTF-8の構造
正しくないコードについて語るために、ここでUTF-8の構造について整理しておきます。日本語用のシフトJISやEUCでは、1バイト目と2バイト目で同じバイトを使って
OpenseaでNFTに「無限いいね」するツールをリリースしました。
なんということでしょう!
### 我々はついにブラックホールの生成に成功し、さらにタイムマシンをリリースするまでに至ったのです。
ここまで非常に長い道のりでした。
—–
ぜひともみんなにツールを見てもらいたいから、まずはリンクを貼らせてください。
**OpenseaNFT用 無限いいねツール その名も「[OpenShit](https://sigr.io/)」**
OpenShitリンク:https://sigr.io/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576748/0b49b077-8746-506c-c909-ec3865cc01cf.png)
ちなみに前回の記事ではツールを作成するまでの技術的な事を書いています。
**【Opensea】NFTに無限に「いいね❤」押せるツールを作成した話**
すべてJavaScriptとNod
【Node.js】Node.js を nodenv で管理する
# Node.jsとは
ブラウザ上で動作するJavaScriptを、サーバー上で動作させるためのソフトウェア## Node.jsをフロントエンド開発でも使っているのはなぜ?
* **npm** でのパッケージ管理
* パフォーマンス最適化のために、JavaScriptやCSSファイルを少数のファイルにまとめる(バンドル)
* テストツールを用いてユニットテストやE2E テストを記述するなど、Node.jsの役割はいろいろある
### npm
* Node.jsのパッケージ管理システム(パッケージのインストールと整合性の管理をする)
* 現在ではフロントエンドのパッケージ管理にも使用されるようになった## Node.jsのインストール
[推奨] Homebrew経由の **anyenv** 経由の **nodenv** 経由でNode.jsをインストールする### anyenv
* 「**env」をまとめて管理してくれる### nodenv
* プロジェクト毎のバージョン切り替えが楽になる(詳しくはこの後解説)## インストール手順
### ① Homebre
Node.jsでSNMPエージェントから値を取得する
Node.jsでSNMPの値を取得します。
# 利用するnpmモジュール
net-snmp を使います。
https://github.com/markabrahams/node-net-snmp
# 独自MIBファイルを追加する
標準MIBは以下が参考になります。(非常に助かってます)
[ネットワーク機器のSNMP MIB/OIDまとめ](https://qiita.com/Mabuchin/items/d435c0afb4f0ca17ad25)場合によって、監視対象の機器が独自の情報を提供している場合があります。
その場合、MIBファイルを提供しているのがほとんどです。●Synology製 NASの場合
https://global.download.synology.com/download/Document/Software/DeveloperGuide/Firmware/DSM/All/enu/Synology_DiskStation_MIB_Guide.pdf
https://global.download.synology.com/download