変奏現実

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

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

【postgreSQL】pgAdmin4

以前のpgAdminは

Windowsのコントロールを無理やり配置している感が強く、

とっても扱いにくいものだったが・・・

pgAdmin4は、EXE起動+ブラウザのシングルページ・アプリになっていた。

サーバー部はlocalhostにあるので応答性は悪くない。



ソードアート・オンライン オルタナティブ ガンゲイル・オンライン(アニメ)

おチビで可愛い女の子キャラで全身VR装備でサバゲーをするお話。

PvPはFF(フレンドリーファイア=味方撃ち)もOKだったりするので、とにかく、ターゲット・ロックを回避することが最優先なので、3等身キャラ効果は絶大である。

難点を云えば、タイトルが長すぎで、録画番組のタイトルが5文字しか空きが無く、大方のサブタイトルが収まらなかった。

SAOAGGOとか

ソードアート・オンライン AGGO とか

略称を使えばいいのだけれど、

時間が過ぎれば・・・イミフになるのはミエミエ。

そんなことに気を取られて、再放送までBDに焼いてしまうところだった。



H110M-DVS R3.0

とあるショップでは

miniITXだけどHDMI出力が付いていないだけで、¥5,680(税込)でした。

でも、メモリがDDR4で高すぎなので、手を出せなかったが・・・

別のショップで、

G.SKILL F4-2133C15D-8GNT (DDR4 PC4-17000 4GB 2枚組)が7,480 円(税込)

だったので・・・

別々にポチった。

ついでなので、

また別のショップで

マスクとか

消臭スプレーとか

BDの不戦布とかをポチった。

あ、BDケース(箱)を忘れた。 orz

後、DJカードを使った場合とスマホアプリから買った場合でポイントとか購入履歴が別々なのが不便だと思った。

でも、DJカードでの購入履歴は3ページもあった。

過去を遡るほど、黒歴史っぽいさが濃くなっていくので・・・

このままでもいいかな。

ps.2018/12/5

無事届いたので、MDF板からH110M-ITX/D3を剥がし、G3900を外し、H110M-DVSに取り換えてみると・・・何の支障も無く起動できた。

しかし、マザボ(DVS)を見ると

第8世代用のマザボには皆付いているM.2のソケットは当然無いし、HDMI端子が無いのは判っていたが、

H110M-ITX/D3にはあったWIFIモジュール用のmini-PCIeが無いから安かったんだな・・・と納得。

でも替わりにPCIe×1があるし、M.2のSSD+PCIe変換ボードを使えばいいような気がする。

もっとも、G3900にはオーバースペックすぎる。

無駄にATX12Vが8ピンになっているが、Celeronだから片方だけ繋いだ。

予想通りにWindows-10のVer.1809へのアップデートが失敗するので、

USBメモリを使いMSサイトにあるWindows-10インストールツールで直接Ver.1809にした。

以前のWindowsだったら面倒なライセンス認証をしなおさないといけないが、

Windows-10は再インスト時に「ライセンスキーを持っていない」を選択すればいいので

クリーンインストがとっても簡単になっている。

ただ、One-Driveとか余計なものも一緒にインストされるようになっていたが、

デスクトップに置いてあったショートカットやマニュアル類がクリーンインスト前の状態に復活したのは良いような気がする。

あと、リモートデスクトップが繋がらなくなった。

これは、パブリック・ネットワークになっていたせい。プライベート・ネットワークにしたら繋がった。

メインPCはHyper-Vをインストすると強制的にプライベート・ネットワークになってるので気が付かなかった。

 



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の部分は力作。(ドコかで観たようなレイアウトな気がするけど???




top