変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

未分類

Node.jsの脆弱性修正の予告?

swagger-editorとかAngular6とか色々使ってるのに・・・

開発環境を整えている最中に不幸のお知らせ

オンライン系の定番(不具合入りアップデートの混入)地獄にまた入るのかな?

pom.xmlでパッケージの依存関係を仕切ってるmavenなら

ガチガチにパッケージの依存関係を入れて、

local repositoryもproxy経由で2重化すれば何とかなるかもしかないけど

npmはどうすればいいのかな?(トホホ

案ずるより産むがやすし なのか?

ま、大した影響が無ければいいけど、

swagger-editorのOpenAPI v3 対応とか、

いまだに中途半端なのに

更に状況が悪化しなければいいなぁ

ガセネタとかフェイクニュースだと嬉しいな・・・(本当に

(ドンとお祓い。



型宣言原理主義なTypeScript

TypeScriptの本を読もうとすると、2~3ページで飽きてしまい、なかなか読み切れない。
と云うのも、
LETとかSETとかANYとか

MS-BASIC調な用語

が出てくると、読む気がしなくない点がとても大きい。
そんな訳で、どれくらい面白くないのかブログに書いてみることにした。
すると・・・
不思議なことに
気持ちがカチっと音を立てて切り替わり
スルスルと本が読める様になる。(大笑)
散々黎明期のMMORPG(昔はひどかった!)をブログのネタにした後遺症かな?
・・・閑話休題・・・
さて、
誰が考えたのか判らないけど、
変数宣言をBNF風に書いていると
(”LET”|”VAR”)変数名[(“:”|”AS”) 型名][”=” 初期値]”;”
※(…)はブロック、x|yは論理和、[…]はオプション(書かなくても無くてもOK)
の様な感じになっている。
「楽に文法解析できる様にしてみました」
になっている。
LET 変数名   :型名  =初期値;
と書いて見せた方が親切だと思うのだが
LET 変数名:型名=初期値;
とした方がカッコいい(≒今風な)のだろう。
:を使うのは、
LET ~ AS ~ 風にしたら、
BASIC!世紀末を越えて墓から生還か?と、速攻で叩かれると恐れたんだろう。
ASはVisual Basicになってからかな?
あ、Visual Basicの変数宣言のDimってとっても意味不明だよね?(笑)
さて文法をケース毎に分けてみると

  1. 変数だけ宣言する場合
    • LET 変数名;
  2. 変数と型を宣言する場合
    • LET 変数名:型名;
  3.  変数と初期値を宣言する場合
    • LET 変数名=初期値;
  4.  変数と型と初期値を宣言する場合
    • LET 変数名:型名=初期値;

と、場合によって「:」があったりなかったりと、
事前に先のBNF風の文法でも一読して、
:の後は型名
=の後は初期値
と予習して

  • LET 変数名:  型名;

は、実は

  • LET 変数名  :型名;

なのだと見抜く必要がある。
※というか、記号で切り分ける文法ってかなり(/ω\)な気がする
また、TypeScriptをパパっとコンパイル(というよりコンバート?)してJavaScriptになるせいか
var を使うとJavaScriptと同様に{…}の中で変数宣言してもブロックの外に出ても使えることを許容しているものの
var   でもletでも同じ変数を複数宣言するのは絶対に認めたくなかったらしい。
しかし、
varやletの代わりにconst を使ったら定数の宣言文になるのは
「楽に文法解析できる様にしてみました」調のままだが、コレはマシな気がする。
ところが、初期値を配列やリストで宣言しようとすると、
「お気楽に文法を設計してみました」調が暴発する。
Let  msLanguage:    Array < string > = [‘TypeScript’,  ‘JScript’, ‘VBScript’, ‘VBA’,’N88-BASIC’];
と仰々しい。
Let  msLanguage:    [ string ] = [‘TypeScript’,  ‘JScript’, ‘VBScript’, ‘VBA’,’N88-BASIC’];
と書いたらもっと酷いかもしれないけど、まだ見やすい気がする。
※これで正しいのかな?
しかし、その思いを他所に
リストではその斜め上を逝っていて、
Let   listup: { [name: string]: string; } = {  ’ ya’ : ‘ ヤッ’, ‘ soft’: ‘柔らかい’, ‘ big’: ”大き目の’ ,   bank’:’堤防’, ‘hoo’ : ‘ホォ~’ , robe’:’ローブ’ };
で、
一目見るなり、

型宣言なんてメンドクサイ!

というのが多数決で即決しそうである。
そんな感じで
変数宣言ですら

サンプルソースを見たダケでは、とっつきにくいもの

になっている。
運悪く人生初めてのコンピュータ言語がこんなのだったら・・・
他の言語のソースをみた途端、

なんで変数名の後に「:」という区切り文字が無いんだ!

という感じに、速攻でアレルギー反応を起こすだろう。
また、型宣言原理主義に走っている箇所もある。
オブジェクト型変数にオブジェクトを入れずに空っぽのままの状態はnull値であるとすることが多いと思うが、
そこはAnyとすることが正しいのであ~るな調子の型宣言原理主義で出来ているので、
Let name:    String  | null;
で妥協しなければいけない。
※今はstrictを指定した場合だけみたいだけど、そのうちデフォでしょうね
JavaScriptでは、よく使うundefineも
Let name:    String  | undefine;
としておかないと、オブジェトの名前を書き間違えて参照すると、気が付けば不思議なエラーを吐いてしまう様になってしまうでしょうね。
しかし、
簡易な文例はともかく、
実際に使いだすと
enum EnumBuildType  {
firstBuild,
secondBuild,
thirdBuild,

LastBuild
}
let    buildNumber :   EnumBuildType = EnumBuildType .firstBuild;
の様にenumとの相性がとっても良かったりする。
 
総じて、
中途半端感が否めないのが
TypeScript(型スクリプト)
である。

所感

型無しスクリプトに型宣言を付けたら、
enumや共用型で試してみたら以外と使いやすい。^ ^ b
これって?普通のコンピュータ言語として使えるんじゃねぇ?と思ったら、
型宣言の語調と型無しの語調の歩調が狂いっぱなしでゴッチャゴチャになっちゃった(´;ω;`)
な感じがした。
率直に云えば、「俺様スクリプトの没原稿」みたいなシロモノ。
ま、大企業は予算とスケジュールの厳守が最優先だから致し方無いのだけれど
決められた予算とスケジュールを守って作ったら、こうなってしまったのだろうと思う。
10年も構想を錬ればもっとマシなものになったんじゃないのかな?
こんなもん出すくらいなら、
全く違う言語の文法で書いて、トランスレータを通したら
一般的なJavaScriptのソースが出力された方が数段マシな気がしました。
Node.jsで、逐一イベントの同期をとりながら処理するもの(バッチ的なもの)を書くのがとっても面倒だったりするので
それこそ、ストリーム調でもいいから

File  file = new File("./sample/data.txt");
file.read()
.readLine(lineData As String) {
  log(  (++lineNumbet)   + ":" + lineData);
}
.success(allData as String) {
  log("ファイルを読みました。\n" + allData) ;
  log("削除しますね。");
  file.remove();
}
.error(e as Exception) {
  log("異常事態発生:" + e ") ;
}
.finaly {
  …
  log("状況終了") ;
  file = null;
};

な様に何となくベタっぽいのが書けるほうがいいな。
それこそ
VB風の方がいいかもしれない。

Procedure File.Read(fileName As String)
  Event readLine(lineData As String)
   log(  (++lineNumbet)   + ":" + lineData)
  End Event
  Event success(allData as String)
    log("ファイルを読みました。\n" + allData) ;
    log("削除しますね。");
    file.remove();
  End Event
  Event error(e as Exception)
    log("異常事態発生:" + e ") ;
  End Event
  Finaly()
    log("状況終了") ;
    file = null;
  End Finaly
End Procedure
'--
Let  file :File = new File("./sample/data.txt")
file.read

グチ・モードのおかげで
本の40%(位置:684/1713 「行」 )まで読み進めることができた。
そのせいか、
書き始めの時ほどには、TypeScriptを悪く感じなくなってきた。
最後まで読めたら・・・
普通のコンピュータ言語のような気がしてくるのかもしれない。
ソースコードは
SyntaxHighlighter Evolved プラグインを使っています。
WP SyntaxHighlighterなどを使用すると<pre&rt;だけ効いてCSSが不発になってしまいます。
ドンとお祓い。



車輪の再発明

車輪の再発明:

新たな付加価値が何もないものを作成するのにコストをかけることから、皮肉的なニュアンスで用いられる。再発明を行ってしまう理由としては、「既存のものの存在を知らない」「既存のものの意味を誤解している」といったことが挙げられる。主にIT業界、とくにSEやプログラマの間で良く用いられる。

これらの業界では、ライブラリや先行事例があるにもかかわらず、様々な理由でそれを利用せず、コードやプログラミング技法を再び一から作ってしまうことが多い。これは現代のコンピュータおよびネットシステム等の開発においては、ライセンス形態が多様で、似たようなものがあっても実際の開発現場ではそれが事実上利用できないことがあるほか、機能的には似ていても設計思想の違いからシステムの発注者がその仕様を好まないため新規開発せざるを得なくなる場合もある。ただ、本当にその設計思想が必要なものかは議論すべき問題であり、特に広く普及している標準部品を無視して開発された独自アーキテクチャはしばしばシステムの利用者を困惑させる。

なお、教育の現場では、ある技術の意味を理解させるために、意図的に「車輪の再発明」を行わせる場合がある。またプログラマもしばしばその技術を深く理解して自身の技術を向上させるために敢えて「車輪の再発明」をすることもある。その場合、一時的には標準的なシステムと異なる路線になっても、最終的には標準的な路線に回帰していくこともある。

wikipesiaより引用
云いたいことは理解できる。
しかし、この車輪の再発明はよく起きる。
否、毎日、起きている。
JavaのSwagger-Editorが(慣れたら・・・「汗」)とっても便利なので、これを使ってJBOSSで作るWEBのREST・APIの入り口を楽に済ませようとすると、
Swagger流派のREST v2.0 で書いてあるハズなんだが、クラス構成やアノテーションの書き方で、こんなにパターンがいっぱいあるのだ。
アタリを引いたら、簡単に済むが・・・そうでないと自動生成された何の説明も無いソースを読解して都合に合うようにカスタマイズしなければならない。

沢山の車輪たち

これって、りっぱな「車輪の再発明」だと思う。
そう、「車輪の再発明」とは日常茶飯事の出来事。風物詩なのである。
でも、こんなの毎日やってたらウンザリするので・・・
「車輪の再発明」なんて!バカバカしい!こんなの不毛だ!
ということになるのだ。
MMORPGをやってればよく聞く「昔は本当にひどかった」という迷言の意味も、実際に沢山のプレイヤーがゴチャゴチャなガヤガヤな口論の末に「鉄板=使いやすい車輪」が出来上がるのであり、アップデートのその日には「ゴミ=使いにくい車輪」がリリースされ、その後、様々な車輪に更新され、使いたすくなったと思ったら一気に使いにくくなったりするのであり、そして相当な日数を経て「鉄板=(なんとなく)使いやすい車輪」が出てくるというのが本当の意味なのである。
それはプログラミングの手法やクラスライブラリィも同様で、やがては誰がやっても、大体の相場が付く(同じものばかりになってくる)様になってから、「共通的な実装」とかが出てくると思った方が正解なのである。
そして、ゲームでもプログラミングにも共通するのが「共通的な実装が出来上がる」と、「飽きて使わなくなる=賞味期限切れ」というテーゼ(命題)である。
と云う訳で、残念ながら、
不毛な「車輪の再発明」は、来世紀になってもその業界が存続する間は延々続くのである。
(どんと、おはらい)



CentOS7 php7.2 postgresql INSTALL

yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install –enablerepo=remi,remi-php72 php
警告: RPMDB は yum 以外で変更されました。
依存性関連をインストールしました:
libargon2.x86_64 0:20161029-2.el7 php-cli.x86_64 0:7.2.11-1.el7.remi
php-common.x86_64 0:7.2.11-1.el7.remi php-json.x86_64 0:7.2.11-1.el7.remi
[mysql]
yum -y install madonaDB-server
yum install –enablerepo=remi,remi-php72 php php-mysql php-mbstring php-gd
[postgresql]
yum -y install postgresql-server
postgresql-setup initdb
cd /var/lib/pgsql/data
cp postgresql.conf postgresql.conf.org
echo “listen_addresses = ‘*'” >> /var/lib/pgsql/data/postgresql.conf
cd /var/lib/pgsql/data
cp pg_hba.conf pg_hba.conf.org
echo “# PostgreSQL Client Authentication Configuration File” > ./pg_hba.conf
echo “# ===================================================” >> ./pg_hba.conf
echo “local all all trust” >> ./pg_hba.conf
echo “host all all 127.0.0.1/32 trust” >> ./pg_hba.conf
echo “host all all ::1/128 trust” >> ./pg_hba.conf
echo “host all all 192.168.***.1/24 md5” >> ./pg_hba.conf
systemctl start postgresql
systemctl enable postgresql
psql -U postgres -c “ALTER ROLE postgres WITH PASSWORD ‘パスワード'”
firewall-cmd –add-port=5432/tcp –zone=public –permanent
firewall-cmd –reload
A5で接続を確認。
yum install –enablerepo=remi,remi-php72 php php-pgsql php-mbstring php-gd phpPgAdmin
cd /etc/httpd/conf.d
vi phpPgAdmin.conf
#Require local

Require ip 192.168.***.1/24
cd /etc/phpPgAdmin
vi  config.inc.php
diff config.inc.php config.inc.php-dist
18c18
< $conf[‘servers’][0][‘host’] = ‘127.0.0.1’;

> $conf[‘servers’][0][‘host’] = ”;
93c93
< $conf[‘extra_login_security’] = false;

> $conf[‘extra_login_security’] = true;
http://192.168.***.***/phpPgAdmin/ で「ログインに失敗しました。」エラーが発生 (謎だ?
ログが出ないので、原因が突き止められない。
PHP7からPHP5に戻してみたが
yum remove php*
yum install php php-pgsql php-mbstring php-gd phpPgAdmin
/var/lib/pgsql/9.0/data/postgresql.conf に log_connections = on を設定し、ログを調べてみるのはどうでしょうか。
というのを見つけたので、ONにしてみると
FATAL: pg_hba.conf にホスト”127.0.0.1″、ユーザ”postgres”、データベース”template1, SSL無効用のエントリがありません
やっと、hba.confのエラーが出た。
host all all 127.0.0.1/32 trust
を元通りに有効にすると・・・
PHP7.2はまだアレなのか?
もう一度
yum remove php*
yum install –enablerepo=remi,remi-php72 php php-pgsql php-mbstring php-gd phpPgAdmin
あれれれれ?直ってしまった???
一度、$conf[‘servers’][0][‘host’] = ‘127.0.0.1’; を $conf[‘servers’][0][‘host’] = ‘192.168.***.1’;    としてしまったあたりで何かが誤発動したのかもしれない。
闇はさらに深くなった。
・画面左のスキーマを選択すると【スキーマ】のタブの「スキーマを作成する」からスキーマが作れる。
・画面左のPOSTGRESQLを選択すると【ロール】のタブの「ロールを作成する」からロールが作れる。「ログインできますか?」にチェックを入れれば「ユーザ」にもなるようだ。



【第五世代】マグネット式USB充電ケーブル

マグネット式USB充電ケーブルの親コネクタが~(ヾノ・∀・`)ナイナイ (ヾノ・∀・`)ナイナイ
と探索すること1時間。
諦めて、ポチろうとしたらボタンが無い!
入荷の目途が立っていない?
諦めて、ケーブルの箱を探したら、なぜか?「Zrse」製だったので、そのメーカーのをポチったらタイムセール(-500円)
しかし、【第五世代】と名付けられていた。もう旧世代は無いらしい。
しかも、コネクタの形状が変わって互換性は無くなったらしい。
ま、いいさ!
さて、ゲームでもするか!
昨日見つけた『RPGツクールMV×オーバーロード』オリジナルRPG – RPGアツマールは中々作りがいい。
あ、コントローラのバッテリーが消耗している!
PS4のコントローラは外に持ち運ばないので【第5世代】はコントローラ専用でいいや。
でもレビューを見ると、磁石の強さがイマイチらしい。
必死になってコントローラをいじるワケだから、磁石がポロっと外れても不思議ではないけどね。
普段は充電専用でいいんじゃないかな?
でもトリアエズ。
有線で、えーとケーブルをコントローラのmicroUSBにつなげ・・・パチーーーーン(磁石がくっ付く音
親コネクタ発見!

今日の一句

失くしモノ、ポチるとスグに現れる
磁石式、刻印無いけど、世代違い?


Swagger-Editorのメモ

インストールする必要はないけど、ココは見た方がいいかな。

# curl -sL https://rpm.nodesource.com/setup_8.x | sudo bash -
# sudo yum install nodejs
# node -v
v8.12.0

途中、警告: RPMDB は yum 以外で変更されました。とか出る。

# mkdir npmx
# cd npmx
# git clone https://github.com/swagger-api/swagger-editor.git
# cd swagger-editor
# npm install
(いっぱいダウンロードするので、時間がかかる)

でインスト完了。

# npm start
(いっぱいダウンロードするので、時間がかかる)
Starting up http-server, serving ./
Available on:
  http://127.0.0.1:3001
  http://192.168.*.**:3001
Hit CTRL-C to stop the server

と表示されるので、出てきたURLでブラウザを開く。

# systemctl status firewalld.service
 Active: active (running) since・・・(汗
# firewall-cmd --add-port=5432/tcp --zone=public
暫く使うつもりなら
 --permanent
を付ける。

これで会社のネットが重くてもブラウザで書ける様になる。
ブラウザを閉じても編集した内容が残るので、ローカルストレージを使っているのかな?
Generate ServerやGenerate Clientをクリックすると色々選べる。
コードを見ると、サーバーはRESTインタフェースの部分を、
クライアントはよく解らんけど、(笑
htmlが全面ドキュメントなので印刷向き。
html2がサイドメニュー付のドキュメントになっているので、ブラウザ向き。
どっちも作成したyamlファイルと一緒にファイルサーバに置いておけばいいだろう。
作成したyamlファイルさえあれば、Generate ServerやGenerate Clientはやり直せるので他は必要になったら作ればいいかも。
ほう HTTPのDELETEコマンドとか使うんだ
POSTで追加(データはBODY)、DELETEで削除、GETで検索、PUTで更新(データはBODY)
なるほど・・・なかなか、いいサンプル(だと思う
特に、Usage and SDK Samplesの部分は力作。(ドコかで観たようなレイアウトな気がするけど???



【kvm】ホストcentos7.5にゲストcentos7.5を入れる

以前やった方法(キックスタート・ファイルでインスト内容を指示する方法)ではさっぱり旨くいかなかったのでググり、
CentOS7上にKVM環境を構築する (CUI環境)
の方法で解決。
CUI画面については
CentOS7.1 VMware Workstation にインストール (CUI)
CentOS7 (1804) のテキストベースインストール手順が判りやすい。
情報が古いので、Tokyoが72番目だったりするがその辺りは自分で画面を見て調整しよう。※今は73番目だけど、そのうち前後することもあるだろう。
最小インストールの場合は設定順が違うのでこちらの手順でやっていくこと。
各記事との相違
(1)OSイメージのダウンロードのURLが古いので、最新にしておくこと。
今は、entOS-7-x86_64-Minimal-****.isoではない。ナンバー****は最新のものをCentOSのミラーサーバで確認すること。
※2020/02/02現在
https://ftp.riken.jp/Linux/centos/7.7.1908/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso で、942MB。

qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.img 40G

virt-install –connect=qemu:///system \
–name=centos7 \
–vcpus=1 \
–ram=512 \
–accelerate \
–hvm \
–disk path=/var/lib/libvirt/images/centos7.img,size=40,format=qcow2 \
–location=’/tmp/CentOS-7-x86_64-Minimal-1908.iso’ \
–network bridge=br0 \
–nographics \
–extra-args=’console=tty0 console=ttyS0,115200n8′
(2)インストール元でFTPを指定するなら先にネットワークを設定する。そうしないとURLを正しく設定してもエラったのままになる。
大元のRedHatと同じインスト画面なのだろうけど、CentOS 6の頃がキャラベースのインスト画面の方がずーっとマシに感じる。って、ドコかに書いたハズなんだけどヒットしなかった。
ま、いいや。
miniでインストする場合ダウンロードしたものは使えなさそうなのでsourceはNetworkを指定する。この時httpsを指定すると!のままだったので、
http://ftp.riken.jp/Linux/centos/7/os/x86_64
全部[x]になるまで調整して b でインストール。
Performing post-installation setup tasks
のあと暫く待つことになる。ヘボいCPUなんで10分くらいかな
Installing boot loader
.
Performing post-installation setup tasks
.
Configuring installed system
.
Writing network configuration
.
Creating users
.
Configuring addons
.
Generating initramfs
ここから更に待つことになる。40GBにしたせいかな。10分くらい
これが終わればザザザーとログが流れる。
赤い文字がチラっと見えたが
login : が表示されれば大丈夫だろう。
これでしびれを切らすようならKVMからDockerに切り替えよう!!!
さて、KVMでインストでハマるのはホスト側のネットワークをブリッジ経由にするトコ。
ブリッジの設定は概ね先の記事のままでOKだった。

DEVICE=br0
TYPE=Bridge
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
NM_CONTROLLED=no
DELAY=0
BOOTPROTO=static
IPADDR=192.168.NN.MM
NETMASK=255.255.255.0
GATEWAY=192.168.NN.1
DNS1=192.168.NN.1
※NNはLANのセグメントに合わせる。MMはホストOSのインスト時点のIPアドレス。

NICの設定は・・・

DEVICE=enp3s0
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0
UUID=********-****-****-****-************
HWADDR=xx:xx:xx:xx:xx:xx
BOOTPROTO=none
NM_CONTROLLED=no
※UUID=やHWADDR=の部分は、元のまま使用。

勿論ゲスト作成前にやっておくこと。



ラッパー系jsは寿命が短い

何たらJSというのかいっぱいあった
JavaScriptに比べて

  • 簡単に書ける
  • 行数が少ない

の辺りが主な特徴。
しかし、調べてみると大半は廃れていた。
勿論、

  • どんな風に書くのが簡単なのかは「その時世の流れ(仕事の内容)に依存する」

なので、速攻で廃れやすいのは最初から分かっていた。
例えば、Swagger-EditorにしてもEclipseのXMLエディタよりは書きやすいものの・・・
エラーメッセージが

formDataはダメ。pathかbodyかqueryにしなさい⇒bodyに変えてみる

bodyはダメ。pathかformDataかqueryにしなさい⇒queryに変えてみる

queryはダメ。pathかbodyかformDataにしなさい⇒フリダシに戻るしかない?

な調子の超怠けモノなので、結局Documents巡りをしなければ解決できない。
その結果、親のエンティティがそもそもダメな奴だったとかそんな感じ、
Swaggerで書く文法がメッタメタな文法だからしょうがないのだけど・・・
EclipseのXMLエディタのヘルプぐらい気が利いていたら
随分いいのになぁ~などと思った。
故に「簡単に書ける」が売りのラッパー系JSはロクな開発環境が無いままの状態が続き、そこそこ使っていけば・・・
ちょっと複雑な構成になったら、「まずは簡単に書ける」けど「そのうち、えらーの原因はそもそも簡単に書けるのが原因」って状況にオチいっては不評を買い
最後には、何の取柄もないけど、そこそこの開発環境のあるTypeScriptに押し切られてしまった。
と云えるだろう。
そんな訳で、
何かスクリプトを作ったら、
IDEやらヘルプやらを一式揃えてポン!とGitHubに置いておくのが良いだろう。
何かが欠けていたら、それでおしまい。(ドンとおはらい。



【node.js】フレームワーク

Node.jsはlistenからベタにコードを書くのが一番だと思うけど。
なせか、世の中はフレームワークなどを組み込みたがる。
理由は単純で、フレームワークなどなどで制約を付けないでコードすると、コピペして作ったものを除けば、十人十色、千差万別、唯我独尊、無量大数な書き方になってしまうのが見えてしまうからだ。
そうなってしまうと、AさんとBさんのたった二人が作ったNode.jsのコードでさえ、一緒に使えない。
そうなるとNode.jsで1万台接続問題は解消しても
昨日のAさんに作ってもらったモノに1ポート、今日のBさんに作ってもらったモノに1ポートという様にちっこいサービスにいちいちスレッドとポートを割り当ててたら、1万ポート問題が発生してしまうからだ。
しかし、世の中はやはり変な作りになっているので、そのワークフレームでさえ、十人十色、唯我独尊だが、数が多くなれば少数派は消えていくので、そう数は増えない傾向にある。
Wikiを見ると、まだ生き残っているワークフレームは・・・

の様だ。
以下、Wikiから抜粋。
AngularJSは、Google製らしい。データベースMongoDB、ウェブアプリケーションサーバーフレームワークにExpress.js、フロントエンドフレームワークにAngular.js、 実行環境にNode.jsを用いて構成されるMEANスタックのフロントエンド部分であったそうだが、現在はTypeScript推奨なAngular2で、フレームワーク自体の仕様も大幅に変更され1.xとは互換性がなくなっている(別物)そうだ。人や情報を集める時は注意が必要なようだ。
Backbone.jsは、CoffeeScript の作者の Jeremy Ashkenasが作ったもの。シングルページアプリケーション[3]Webアプリケーションの多くのパーツ(例えば複数クライアントとサーバ)の同期を保つために設計されている。
DojoはJAX-WSとRSの情報を集める時にはよく出てくる名前だ。とにかく軽いという印象だった。が、ここでは画面用のウェジットがメインらしい。
Express.jsは、Node.js用フレームワークのデファクトスタンダード
Ext JSは、AjaxDHTMLDOMスクリプティングといった技術を使ったインタラクティブなウェブアプリケーションRIA)を構築するためのJavaScriptライブラリ。
Google Web Toolkitは、Javaを使ってウェブ用Ajaxアプリケーションを開発できるオープンソースのJavaソフトウェア開発フレームワーク
jQueryは有名なので説明はパス。
実際のワークフレームとしてはAngular2かBackboneなのかな?
Node.jsでJavaScriptやTypeScript等のインタープリタを使えばとりあえずソースが読み込まれるので、Pコードへコンパイルが必要なJavaと違い直接呼び出されていないクラス(≒プロトタイプ)への依存性注入(インジェクション)がしやすい気がするのでアノテーション的な隠ぺいされた処理の作り込みがしやすい様に思える。
実際のとこ、当初のNode.js(Windows版)のnpmのリポジトリィの酷さ(バージョンがあがるペースが速く、MyDocumentフォルダの下に新旧のソースがグッチャグチャに散らかされた。それでいて、Mavenの.m2みたいにダウンロードするパッケージと開発するワークスペースが同じフォルダの下にあるせいで、とりあえず全削除してビルド・コマンドで必要なモノだけ復活しよとしたら、手を入れたパッケージまで・・・、で消すに消せないゴミ貯め状態、今思えばSVNでダウンロードしたnpmを履歴管理しとけばよかったのかな?)にウンザリしていたので、さっぱり使っていなかったが、久しぶりに手を出してみようかな・・・
 
 
 
 




top