The Man Who Fell From The Wrong Side Of Sky:最新 5 日分

2019/10/20(Sun)

[オレオレN6] libarchive 3.3.3 → 3.4.0へのアップグレードでbootstrapから入れたpkg_installが無事死亡

丸一日チラシの裏死んでおったけどようやく復旧、今回もpkg_rolling-replace走らせたら途中で止まっとって壊滅ちゅーパターンなので、そろそろチラシの裏も続けるなら他のOSに変更したいところではある。

そんでログをみるとpkg_install/add/perform.cの

    665                 r = archive_write_data_block(writer, buff, size, offset);
    666                 if (r != ARCHIVE_OK) {
    667                         warnx("Write error for %s: %s", filename,
    668                             archive_error_string(writer));
    669                         return -1;
    670                 }

のメッセージが出力されとったので、pkgsrc/packages/All以下に作成されたバイナリパッケージをpkg_add(1)しようとして死んどるもよう。

ので犯人はlibarchiveと断定、いったん3.3.3に巻き戻しあらためてbootstrapからやりなおした。

どうもうち以外では問題になっとらんようなので、N7以降では顕在化しないバグなんかなぁこれ。

2019/10/19(Sat)

[Windows] 死を招く古いグラフィックドライバとWindows 10(19H1以降)でのリモートデスクトップ

最近のWindows 10(19H1以降)、RDPでの接続に時間がかかったり接続エラーになったりブラックアウトやログインでのフリーズそしてとどめにBSoDからの再起動という現象がでて困っとったんだけども、どうやらグラボの問題なんやな。

例えばAMDはRadeon 4000以前のグラボはWindows 10サポートは打ち切ったぜと 公式リリース出しとるようで、自分とこで不具合が発生する環境は正にこいつRadeon HD 4200なのであった、合掌。

要はRDPがハードウェアアクセラレーションでドライバの非互換性(DirectX?)を踏んでクラッシュしとるちゅーこと、なお問題のマシン(HP Microserver N54L)に対応グラボを増設する余地は無し、無念。

しゃーないので回避策としてハードウェアアクセラレーションを無効にするためレジストリに

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics]
"DisableHWAcceleration"=dword:00000001

を追加して再起動、とりあえずこれだけでRDPは安定して使えるようになるもよう。

2019/9/13(Fri)

[写真] SONY製ミラーレスカメラからPlayMemories Camera Appsのサイトにログインできないのは2段階認証のせい

ちょっと前までのSONYのミラーレスカメラと一部のコンデジには PlayMemories Camera Appsというアップデートソフトを有償購入し、カメラに新機能を追加することができた。

なぜ「できた」と過去形かというと、よっぽど売れなかったのか最新機種(α7IIIおよびα6600以降)ではこの機能消されとるんだよね、短い命であった南無南無。

つーかワイも所有のNEX-5R用にいくつかアプリ買ったんだけど、アプリストアの出来が酷いのですわ。 「カメラの中身はLinux + ARMやしフルブラウザとIME(たぶんNetFront + POBox)搭載しときゃ何とでもできるやろ!」というクッソ安易なコンセプトで実装されとって非常に使いづらい。 コンパクトにこだわったボディの小さな背面液晶にほぼPC用サイトそのままのページを表示しやがるので、メインユーザー層たるオッサンジーサンの老眼じゃ字読めねえわ、スタイラスペンも無しでこのサイズのタッチパネルのキーボード操作なんぞ無理よ無理無理かたつ無理なのである。 そして搭載されてるCPUがしょせんカメラ用の非力なものなので、タップからワンテンポ遅れる文字入力の動作がもっさりで死ぬ、そりゃ流行りませんわこれ。

更に酷い事にこのPlayMemories Camera Appsのストアサイト、PSN Accountで2段階認証もといSMSによる複数要素認証を有効にしてるとログインできねえのですわ。

はい、エラーメッセージもなにも表示されんのでまず普通の人は原因は判らんしカメラ本体の故障かと思いますわね。そりゃ誰も使わねぇよこんなん。

ちなみにPCからログインした場合でも

という問題が発生する、よってPC経由のインストールすらままならない状態なのですわ。

