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

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」が「ありのままで」などと訳されてたそうだが、この曲では直球に「ウンコ出てくれ!」なのである。

2019/8/24(Sat)

[p**src] パッケージ同士の無駄な依存関係

毎度のことなんだがperlのバージョンが5.28から5.30になったことでp5-*の不整合が発生してめんどくさいのだが、今回はほとんど再インストール級の作業になってしもうた。

ちなみにperlは5.30.0で後方互換だいぶ切り捨てたのだけどその話ではない、そこいらへんはチラシの裏もしばらく前に対策しとったのでな…

なぜ再インストール級の作業な羽目に陥ったかというと、それはオレオレN6環境は

という状態だからなのよね。

この設定だと

という深い依存関係があって、lang/gcc8までさかのぼってアンインストールする必要があるのだ。 なもんでlang/gcc8をアンインストールするには今度はlibstdc++も消えるので依存するパッケージも消さんとならんのでドミノ倒しどころか壊滅状態なのだ。 ちゅーことでワイは諦めてそっと/usr/pkgごと消した(/usr/pkg/etcのバックアップは忘れないようにね!)

つーかそもそもopensslもperlに依存(RUN_DEPENDS)しとるのが判断ミスよな。

USE_TOOLS+=             fgrep gmake makedepend perl:run

これConfigure/configスクリプトの実行に必要なBUILD_DEPENDSで十分なんですわ。

おそらくこれってc_rehashとCA.plちゅーperlスクリプトのためだけにRUN_DEPENDしとるんだろうけど、こいつらbaseではperl無いこともあって使われてないのよね。 なのでbinに入れる必要もp**src的にはあまりなく、baseと同様にshare/openssl以下に放り込んどけばいいだけよね(CA.plの方はMakefile修正してそうなっとるのだが、c_rehashの方は修正漏れなんだろうか)。

どうしてもbinに入れたいってのであればopenssl-libとopensslでパッケージ分割すりゃいいわけでな。 それに今後perl5本体に同梱されるライブラリがopenssl依存になったりすると循環参照になる可能性も無いわけではないのでな、こういう本質的でない依存関係は持つべきじゃないのだ。

そしてもうひとつ、gcc8がpython37(とgsed)に依存(RUN_DEPENDS)してる理由がさっぱりなのですわ、Makefileを確認してみると

.include "../../lang/python/application.mk"

とmake実行時にshebangをpkgsrcでインストールしたpythonに置換するREPLACE_PYTHONというマクロを定義したファイルをインクルードしている。

なのでgcc8と一緒にpythonに依存したスクリプトがインストールされると推測されるわけだが、これを確認してみると

maintainer-scripts/branch_changer.py
gcc/ada/doc/share/conf.py
gcc/ada/doc/share/latex_elements.py
gcc/ada/doc/share/ada_pygments.py
gcc/jit/docs/conf.py
gcc/gdbhooks.py
libstdc++-v3/scripts/make_graph.py
libstdc++-v3/python/libstdcxx/v6/__init__.py
libstdc++-v3/python/libstdcxx/v6/xmethods.py
libstdc++-v3/python/libstdcxx/v6/printers.py
libstdc++-v3/python/libstdcxx/__init__.py
contrib/dg-extract-results.py
contrib/header-tools/headerutils.py
contrib/mark_spam.py
contrib/testsuite-management/validate_failures.py
contrib/gen_autofdo_event.py
contrib/check_GNU_style_lib.py
contrib/check_GNU_style.py
contrib/analyze_brprob_spec.py
contrib/update-copyright.py
contrib/analyze_brprob.py
contrib/filter_params.py
contrib/jit-coverage-report.py
libffi/generate-darwin-source-and-headers.py

いくつかのpythonスクリプトがヒットするんだけど、分類すると

とどう考えてもBUILD_DEPENDSで問題無さそうなシロモノばっかりなんよね。 もしgccでC/C++ソースをビルドする際にバックエンドでこれらのスクリプトが動くならRUN_DEPENDSである必要あるけど、そうでないならこちらも本質的でない無駄な依存関係でしかない。

ということで、lang/python/application.mkから更にインクルードされてるlang/python/pyversion.mkにあるマクロ

# PYTHON_FOR_BUILD_ONLY
#       Whether Python is needed only at build time or at run time.
#
#       Possible values: yes no test tool
#       Default: no

の定義忘れだよなこれ。

これ以外にもperl関連のパッケージにおいてはテストの実行にしか必要の無いパッケージがRUN_DEPENDSになってたりするのが多くてほんともうちょっと何とかならんのか。 まぁこれは元のMakefile.PL自体が間違えててテスト時以外は不要な依存関係を定義してたりするのを丸写しだったりするんだけどね…

2019/8/20(Tue)

[音楽] The Who/The Real Me

タイトルはThe Whoの名盤「Quadrophenia(四重人格)」より。

また病院に舞い戻ることになった
別の精神科医を紹介して貰いに
診察室で俺が週末に苦しんだ幻視の事を話したんだ
でもヤツはそれについて何を思ったのか漏らさず隠し通した
アンタは俺にとっての「現実」を疑ってるのか?
なあ先生よ

うちの認知症老人、 カプグラ症候群(すりかわり妄想)ときたらお次は 解離性同一性障害(多重人格)やろうなと思ってたけど、どうもすでにその状態なんやなこれ。 感情が高ぶってすりかわり妄想の症状が悪化すると、口調がすっかり変わってまるで自分がアブダクション(誘拐)されたお手伝いさんみたいな態度になるんだけど、これ別人格ですわ。

フィクションで誇張されたいわゆる多重人格ってのは、ほんとうに別の人格が存在する病気かのように広く信じ込まれてるけど、要するに

といった認知障害でごくあたりまえにみられる症状の合併症でしかないのよね、実例をまのあたりにするとああ…しょーもな…という気分になると思う。

そんで支離滅裂な妄言の中に繰り返し「先生」と呼ばれる存在がでてきて家から一歩も出てないのに「先生」と会った云々と主張するのだけど、病院の先生か学校の先生かそれともかつての趣味の先生(すでに死去)か頭捻ってたんだけど、ダニエル・キイスの著書で有名な ビリー・ミリガンがそれぞれの人格に指示を与える統合人格というべきものを「ティーチャー(教師)」と呼んでた事を思い出し、ああそれと同じなのかなぁと合点がいった。