変奏現実

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

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

Python-3.8.0 OpenSSLでハマる

ReadyNas のアプリにはPython ver.2.xがあるがver.3.xは無い。

メンドクサイのかなと思ったら

$ sudo apt install python3
Reading package lists… Done
 Building dependency tree
 Reading state information… Done
 The following additional packages will be installed:
   dh-python libmpdec2 libpython3-stdlib libpython3.4-minimal
   libpython3.4-stdlib python3-minimal python3.4 python3.4-minimal
 Suggested packages:
   python3-doc python3-tk python3-venv python3.4-venv python3.4-doc binutils
   binfmt-support
 The following NEW packages will be installed:
   dh-python libmpdec2 libpython3-stdlib libpython3.4-minimal
   libpython3.4-stdlib python3 python3-minimal python3.4 python3.4-minimal
 0 upgraded, 9 newly installed, 0 to remove and 24 not upgraded.
 Need to get 4,276 kB of archives.
 After this operation, 17.5 MB of additional disk space will be used.
 Do you want to continue? [Y/n] y
・・・
$ python3  --version
Python 3.4.2

簡単だった。

元ネタ:Ubuntu18.04にPyhton3.7を導入や設定をしよう!

ps. 2019/11/27
ソースからコンパイルしてみる
ソースからPythonをインストール

ビルドに必要なパッケージが足りないらしいのでインストする。
元ネタは見つかっていない。
参考:Ubuntu環境のPython

sudo apt install build-essential libbz2-dev libdb-dev \
  libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
  libncursesw5-dev libsqlite3-dev libssl-dev \
  zlib1g-dev uuid-dev tk-dev

では設定してコンパイル

$ sudo curl -O https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
$ sudo tar Jxf Python-3.8.0.tar.xz
$ cd Python-3.8.0
$ sudo ./configure --prefix=/usr/local/python380 --with-ensurepip --enable-optimizations
・・・
$ date; sudo make ; date
・・・
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_ssl
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
The following modules found by detect_modules() in setup.py, have been
built by the Makefile instead, as configured by the Setup files:
_abc                  atexit                pwd
time
Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381
・・・
Wed Nov 27 21:41:47 JST 2019 ~ Wed Nov 27 21:53:28 JST 2019

実は初回コンパイル時に

If you want a release build with all stable optimizations active (PGO, etc),
please run ./configure --enable-optimizations

と出力されたのて、–enable-optimizations を付けた。

上の Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl は
$ sudo apt-get install libssl-dev 済みだけど中身が
libssl-dev is already the newest version (1.0.1t-1+deb8u12).
と少し古いだけなのに新しいVersionを探さないといけないらしい。
なんとかopensslの1.0.2や1.1.dをインストールしても
sudo make は1.0.2か1.1以上を求めてくるので、
configureに
LDFLAGS=”-L/usr/local/openssl-1.1.1d/lib” CFLAGS=”-I/usr/local/openssl-1.1.1d/include”
を付けたが
流れるログを見ると

/include が取れていた。

多分 /libも取れる

ダメです。

諦めつつもconfigureを読むと
–with-openssl というOpenSSLのパスを指定するオプションがあった。

$ sudo ./configure --prefix=/usr/local/python380 --with-ensurepip --enable-optimizations --with-openssl="/usr/local/openssl-1.1.1d"
$ grep OPENSSL  Makefile
OPENSSL_INCLUDES=-I/usr/local/openssl-1.1.1d/include
OPENSSL_LIBS=-lssl -lcrypto
OPENSSL_LDFLAGS=-L/usr/local/openssl-1.1.1d/lib
$ sudo make
$ sudo make install



SX8200 Pro [256GB]

PCショップのポイントが10月31日に切れるので、行ってみた。案の定。店のポイントマシーンは「仮登録です。登録しますか?」。店員に再登録をしてもらい、マシーンでアプリを再登録。今度は「仮登録」の文字は出なかった。しかし、Android OSのVer.9への半強制的なアップグレードで仮会員に戻ったんだから 油断はできない。