これ「アプリ売れねーな!じゃあ機能廃止!」という以前に、もしかして実は誰もストアにログインしてアプリを買えない状態だったのでは…? あるいは世間一般において複数要素認証の認知度ってのはゼロに等しくて誰も使っておらず問題にならなかったのか(なんとかPayのように!なんとかPayのように!)

まぁ2段階認証をきちんと設定するようなセキュリティ意識の高い人であれば、これPSN Accountが仕様変更で2段階認証に対応した時か My SONY IDとの認証共通化の際に、このストアで正しく動作するかテストせずにリリースされ放置されっぱなしの結果まともに動かないのでは…?ということに気づくわけです。

んじゃあどうやってログインするか、スマホなんかだと2段階認証に対応しとらん古いOSであれば、アプリパスワードを発行して対応することもできる。 そんでPSN Accountにおいても2段階認証の設定項目に「機器設定パスワード」というのがあって生成できるんだけど、これ入力してもカメラからだとログインできないのだ。 但し書きにゲーム機とスマホって書いてあるからUser Agentかなにかで蹴ってるんだろう。

つーことでどうしてもカメラにアプリをインストールしたいのであれば「一時的に2段階認証を切る」というクソ運用が必要になるわけですバーカバーカ。

ワイが中古のNEX-5R買ってアプリ入れたの1~2年くらい前でその当時からすでにこの問題あったんだけど、いっこうに直る気配も障害情報も上がってこないとこを見ると「何年経ってもSONYのソフトウェア軽視という病は直らねえ」ってこった、いい加減にしろ莫迦。 暇な人はメール報告でもしてあげてください、ワイはめんどくさいしもう買うことも無いからね…

余談、この手の拡張機能を別売りするというコンセプトはもう30年以上前の発売になる Minolta α-7700iの時代から存在していて、「 インテリジェントカード」というICカードはけっこうな数が売れたんだよなぁ、やはりMinoltaは時代を先取りし過ぎていたのだ。

他社からもAndroid搭載して追加アプリケーションをストアから購入できる機種がでていたりもするけど、あまり流行る気配は無さそうね。 まぁ携帯音楽プレーヤーにAndroid搭載もあまり流行らんし、これはもうカメラというセグメントがスマホに完全に喰われてしまった結果やろうね。 あのボトムズのスコープドッグみたいなiPhone 11といいスマホカメラも迷走しまくってる感があるけど。

2019/9/2(Mon)

[オレオレN6] math.h(libm) vs cmath(libstdc++)

前回ちょっと書いたように、オレオレN6のgccは4.5.3とクソ古いので-std=c++11を要求するものがビルドできねえのでmk.confにGCC_REQD=8としてgcc8を使ってるのだけど、それでもなおビルドが通らないケースが多くて困る。

というのもlibstdc++においてC++11で導入されたcmathの新機能はlibmの同等の機能、例えばstd::round()であればround()を呼びだす事で実装されてるんだけど、N6のlibmにおいては一部の関数が未実装なので、c++config.hで_GLIBCXX_USE_C99_MATH_TR1が未定義となり一律無効化されてしまうので、-std=c++11する意味がねえのですわ。

$ grep _GLIBCXX_USE_C99_MATH_TR1 /usr/pkg/gcc8/include/c++/x86_64--netbsd/bits/c++config.h
/* #undef _GLIBCXX_USE_C99_MATH_TR1 */

libstdc++/configureを確認すると_GLIBCXX_USE_C99_MATH_TR1を有効にする為に現状で不足しとる関数は

acoshl
asinhl
atanhl
cbrtl
erfl
erfcl
exp2l
expm1l
fma/fmaf/fmal
hypotl
lgammal
llrintl
llroundl
log1pl
log2l
lrintl
lroundl
nearbyint/nearbyintf/nearbyintl
nexttowardf/nexttowardl
remainderl
remquol
rintl
roundl
scalbln/scalblnf/scalblnl
scalbnf/scalbnl
tgammal
truncl

うーん結構な数あるのよね、N8のlibmに更新すればかなりの部分が実装済ではあるんだけど、それでもなお

expm1l
lgammal
log2l
remainderl
remquol
tgammal

あたりは未実装なもよう。

なのでtextproc/icuとかビルドするとこんなエラーが出るわけだ。

