Mac に Chrome Remote Desktop を設定しようとしたら ChromeRemoteDesktopHost が許可する候補に含まれていない場合

MacChrome Remote Desktop を設定しようとしたら ChromeRemoteDesktopHost が許可する候補に含まれていない場合は + を押してシステム内の以下のファイルを指定したら解決しそうな気がする。

/Library/PrivilegedHelperTools/ChromeRemoteDesktopHost.app

 

何故ラ行音ラリルレロのローマ字表記に L ではなく R を使うのか?

何故ラ行音ラリルレロのローマ字表記に L ではなく R を使うのか?

 

この疑問はわしも若いころに抱いた事があるし、その時は L を使うべきだったのではないかと思ったと思う。

しかし、わしも歳を重ねて更にできるようになったようで、今ではここは R で適切だと考えが変わっておる。

 

何故か!?

そもそもラテン文字は絶対的な発音記号ではなく、特定の言語の中での音の区別くらいまでしかできないものだと知るべし!!

その上で、L の文字は比較的安定的にいろいろな言語で近い音を表す傾向があるのに対して、R の文字はそれぞれの言語で「意外と全然違う音」を表す傾向がある。

つまり、日本語のラリルレロに R ではなく L を使うべきなんじゃないかと言う小童の頭の中では、せいぜい英語くらいまでしか考慮できてないじゃろう? と小童だった頃の自分を思い出しながら、じいさんは思うんじゃよ。

 

つまり、R で書くほうが、L で書くよりも「これは他の何かではなく、日本語のラリルレロなんです!1:1 で完全対応する他の何かはないんです!!」という主張として強いと思う。

IntelliJ IDEA を使っていて、新しめの JDK を使ってて Kotlin のコードで

jdk Cannot access class 'java.lang.reflect.Type'. Check your module classpath for missing or conflicting dependencies

こんなエラーが出ることがあるじゃろ? <del>それをこうしてこうじゃ AA 略</del>

それ、プロジェクト SDK がセットされてないかも。

ctrl + shift + alt + s を押してプロジェクト SDK をセットしてみると解消するアル!! (キャラ崩壊)

(Project Structure > Project Settings > Project > SDK

固体データという呼称を提案します

気が付くと、ゲーム系業界に戻ってきて10年以上かな?

割と前から思ってた事がある。

いわゆるマスターデータと呼ばれてるもの、他の業界だとちょっと違うのかもしれないけれどスマホゲーとかのマスターデータというのは割とその他の流動的なデータとははっきりと分かれてて、最近は DB に入れないケースも多い

(他のユーザーデータ等がまともに検索できる形式だった頃は、マスターデータとリレイションあると検索のクエリーとか書きやすいとかもあったのだけど、もうシャーディングだのなんだので調査のために生のクエリー投げるとかも簡単ではない時代なわけで、そうなるともうマスターは DB には入ってなくていい)

で、なおかつ結構な会社でこれを (コンピューターでのデータ処理の専門家ではない) プランナーさん達が形式まで決めるようなところが多かったりする。

そういうわけで、「彼らの決めた形式」をそのまま扱うのはちょっとどうなの?構造ごと変形する処理を一発かました方がいいんじゃないの?と思ってる。

で、「マスターデータ」という呼び名はもう普及しまくっちゃってるのでプランナーさんとか運用者さんたちにあげちゃって、変形後のデータは別の名前で呼んで区別したい。

 

そこで固体データ (solid data) という呼称はどうだろう?

関連のある用語付けとして、システムの稼働でリアルタイムで変わっていくデータは液体データ (liquid data)、NoSQL 系の中の特に永続化を主目的にしてないようなデータは気体データ (gaseous data) でどうですかお客さん?

 

Windows の MSI インストーラーの中身の展開

 

今の現場、Windows の管理者権限がなくてパスすら通せないというエンジニアの仕事理解してんのかって環境なのです

(ただここの社長エンジニア出身ぽい空気がするので、純粋に他人を信じられないタイプなんだなと思う)。

 

それはいいとして、インストールするソフトについては特に管理されてないので常識の範囲で必要なソフトは入れたいわけで、MSI 形式を展開したいと思った。やり方はちゃんとあった。

> msiexec /a to-extract.msi targetdir="C:\this\should-be\a\full-path" /qn

参考: https://atmarkit.itmedia.co.jp/ait/articles/0703/02/news130.html

 

targetdir はフルパスである必要があるそうです。

あと単純に中身を取り出しただけで使えるとは限らない (まあ普通いけるやろ) です。

MySQL Workbench は普通にいけた。

最近、インストールするディレクトリをカスタマイズもできずに、ホームディレクトリ内の意味不明な手の届かない場所に勝手にインストールされちゃうものも多いから、むしろ管理者権限あっても中身だけ取り出せるなら取り出したいかもと思いました、まる。

 

python のソート関数が key を要求してくる件について

今の仕事でメインに使ってる言語は Kotlin なのだけど、Excel のワークブックからデータを読み取ってくるような用途には python が使われてる。
そこで python でソートしたかったのだけど、組み込みの sorted() 関数の引数が key となっていて、「これだな」と思った cmp は deprecated だった。

同じ状況の人へのサクッとした解決策としては key に functools.cmp_to_key(your_cmp_func) のような感じで指定すればおk

 

import functools

def compare_as_see_fit(lhs, rhs):
    if lhs > rhs:
        return 1
    elif lhs < rhs:
        return -1
    return 0

print(sorted([65535, 7, 255, 7, 31], key=functools.cmp_to_key(compare_as_see_fit)))

 

もうこれだけで it works! なのだけど、この functools.cmp_to_key() クンが何をどうしてくれてるのかイメージできなかった。

ほな、ソースみよか?

 

# Copyright (C) 2006-2013 Python Software Foundation.

def cmp_to_key(mycmp):
    """Convert a cmp= function into a key= function"""
    class K(object):
        __slots__ = ['obj']
        def __init__(self, obj):
            self.obj = obj
        def __lt__(self, other):
            return mycmp(self.obj, other.obj) < 0
        def __gt__(self, other):
            return mycmp(self.obj, other.obj) > 0
        def __eq__(self, other):
            return mycmp(self.obj, other.obj) == 0
        def __le__(self, other):
            return mycmp(self.obj, other.obj) <= 0
        def __ge__(self, other):
            return mycmp(self.obj, other.obj) >= 0
        __hash__ = None
    return K

 

あ、あ、そういう事ね!!

自分が勝手に「絶対値に変換してからソート関数に渡せ」って意味に勘違いしてただけで、比較可能ならそれでいいのね!!
そもそも key っていう引数の意味自体を勘違いしてたわ。
要素の絶対値を求める関数だと思ってた!!
型を明示しない言語だとそういう部分を正確に読み取るの難しいよね。