browser-runコマンドを使ったjavascriptのハンディなブラウザ実行環境の整備

githubぶらぶらしてたまたま見つけた。

便利そうだと思ったから試してみた。

https://github.com/juliangruber/browser-run

1つのHTMLファイルごとに起動場所を問わず、WEBページをポート指定でサーブできるようなコマンドの印象を受けた。具体的には、ある小さいタスクをこなすHTMLページ(アップロードなどやjavascriptを利用した通信処理)を常駐デーモン化させる状況を想定した場合、1つのHTMLファイルごとに1つのポートを割り当てることができるので、ディレクトリ構造をフラットに保ったままWEB管理できる印象など。便利だと思う。ポート開放上限までといってもほぼ上限を気にしなくて使えそう。

ポート上限

https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml


$ mkdir -p 00001-javascriptのハンディなブラウザ実行環境の整備

$ cd 00001-javascriptのハンディなブラウザ実行環境の整備/

$ mkdir -p app

$ cd app/

$ npm init -y
Wrote to /home/aine/script-browser/00001-javascriptのハンディなブラウザ実行環境の整備/app/package.json:

{
  "name": "app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}


$ npm install browser-run

$ cat sample-bundle-javascript.html | node_modules/.bin/browser-run --port 9090 --input html

$ sudo lsof -i:9090 -P
COMMAND    PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
node    576661 aine   19u  IPv6 8230075      0t0  TCP *:9090 (LISTEN)

$ firefox http://localhost:9090/

$ brave-browser http://localhost:9090/

$ chrome http://localhost:9090/

firebaseを触った所感をメモ

firebaseのソリューションの一つにfirestoreなどがある。
firestoreのデータ構造はコレクションネスト管理(メインコレクションとサブコレクションの関係)で、開発者は提供するサービスのデータ構造に応じてネストの深さを動的に管理することができる。
データ構造をサービスに応じてどう管理していくかが重要だ。
データ形式はjsonなので、jqでほぼハンドリングしているが、パス式を動的に生成するところはなかなか面白かった。
親側(メイン)の情報を持ちわまり子側(サブ)へ処理するパタンを繰り返していく。
最後の子まで行ったら、ラップ剥がしして整形という流れ。
パイプで変数束縛させていく感覚があれば、やりきれると思った。
このパタンを再帰関数で表現したいと取り組んでいく中で感じた。
汎用さは汎用さで対応していく感覚。
ボトルネックになりそうな部分はオブジェクトと配列の場合のパス式がインデックス処理になったりキー処理になったりする部分をうまくかけるかどうか。
あとはパイプで変数束縛するコンテキストを見間違えないかどうか。
調子よかったら、書けそうなど。

自作マシンつくった

OSはUSBメモリにWin7から焼いたものを使ってUSBBootでインスト。17万ぐらいかな。。ケースもう少し大きめのにしておけばよかったかも。USB3.0の差込口がケースのケーブルホルダの位置と少しかぶって差しづらかった。ケースとマザボの相性大事ってことが今回で分かった。

初めてにしてはうまく組み立てることができた。。

OS

USBboot用のcentos7(isoイメージファイル)

PCケース

優れた拡張性を備えた強化ガラス採用ATX対応ミドルタワーPCケース P110 Luce
https://www.amazon.co.jp/gp/product/B073XZJ4Z9/ref=oh_aui_detailpage_o08_s00?ie=UTF8&psc=1

CPUクーラー

Thermaltake Floe Riing RGB 240 TT Premium Edition 一体型水冷CPUクーラー [RGB LED 搭載] FN1116 CL-W157-PL12SW-A
https://www.amazon.co.jp/gp/product/B076F78ZP6/ref=ppx_yo_dt_b_detailpage_o08_s01?ie=UTF8&psc=1

メモリ

商品名:CORSAIR DDR4 デスクトップPC用 メモリモジュール VENGEANCE LPX Series 16GB×1枚キット CMK16GX4M1A2666C16、数量:2
https://www.amazon.co.jp/gp/product/B019HVO62A/ref=ppx_yo_dt_b_detailpage_o08_s01?ie=UTF8&psc=1

マザボ

MSI Z390-A PRO ATX マザーボード [Intel Z390チップセット搭載] MB4617
https://www.amazon.co.jp/gp/product/B07J6Q956G/ref=ppx_yo_dt_b_detailpage_o08_s01?ie=UTF8&psc=1

CPU

Intel CPU Core i7-8700K 3.7GHz 12Mキャッシュ 6コア/12スレッド LGA1151 BX80684I78700K 【BOX】
https://www.amazon.co.jp/gp/product/B07598VZR8/ref=oh_aui_detailpage_o09_s00?ie=UTF8&psc=1

モニタ

ASUS ディスプレイ モニター 21.5型 ( VA / 178°広視野角 / フルHD / HDMI, DVI-D, D-Sub / 3年保証 ) VS229HA
https://www.amazon.co.jp/gp/product/B01DOWUCG2/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

SSD

Samsung SSD 500GB 970 EVO M.2 Type2280 PCIe3.0×4 NVMe1.3 5年保証 正規代理店保証品 MZ-V7E500B/EC
https://www.amazon.co.jp/gp/product/B07CKX6S7H/ref=ppx_od_dt_b_detailpages01?ie=UTF8&psc=1

電源ユニット

Thermaltake TOUGHPOWER GRAND RGB -850W -NON DPS- 80+GOLD PC電源ユニット PS673 PS-TPG-0850FPCGJP-R
https://www.amazon.co.jp/gp/product/B01MXY5350/ref=ppx_od_dt_b_detailpages01?ie=UTF8&psc=1

備品

Wifiに参加させるために一つ買った。
BUFFALO 11n/a/g/b 300Mbps 簡単無線LAN子機 WLI-UTX-AG300/C
https://www.amazon.co.jp/gp/product/B008MRUINC/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1