c++ -I/usr/include -I/usr/pkg/include -D_REENTRANT -DU_HAVE_ELF_H=1 -DU_HAVE_NETBSD_ATOMIC_OPS=1 -DU_HAVE_ATOMIC=1 -DU_HAVE_STRTOD_L=0 -I. -I../common -DU_ATTRIBUTE_DEPRECATED= -DU_I18N_IMPLEMENTATION -O2 -march=i486 -I/usr/include -I/usr/pkg/include -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long -std=c++11 -c -o number_decimfmtprops.ao number_decimfmtprops.cpp

number_decimalquantity.cpp: In member function 'void icu_60::number::impl::DecimalQuantity::_setToDoubleFast(double)':
number_decimalquantity.cpp:387:40: error: 'round' is not a member of 'std'
     auto result = static_cast<int64_t>(std::round(n));
                                        ^
number_decimalquantity.cpp:387:40: note: suggested alternative:
In file included from /usr/pkg/gcc48/include/c++/cmath:44:0,
                 from number_decimalquantity.cpp:9:
/usr/pkg/gcc48/lib/gcc/i486--netbsdelf/4.8.5/include-fixed/math.h:347:8: note: 'round'
 double round(double);
        ^
../config/mh-bsd-gcc:43: recipe for target 'number_decimalquantity.ao' failed
gmake[1]: *** [number_decimalquantity.ao] Error 1

他にもdevel/cmakeとかわりと重要なシロモノが同様のエラーでビルドできひんので、連鎖的にビルド不能に陥るパッケージ多過ぎィ!で困るのよね。

とりあえずtextproc/icuやdevel/cmakeでエラーになる箇所はlibmに実装はあるので、この場合は回避策はあって

--- i18n/number_decimalquantity.cpp.orig        2018-03-26 13:38:30.000000000 +0000
+++ i18n/number_decimalquantity.cpp     2018-05-28 02:21:50.000000000 +0000
@@ -391,7 +391,7 @@ void DecimalQuantity::_setToDoubleFast(d
         for (; i <= -22; i += 22) n /= 1e22;
         n /= DOUBLE_MULTIPLIERS[-i];
     }
-    auto result = static_cast<int64_t>(std::round(n));
+    auto result = static_cast<int64_t>(round(n));
     if (result != 0) {
         _setToLong(result);
         scale -= fracLength;

としてcmathでなくmath.hのround関数を使うようなkludge patchを適用すればとりあえず何とかなる、でもこれビルド止まる度にこの手のパッチ書くのもめんどくせえよなぁ。

とりあえずコード監査途中で飽きて放置中のOpenSSLの件が片付いたら、次はlibmをとりあえず最新にしてそれから未実装の関数どうにかするかなんやな。

2019/8/29(Thu)

[音楽] Christone ``Kingfish'' Ingram/I Put A Spell On You

フェンダー公式より、この容姿でなんと若干20歳にしてB.B. KingとFreddy KingそしてAlbert Kingの三大キングを継ぐ新たなるブルースの王登場だと。

歌もギターも上手いんだが円熟味つーかブルース(憂鬱)という部分で年齢相応で物足りない部分はあるけど期待の新人やね、つーかストラトなんぞよりES-335 B.B. Kingモデル弾いて欲しいとこではあるけど、Gibsonちゃんもはや息してねえからな…

まぁJimmy James(Delvon Lamerr Organ TrioとTrue Loveのギタリスト)といい「ギターは顔で弾く」タイプがまた復活してきたのは喜ばしいことよ。

ちなみにこの「I Put A Spell On You」はScreamin' Jay Hawkinsの曲なんだけど、あの棺桶から登場したりドクロや手首とかの人体パーツで遊んだりする人喰い人種か首狩り族かな装束はいまやポリコレで放送禁止級なので、こっち路線を継げる者はさすがにおらんやろうな。

この人は「Constipation Blues(便秘のブルース)」が有名やね、だんだんギターのリフもホーンセクションそしてホンキートンクピアノと全てが屁と脱糞音と水洗音に聴こえてくる怪作、きたない。

ディズニーのアナ雪の主題歌で「Let It Go」が「ありのままで」などと訳されてたそうだが、この曲では直球に「ウンコ出てくれ!」なのである。