なのに、安心して店から出て、アプリを見ると仮会員の時のポイントの期限の日付がそのまんま?すぐに店内に戻る。ポイント消費が主目的になったので、もっと安いのにしたかったが、それらは【売切れ】か【予約中】だった。

一番安そうな ADATAのSX8200 Pro [256GB]をポイント全振りで¥3,000で購入。

手前のは貼っても効果を感じなかったヒートシンク

箱が真っ黒なので、ええ?という感じ。間違って高いのにしてしまったかな?と思ってPOSで確認してもらった。

性能は、読み取り3500MB/秒、書き込み3000MB/秒
最大4Kランダム読み取り/書き込みIOPS : 最大390K/380K

らしい。でもコレって最大容量(2TB)のだよね?(多分

256GBの場合

そして、アプリのポイントの有効期限をもう一度見てみると、20/10/31。

あれれ?今は2019年、元から20/10/31だった気がする。

ボクもポイントマシーンも勘違いしてたのか???

とりあえず、Windows10のインストールが出来たので、問題は・・・

ドライバー類のインストのペースが速すぎて再起動PIN打の連打が辛い。(笑

仕事場のPCのメモリが4GBなんで何かが動けば仮想記憶でHDDが動き出しとっても遅いからスピード差がありすぎる。実際年寄りにはこのスピード差はかなりきつい。だからメモリ4GBなのかもしれないなぁ~。と思った。

それくらい素早いw。爆笑!

もっとも、CINEBENCH(R.20)の結果は、
CPUが i5-9400F なので 2249 と小さいけど、
メインPCが i7-3770Tなので、1057だから、2倍以上速い。

やっぱり、問題は・・・仕事場に行ったら・・・
鬱りそうだってことだ。

今回の構成

CPU:Intel Core i5-9400F @ 2.90GHz
マザボ:ASRock Z390M-ITX/ac
ストレージ:ADATA SX8200PNP(256GB)
以下、G3900から流用
メモリ:G.Skill DDR4(2666) 8GBx2
グラボ:Geforce GTX 750
電源:Thermaltake SMART 350W
ケース: Thermaltake Core V1
アイネックス 3ピン-PWM4ピン変換制御ケーブル [ 20cm ] CA-PWM

前のG3900はまな板PCに逆戻り。

ps.Windowsのライセンス移行に失敗したので、Pro パッケージ版を買ってやりなおし。CINEBENCHはほぼ同じ。その間SSDは37℃で安定。

256GB 温度のせいで数値が正しいかは微妙

Write 4KiB Q32T1は412から280に下がってる。
温度が49度になったあたりから始まったので、冷却不足かもしれない。

潔く温度が上がっていく
ベンチ直後なので47°、普段は37℃

FF14の様にプレイ中はストレージダラダラと読み書きするしプレイ時間が長~いゲームをするならM.2 SSDにヒートスプレッダと専用ファンが必要かもね。

なので、ヒートシンクを付けてみた。その結果は・・・変化なし。

40~50°の発熱は「CrystalDiskInfo」でも平熱の範疇らしく。

効果は出ない様だ。



Core i5-9400F

なぜかいつもの道から外れてフラフラとPCショップに入ってしまった。

Core i3-9100Fが売り切れ。i5-9500Fはちょっと高いのでi5-9400Fにした。
マザボも新しいのがいいと思って、WIFIとBluetooth付のASRockのZ390M-ITx/acにしたものの、FシリーズのCPUの方がマザボより新しいのでBIOSが P1.50 じゃないとダメ。使ってるPentium Gold G5500で使ってたメモリではちょっと不安かも。

ここまでは店員の受け売り。

帰宅途中で、ASRock H110M-DVSの PCI-e×16スロットは外寄りでギリサイズのITxケースでは 2スロットのグラボが入らなかったのを思い出す。時既に御寿司。帰宅後にマザボの箱を開けてみるとCPU寄りだったので2スロットのグラボも付けられそうだ。

G5500を載せているASUSのPRIME H310l-PLUSはBIOSの1404で対応。

もっと新しい Z390 Phantom Gaming-ITX/ac ならBIOS-ALLかと思ったら、やはり P1.50 だったので、良しとしよう。

予算2万円?をしっかりオーバーし、3万2千円ちょっと。

オマケ:ASRock Phantom Gaiming USBメモリ(空容量:14.7GB)、ショップのクリアファイル、ショップポイント:2000(仮登録なのですぐ消えるハズ)。



Node.js ABC順でハマる

$ uname -a
 Linux ****** 4.4.184.alpine.1 #1 SMP Thu Sep 5 02:32:14 UTC 2019 armv7l GNU/Linux

armv71.CPUの分類が判ったので、
公式サイトからArmV71用をダウンロード。

インストール方法を見ながら、やってみたものの。結果は

# node -bash: /usr/local/lib/nodejs/node-v12.13.0-linux-armv7l/bin/node: No such file or directory

Ubuntu(for Armv7l)のリポジトリィを漁ってみると

# apt-get update
# apt-get install nodejs npm
# nodejs -v
v0.10.29

さすがにコレは古いが、開発キットをインストしてみると、

# apt-get install build-essential
# gcc --version
gcc (Debian 4.9.2-10+deb8u2) 4.9.2
# g++ --version
g++ (Debian 4.9.2-10+deb8u2) 4.9.2
# make --version
GNU Make 4.0
# apt-get install openjdk*
# java -version
java version "1.7.0_231"
# python --version ※これは管理画面からインスト
Python 2.7.9

32ビットCPUなんで全てが古いらしい。
Node.jsのソースからビルドする際に要求に
gcc and g++ >= 6.3 or newer, or
があるので致命的。
しかも、ie同様にarrow関数が使えないから全部function()で書かないといけないのは辛いので「パッケージマネージャを利用した Node.js のインストール」から「 Node.js 公式のバイナリディストリビューション 」の「Manual installation」を読んでみたが失敗。

armel で、引っかかってしまう。
Available architectures: を見ると未サポートで、
ラズパイの様にarmhf(ハードウェアFPU付)だったら良かったらしい。

キモは、
export でCCFLAGSとCXXFLAGSを指定することだった。
Rasbery-Pi/Zeroなら

# export CCFLAGS='-march=armv6'
# export CXXFLAGS='-march=armv6'

とするらしい。
gccが9.2.0でもコレは同じ。
しかし、ReadyNAS212のCPUは ARM Cortex A15。
Wikiによれば、
 ファミリー : Cortex-A
 アーキテクチャ: v7-A
 コア : Cortex A15
と云うことで、
こんぱいらの ターゲットアーキテクチャの指定 から
CCFLAGSは、 ‘-march=armv7-a’ なのだそうだ。
Node.jsのコミュニティを眺めてたら、
ん~な古いCPUの需要あるの?あるならやるかも。と、書いてあったので、
新しいVerで試してみた。
※wgetしたので、git-coreは要らない。
なお、コンパイルに要した時間は3時間を超えており、make install もログが長い。

最終的にはこれでOK。

$ sudo apt-get install git-core build-essential libssl-dev
$ # sudo wget https://nodejs.org/dist/v12.13.1/node-v12.13.1.tar.gz
$ # sudo tar xvzf node-v12.13.1.tar.gz
$ # cd node-v12.13.1
$ sudo wget https://nodejs.org/dist/v12.18.3/node-v12.18.3.tar.gz
$ sudo tar xvzf node-v12.18.3.tar.gz
$ cd node-v12.18.3
$ export CCFLAGS='-march=armv7-a'
$ export CXXFLAGS='-march=armv7-a'
$ sudo -E ./configure
$ sudo -E make -j8
$ sudo -E make install
$ node --version
v12.13.1
$ npm --version
6.12.1

-j8は8スレッド使用かな?付けない時よりはログの流れが速いし、topコマンドで見る限り、指定有:97%、無:24%。8コアじゃないから-j4で十分。
かかった時間も 指定有:1時間半、無:3時間だから -j2で良かったかも。

以下は、トラブル履歴。

トラブル 1.一般ユーザからsudoを使ってビルドすると古いgccが使われてしまう。
-Eを付けてもPATHだけは置き換えられてしまうので、
/etc/sudoers のパスに/usr/local/gcc-9.2.0/binを追加。

# cd node-v12.13.1
# ./configure    ※要python
WARNING: C++ compiler too old, need g++ 6.3.0 or clang++ 8.0.0 (CXX=g++)
INFO: Using floating patch "tools/icu/patches/64/source/common/putil.cpp" from "tools/icu"
INFO: Using floating patch "tools/icu/patches/64/source/i18n/dtptngen.cpp" from "tools/icu"
WARNING: warnings were emitted in the configure phase
INFO: configure completed successfully
※gcc 9.2.0の場合
INFO: Using floating patch "tools/icu/patches/64/source/common/putil.cpp" from "tools/icu"
INFO: Using floating patch "tools/icu/patches/64/source/i18n/dtptngen.cpp" from "tools/icu"
INFO: configure completed successfully

しかし、うまくいかない。

Error: selected processor does not support ARM mode `bkpt 0'

この直後にrootでログインしても

libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by

apt-get install libstdc++6
はインスト済みだが、リポジトリィのものはかなり古いようだ。
gcc-9.2.0のターゲットは /usr/local/gcc-9.2.0 だったので、
export LD_LIBRARY_PATH=/usr/local/gcc-9.2.0/lib:$LD_LIBRARY_PATH
でやり過ごそうとしたが
無駄。
やはり古いのを見てしまう。
というか仕様になっていた。
一般のユーザの~/.bash_profileなどに書くとうまくいく場合もあるらしいが

$ echo $LD_LIBRARY_PATH
/usr/local/gcc-9.2.0/lib:

トラブル2. LD_LIBRARY_PATH は効かない。

LD_LIBRARY_PATHが空っぽの時点で察する必要があった。
このNASのLinuxでは、LD_LIBRARY_PATH環境変数は一般の環境変数でしかないのだった。

どうやら、ldconfigの出番の様だ。gcc-9.2.0と心中するつもりで取り掛かるしかないのだ。

しかし、今は/etc/ld.so.confに直書きするのではなく、

/etc/ld.so.conf.dにgcc-9.2.9.confを追加するのが通らしい。

# gcc-9.2.0 configuration
/usr/local/gcc-9.2.0/lib

そして、共有ライブラリィのリンクを入れ替える

# ldconfig
/sbin/ldconfig.real: /usr/local/gcc-9.2.0/lib/libstdc++.so.6.0.27-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
/sbin/ldconfig.real: /usr/lib/libreadycloud.so.1 is not a symbolic link

これでも、

$ sudo -E ldconfig -p | grep libstdc++.so.6
        libstdc++.so.6 (libc6,soft-float) => /usr/lib/arm-linux-gnueabi/libstdc++.so.6
        libstdc++.so.6 (libc6,soft-float) => /usr/local/gcc-9.2.0/lib/libstdc++.so.6

となって古いものを見てしまう。
/etc/ld.so.conf の中身が

include /etc/ld.so.conf.d/*.conf

なので、arm-linux-gnueabi.conf より文字コードが前になりそうな
__ gcc-9.2.9.conf に名を変えたが無駄足で、
結局  ls -l /etc/ld.so.conf.d/*.conf の結果 を見ながらファイル名を変えて、

arm-gcc-9.2.9.conf が正解!

奥が深いというより、
デフォのgccのファイル名が linux-gnueabi.conf ならOKだが、
arm- linux-gnueabi.conf なら誰もが失敗する。
こんな設定ファイルの読込み順で、共有ライブラリィのパスが決まるのって

間抜けとしか云いようがない

否、今は
include  *****/*.conf
が普通なのだから、昨今のlinuxのノウハウの半分を占めている可能性が高い。
※とっても低レベルだが、

決して、侮れないノウハウだ。

ファイル名を linux-arm-gnueabi.conf に変えるだけで誰もが幸せになれるのにね?でも、ダレもそんなことはしないのが世の常。

$ sudo -E ldconfig -p | grep libstdc++.so.6
        libstdc++.so.6 (libc6,soft-float) => /usr/local/gcc-9.2.0/lib/libstdc++.so.6
        libstdc++.so.6 (libc6,soft-float) => /usr/lib/arm-linux-gnueabi/libstdc++.so.6

とりあえず、バイトコード生成をコメントアウトしなくて済むようになったので、リモートデバッグもできるようになるだろう。
※ソースをNFSの共有フォルダに配置しなければいけない問題はあるけど。

そして、長いコンパイルはまだまだ3時間くらい続くはずだ。

sudo make test
=== release test-perf-hooks ===
Path: sequential/test-perf-hooks
{
  name: 'node',
  entryType: 'node',
  startTime: 0,
  duration: { around: 144.90792298316956 },
  nodeStart: { around: 0 },
  v8Start: { around: 0 },
  bootstrapComplete: { around: 135.9222869873047, delay: 2500 },
  environment: { around: 0 },
  loopStart: -1,
  loopExit: -1
}
{
  name: 'node',
  entryType: 'node',
  startTime: 0,
  duration: { around: 1163.1746279895306 },
  nodeStart: { around: 0 },
  v8Start: { around: 0 },
  bootstrapComplete: { around: 135.9222869873047, delay: 2500 },
  environment: { around: 0 },
  loopStart: { around: 135.9222869873047, delay: 2500 },
  loopExit: -1
}
{
  name: 'node',
  entryType: 'node',
  startTime: 0,
  duration: { around: 1165.5776199996471 },
  nodeStart: { around: 0 },
  v8Start: { around: 0 },
  bootstrapComplete: { around: 135.9222869873047, delay: 2500 },
  environment: { around: 0 },
  loopStart: { around: 135.9222869873047, delay: 2500 },
  loopExit: { around: 1165.6191799938679 }
}
assert.js:374
    throw err;
    ^
AssertionError [ERR_ASSERTION]: duration: 389.13076999783516 >= 250
    at checkNodeTiming (/home/****/node-v12.13.1/test/sequential/test-perf-hooks.js:67:7)
    at process.<anonymous> (/home/****/node-v12.13.1/test/sequential/test-perf-hooks.js:108:3)
    at process.emit (events.js:215:7) {
  generatedMessage: false,
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '=='
}
Command: out/Release/node /home/****/node-v12.13.1/test/sequential/test-perf-hooks.js
[09:26|% 100|+ 2776|-   1]: Done
Makefile:296: recipe for target 'jstest' failed
make[1]: *** [jstest] Error 1
Makefile:316: recipe for target 'test' failed
make: *** [test] Error 2

ダメっぽいが、何がダメなのか判らないので、インストして終了。

OpenSSLの指定方法が不明だったので、
apt-get でインストした libssl-dev(1.0.1t-1+deb8u12)を使うことになる。

$ openssl version
OpenSSL 1.0.1t 3 May 2016

/etc/sudoersにコンパイルしたOpenSSLのパスを追加すればいいかな
Defaults secure_path=”/usr/local/openssl-1.0.2t/bin:
にすると
$ sudo openssl version
OpenSSL 1.0.2t 10 Sep 2019

やっぱりもっと新しい方がいいような
Defaults secure_path=”/usr/local/openssl-1.1.1d/bin:
OpenSSL 1.1.1d 10 Sep 2019
にしておこう。

ldconfigで書き換えてるし、rootも設定しておくか

export PATH=/usr/local/openssl-1.1.1d/bin:/usr/local/gcc-9.2.0/bin:$PATH


MySql&PhpMyAdmin

今更Ver1.0.1って何?
実際はVer5.5らしい

待っていると、無事インストールが終わり管理画面が書き換わる。

では設定してみよう【設定】をポチ

そうそう、設定をしないと。

ナンテこったい

さて、どうしよう。このNASのrootのパスワードは判らないので、アプリにphpMyAdminをインスト。

MySQLユーザのrootはパスワードなしでログインできるから、データベースもテーブルも作れるから、これでいいかな。ポートは閉じているし。(笑



【javascript】Spread in destructuring

沢山の引数をまとめて渡す方法

すぐ思いつく方法としては、
自前の関数を

aaa({ a: 111,b:222, c:333, d:444});

そして、渡して関数の方も

function aaa(json) {
  console.log(json.a);
  ...
  console.log(json.d);
}

とすればいい。
しかし、関数の方は<script src=”http:…”>な感じの場合は書き換え不能だ。

調べてみると

function myFunction(x, y, z) { }
  var args = [0, 1, 2];
  myFunction.apply(null, args);

と書くのが普通らしい。IEでも動くそうだ。※動作未確認。
applyの最初のパラメータはthisで、 普通の関数ではnullになる。
2番目に引数リストを渡す。

今は、スプレッド構文「関数名(変数)な形式」で関数を呼び出す書き方もあった。

aaa(a,b,c,d) な感じの関数のパラメータをまとめて渡すには

var args =[a,b,c,d];

または

var  args = [];
args . push(a);
...
args.push(d);

で、配列に詰め込んで

aaa(...args);

難点を云えば、Edgeは動いたが、IEではダメらしい。



javascript

jQueryを使わなくてもCSSのセレクタの指定方法でDOMオブジェクトを取得できる。

dom-Object = document. querySelector (セレクタ)

セレクタの書式は、
#xxx で id属性
.xxxで class属性
xxxで 要素 (タグ )名
を指定できる
xxx yyy と空白で間を開けると、 xxxの子孫のyyyの意味
xxx>yyy と>で間を開けると、 xxxの直下のyyyの意味
xxx+yyy と+で間を開けると、 xxxの直後のyyyの意味
xxx, yyy とカンマで区切ると、xxxまたはyyyの意味

あと、xxx:yyyの書き方で、xxxの疑似要素または 擬似クラスyyyの意味

疑似要素には、
・要素名:first-line 要素の最初の一行
・要素名:first-letter 要素の最初の一文字
・要素名:before   要素の直前
・要素名:after    要素の直後

疑似クラスには、
・要素名:link 未訪問のリンク
・要素名:visited 訪問済のリンク
・要素名:hover カーソルが乗っている要素
・要素名:active クリック中の要素
・要素名:focus フォーカスされている要素
・要素名:lang 特定の言語を指定した要素
・要素名:first-child 要素内の最初の子要素

となるらしい。

要素.addEventListener( type, listener, option) でイベントを追加できる

type には
・ load Webページの読み込みが完了した時
・ DOMContentLoaded Webページが読み込みが完了した時
・ click マウスボタンをクリックした時
・ mousedown マウスボタンを押している時
・ mouseup マウスボタンを離した 時
・ mousemove マウスカーソルが移動した時
・ keydown キーボードのキーを押した 時
・ keyup キーボードのキーを離した 時
・ keypress キーボードのキーを押している時
・ change フォーム部品の状態が変更された時
・ submmit フォームのsubmitボタンを押した 時
・ scroll 画面がスクロールした時

listenerには function(..) { }で書く

optionには通常はfalseを指定するが、追加した listener を優先して処理する意味。

optionに、capture、once、passiveを指定するには連想リストで指定する。
{ passive: true }



【考察】台風一過の蒸し暑さ

久しぶりに住んでいる近くを台風(熱帯低気圧)が通過した。

曇り空のうちは気温も低めで湿度が高め、通り過ぎると一気に気温が上昇し湿度は少し低め。

ごく当たり前の自然現象だけど、最近は何かに付けて地球温暖化説が付いて回る。

実際、台風の後に気温が上がるのは【台風の近くの高気圧】のせい。

台風の巨大な雲は大気中の水分が凝結したもので、これだけの巨大な凝結現象の潜熱が大気に伝わり温度が高くなるので大量の大気が高高度まで吹き上げられる。この大気が高高度で十分に放熱する前に近くの高気圧の中心を通り抜け急下降し気圧上昇も加わり断熱圧縮され温度が上がった大気が吹き込んでくるので、一気に蒸し暑くなる。

台風をエアコンに例えると傍の高気圧は室外機な訳だ。

しかし、 台風から結構離れた高気圧からの風は十分に冷却する時間が稼げる様になるので徐々に気温は低下していく。

台風が過ぎ去ってもどーんと暑いままなトコロは都市が密集している。
台風の代わりに 都市の排熱を近くの高気圧が循環しているのだ。(と思う。
だから、近隣の地形が周辺の都市の排熱が循環しにくい形状であれば気温は低めになる。(ハズだ。

僕の考えた地球温暖化の実情は、上から日差しをビシっと照り返すガラスと白いコンクリートのビルの間を下から黒いアスファルトで舗装された道路からムワッとする熱放射に挟まれ、横から自動車とエアコンの室外機の暖気を吹き付けられれば、暑いに決まってるだろう。

これらは都市のヒートアイランド現象として知られ、ビル風という強風が吹き荒れることもあったが、様々な工夫がなされビル風も以前よりはマシになっている。

だが、ビルと黒い舗装道路の上下からの照り返しをどこかに吹き飛ばしてくれた強風が無くなったのだから、気温がドーンと上昇してしまった。

身近な例で云えば、静穏PCかな?
設計レベルより意図的にファンの回転数を下げ動作音を耳障りにならない程度にするかわりに、動作に支障が無い程度まで筐体内の温度を上げているものが多い。それでもファン音がヴィィィィィンと五月蠅いPCよりはマシですよね。

ですが、この静穏PCの排気はムワっとするほど暑いハズなので夏は窓を開け風通しを良くして室温を下げないと熱射病になりかねないので気を付けましょうね。

閑話休題。

だから、なのだろう。この都市だけじゃない!地球ごと暑くなっていると云いだして、やり場のない仕様が無いこと(ビルと舗装は無くせない)から目を逸らさせているのだろうね。

都市を離れ建物が立て込んでいない郊外まで移動すれば意外と涼しいよね。

だからと云って、みんな引っ越しちゃったら都市がガラガラになって

経済が衰退しちゃうんで誰も得をしないって話。

それが

【地球温暖化という風説を信じる道しか残されていない】

現実って奴かな。(チーン



足りないもの

なぜかコンセントLANのポートが足りなくなったのでポチった。

届いたので久々にサブパソを起動したら、

激重になっていた。

ログインすると暫くして「LogiDLA.dllが見つかりません」と出てくる。
ワイヤレスマウス のドライバらしいが、無効化しても激重のまま。
そう云えば ウイルス監視ソフト が勝手にアンスコされている???

WindowsUpdate1903の何度目かの追加パッチでやらかしたのかな?

もう調べても激重な状況は治りそうにもない。それに取っておきたいデータはNASに移動したハズ?なので、サクっとWindows10をユーザ・データを残すモードで初期化。

あ、リモートデスクトップが繋がらない。

確か?OFFがデフォだった様な。

モニターを移動して繋いでみると、ちゃんとWindowsは認証されていて、普通の動きに戻っていた。

※こんな時は12インチくらいのモバイル・モニターがあったら便利なんだろうけど、バッテリー付で高そうだ。買うなら値段があまり変わらない安価な液タブの方がいい様な気がするがセットアップに苦労しそうなので、今は我慢。

早速、リモートデスクトップをONに変える。
共有フォルダを設定し直す。
消されたウイルス監視ソフトを再インスト。

もうこの段階で、めんどくさくてハブもタップも放置したままyoutobeで動画を観ているうちに、今使っているのはヘッドフォン。手元にマイクが無いことに気が付いた。

滅多にないが、Skypeでやり取りするときに雰囲気を文字にするのが困難な状況と云うのはやはりある。

困ったことに手持ちのヘッドセットはSkype非対応。

なのでマイク・スタンドUSBマイクをポチったが、
多分、使うまで積んだままになるだろう。

ここまで書いて気が付いたんだが、激重になったのは
モニターをマザボの方のHDMIに繋いだせいかな?

でも、Pentium-G5500だからCPUほぼ100%のまま、0.1FPSってのはアリエナイな。

それとも

何かに汚染されていたのだろうか?



【NETGEAR】ReadyNAS 212

暫く20K円で停滞したままで忘れてたが、

Amazonのプライムデーで16Kだったのでポチってしまった。

10TBのHDDに対応らしいが・・・

ApacheやPHPやMySQLとか懐かしい パッケージをダウンロードして組み込める様だ。これにWEBメーラを組み込んでMySQLに ThunderBirdやOutlookとかに散らばってるメールを ダウンロードするような仕組みを作ってメールのサーバーにしてもいいだろう。詳しくはNASを立ち上げて、Appsからダウンロードできるアプリ・リスト次第かな?

だがもうPHPは触手気味だ。

Pythonはあるようだが、JDKは無いようだ。でもOpenJDK(ARM版)を勝手に入れればいいのかな?

node.jsも無いがソースからビルドできればいけるかもしれない。

ダメならDocker(当然x86_64のみのハズ)さえ使えれば自力でNode.jsのインスタンスを作ればいいのかもしれない。

とりあえずは放置してある1TBのUSB-HDDを分解してHDDを取り出し、このNASに放り込もうと思う。

こんな面倒なことをしなくても、中古PCにCentOS7.6を入れてしまえば開発環境はyumで済むハズだが、そこそこ使える性能が出るなら、HDDがクラッシュしても壊れた方のHDDを差し替えてX-RAIDのお手軽(でも長時間)な復元できそうなトコが魅力である。

ps.1

本体が届いてみると、勿体ないので、ドスパラでWD60EZAZ-RT WD Blue-6TB(FL)を1台買って取り付けた。

新品HDDだったせいか、OSのセットアップはYoutobeの動画を観れば簡単だ、すぐ完了。
※観なかったらいつまでもHDDを取り付けられなかった様な気がする
※ファームウェアを6.9.1から6.10.1にアップグレードするには再起動を挟んで30分づつ=1時間かと思ったが

再起動した後は一旦、readycloud.netgear.comのTOP画面から再ログインが必要なようだ。

さて今AMAZONを見ると ¥ 28,078 になっていた。

やっぱりNASは高いと思ったら、1ドライブな
BUFFALO NAS スマホ/タブレット/PC対応 ネットワークHDD 3TB LS210D0301G が安くていいかもしれない。しかし中のHDDがクラッシュしたらどうしようもない。

Ready NAS 212はX-RAID構成なので、HDD2台なら片方壊れても復旧する可能性がある。

しかし、 Ready NAS 212 自体が壊れた場合は修理できるもののデータは保証されませんので、やはりバックアップは必須ですが、気が向いた時に古いHDDにドドっとバックアップすればいいんじゃないかな?

管理者画面へ移動するには NASのIPアドレスのトップページに移動しないと開けない。
× http://192.168.*.***/
〇 http://192.168.*.***/index.html

※個人の主観的な感想です。

ps.2

NASはAmazonで、1つ目のHDDはドスパラで買ったので、2つ目はツクモで購入。型番もファームウェアのバージョンも全く同じだ。2台目を取り付けて電源を入れると、自動的に同期を取り始めてくれるのはありがたい。しかし容量(6TB)のせいか?24時間ぐらいかかりそう。同期中は反応も鈍いが、色々不都合がおきるらしい。ブラウザを閉じてから、ReadyCLOUDを見るとNASが見えなくなっているのでBackUPボタンを6秒押して再認識させないといけない。

PS.
電源スイッチから電源OFFできないと思ったら
とりあえず押す。
そしてランプが点滅中にもう一度押さなければいけない。
どうやらうっかり押してしまった時の備えなんだろう。




top