光回線(v6プラス前提)の性能に関するメモ

導入に関するメモは

ここにあるのね〜 soluna-eureka.hatenablog.com

基本的な考え方

通信経路の一部分だけが最高速度を出せても他の部分にボトルネックがある限りは無駄である,インターネット上のサービスは通信経路上の最低速度に合わせてデータをやり取りする(もちろんサービスを提供する側のサーバの性能が悪いのもダメだが)

手元の設備にフォーカス

パソコンやスマホのインターフェース

RAMやSSDの性能

だってデータをDLしても手元に上手く落とせなきゃまず意味がない,RAMやSSDへの書き込み速度はどれくらいかチェックだ

有線接続

Ethernetでどこまでの速度に対応している?最大で1Gbpsの光回線なら1Gbpsに対応しているLANポートが必要だ,PCクラスタとプライベートネットワークを作ってデータを転送したいなら10Gbpsに対応しているのもいいらしい
前者は1000 BASE-T(上下どちらか1Gまで)もしくは1000 BASE-TX(上下同時に1Gまで),後者は10G BASE-T(上下どちらか10Gまで)と呼ばれるらしい,俗に言うギガビットEthernetと10ギガビットEthernet,なお10G BASE-TXは有線でみたことがない

無線接続

IEEE 802.11のどこまで対応している?1Gbps出るならせめてacは欲しい
将来を見据えるか余力を持った性能が欲しいならそろそろaxに対応しても良さそう

いい場所に置いてる?

LANソケットやルータから無駄に離れたり他の電子機器がそばにあったりすると,エラー率が上がるので速度も出なくなるぞ

屋内の周辺機器

任意のコネクタや変換器

最低でも1000 BASE-Tは欲しい,屋内で1000 BASE-TXやそれ以上をやりたいならそれに対応するものを選ぼう

有線LANのケーブル

下で1Gbpsを出したいなら最低でもcat5eかcat6,混雑する経路や長い経路もしくは上下同時に1Gbpsを使う必要がある場合はcat6が良い,それ以上を目指すなら10Gbpsに対応するcat6a(たまにcat6eと書かれる場合がある)を選ぼう
cat7以上の規格のものは市販品では使えない,これ以上はもう完全に産業用の何からしい,コネクタがcat5系列やcat6系列とは厳密には異なるので性能が発揮できない(互換性はあるのでコネクタの見た目さえ合えば取り敢えずは動くらしいんだが)

家の中に既にLANケーブルが埋まって存在している場合,その規格は差込口に書いてある場合が多い,もし書かれてなかったら自分で実験して確かめてみるべき

ルータ

Wi-fiに対応するなら無線LANとして802.11acか802.11axが欲しい
なおかつ有線の接続で1000 BASE-Tや1000 BASE-TXもしくはそれ以上に対応しているもの選ぼう

分配器,ハブ,アクセスポイント等

ルータ機能がないものでも,概ね上と同じ考え方ができる
ただしルーター機能の有無が転送速度に影響する可能性はある,なるべくシンプルな構成にしよう

家庭向けONU+HGW

注意 ONUとHGWが別々だったり一体だったりするので気をつけよう

1Gbpsまでの回線

光ファイバ(LINE)側について

上下ともに1GbpsでONUに到達する
…とは言うが,一応は光ファイバーの性能と光ネットワークの規格にも依存するらしい,まぁ業者が施工するなら間違いはないだろうし,ぶっちゃけ規格として1Gbpsが出せないというのはまずありえない
つまり少なくとも光回線なら最低でも上下1Gbpsを出せる用意ができていると考えても良い

ONUとHGWの間(WAN)について

一体化しているのであれば別に気にしなくても良いが,別々の場合はそれを結ぶコードについて有線の規格に気をつけなければいけない,流石に公式から提供されるセットに入っているものなら不足はないと思いたいが…
一般にONUだけでは(自力でHGWを作らない限り)光回線を利用できない,インターネットの認証とかは大方HGWの役目でONUはそれを有線の通信に変換しているだけらしい

HGWよりも内(LAN)側

ポートが複数あるケースがほとんど,新しいものは各ポートごとに片道1Gbpsで通信する1000 BASE-T規格に対応している
非NTTだと1000 BASE-TXに対応しているものもあるっぽい,ちゃんと使えるかを事前にNTTに問い合わせた方が良さそう
対外的な通信は光回線の容量の限界があるため,全てのポートを合計して上下1Gbps(1ポートだけ使う場合は片道1Gbps)という制限がある
光回線の認証および接続に加えて家庭内で使えるルーターとしての機能も持っているが,そっちの性能がどの程度のものなのかは取説になかった,気になるなら実験してみよう
もしONUとHGWが一体化しているのであれば,これらを一体で担うことになる

NURO光 2G

※実際に使っている知人に取材した

光ファイバ(LINE)側について

上り1Gbps下り2Gbpsで到達する
上に示した1Gbps回線とは光ネットワークの規格が異なるため,下りで2Gbpsを達成している,そのために専用回線の導通工事が必要になる…が,既に光回線の用意があるならONUを変えるだけで済む場合がある(集合住宅とか)し,もしくは近隣の住民と一緒に新規契約するなら光回線の設置工事も安心して受けられるだろう(担当者がまともなら)

ONUとHGWの間(WAN)について

なんか一体化しているものしかないらしい,以上

HGWよりも内(LAN)側

ポートは複数ある場合がほとんどだが,各ポートごとにどれも片道1Gbpsで通信する1000BASE-T規格に対応している,一方で1000 BASE-TX対応の機種は公式サイトを眺めた限りでは見つからなかった
その上で端末をいくつか繋げて同時にダウンロードしても合計で2Gbpsまで許容されるので下りの速度に差が出る,そもそもNURO光ISPとセットの契約である上にISPとしても優秀なので素で早いと言えるでもお前こないだ障害起こしてたじゃん

それ以上の回線

受動光ネットワーク(PON)には経路上のシステムとして規格と対応できる帯域が定めらており,5ギガビットや10ギガビットには高い規格が要求されるほか,対応した専用のONUISPを利用しなければならず,まずサービス提供エリアも限られる上に料金も高くなる
その上で前述した通りに屋内の設備を整えないと宝の持ち腐れであり,同時に帯域を使い切らないと本当にもったいないので,ぶっちゃけ1Gbpsもあれば普通の人は大丈夫だと思う,NURO光 2Gはコスパが良いと聞くがどうだろうか
ただ有線テレビ放送に受動光ネットワークを介して行われる方向性が見られたり,基地局側の機器の性能も進化し続けている,いよいよ10Gbps時代が到来するかもしれない…

ONUとHGWについて

見た感じだと次世代の高速光回線ONUとHGWが別々になっている
HGWの方は取説が公開されているが,ONUの方は取説が公開されていない,情報求む

光ファイバについて

情報求む
10G回線に限らず1G回線でも実際のケーブルに関する情報が不足している,どれもシングルモードなのはNTTの資料からわかるんだけど,どの速度でもどの距離でも一緒なのかどうかが気になる… www.ntt-east.co.jp

それ以外

家庭向けじゃない…なら業者の方ですか?
帯域保証回線ってクソ高いんですねあれ…

奥手の設備にフォーカス

光ファイバなど

光ファイバそのもの

光ファイバそのものに通信速度の上限は存在しないとされている
ただし品質が低かったり(反射率が悪い,無駄に長い)劣化したり(虫に食われる,鼠に食われる,踏んで折れる)するとダメなので,通信速度を上げたり以上があったりする場合はにファイバが対応できているかをチェックする必要はある
一応は光ファイバの品物そのものにも推奨距離や対応規格はあるものの,実際に業者にチェックしてもらうのがベスト

中継機,増幅器,分岐器,等々

基地局設備

参考

cat規格(有線LAN)まとめ

※通信規格名はあくまでEthernet/IP全体に対するものであり,有線LANに限らず光ファイバにも使われる
※xxBASE-Tだと有線LAN,xxBASE-(S|L|Z)(+1文字)だと光ファイバ…になるらしい,距離と波長は共にS<L<Zになるっぽいね

規格名 通信規格名 最大帯域 動作可能周波数(最大帯域時) 動作可能距離(最大帯域時) 備考
cat1 なし ? 1MHz ? 正式な規格ではないらしい ,というか電話回線用だった
cat2 なし 4Mbps 4MHz ? 正式な規格ではないらしい ,が割と使われていた
cat3 10BASE-T, 100BASEVG, 100BASE-T4 10Mbps 16MHz わからん もう古い,ボロいLANケーブルはだいたいコレか?
cat4 10BASE-T, 100BASE-T4 10Mbps 20MHz わからん もう古い,直後にcat5が出てきてすぐに使われなくなった?
cat5 10BASE-T, 100BASE-TX (Fast Ethernet), 1000BASE-T (Gigabit Ethernet) 100Mbps 100MHz なし 一般的な最大帯域よりも上の帯域で動作させる仕様(通信規格)があるにはあるらしい,しかし市販品では見たことがない
cat5e 10BASE-T, 100BASE-TX (Fast Ethernet), 1000BASE-T (Gigabit Ethernet), 2.5GBASE-T, 5GBASE-T 1Gbps 100MHz 100m いまどきのカテゴリー5ケーブルはこれを意味する,市販品でも1Gbpsはほぼ確実に出る,ただし長さは100mまでなので注意
cat6 10BASE-T, 100BASE-TX (Fast Ethernet), 1000BASE-T (Gigabit Ethernet), 1000BASE-TX, 2.5GBASE-T, 5GBASE-T, 10GBASE-T 1Gbps 250MHz なし cat5eよりもノイズ耐性がある…一応10Gbps通信もできるが,1本だけなら55m・複数本を一緒に置くと37mまで?
cat6A (or cat6e) 10BASE-T, 100BASE-TX (Fast Ethernet), 1000BASE-T (Gigabit Ethernet), 1000BASE-TX, 2.5GBASE-T, 5GBASE-T, 10GBASE-T 10Gbps 500MHz 100m cat6よりもノイズ耐性があり,事実上の10Gbps通信の正式対応版,ちなみに1000BASE-TXは1000BASE-Tの上位互換で完全二重通信(上下1Gbps)がサポートされるので,上下で1Gbpsを同時に出したかったらcat6以上が必要
cat7 ?(下位互換はあるらしい) ? 600MHz ?(10Gbpsで100m以上は出るらしい) 資料が少ないし未認定らしいしわからん…
cat7a ?(下位互換はあるらしい)(40GBASE-Tや100GBASE-Tを目指していた計画がなくなったらしいな) ? 1000MHz ? 同上
cat8 ?(完全下位互換or7Aのみ互換で未定?) ? 2000MHz 30m~36m(想定されるユースケースは限定されているらしい) 同上

以上をまとめると,

  • cat5e以上は最低条件
  • cat6が望ましい
  • cat6Aは1Gbpsを超える回線で使いたい

wi-fi規格(無線LAN)まとめ

追記します

PON規格まとめ

Ethernetの通信規格から外れるものがある,伝送フレームが異なる
ITUIEEEで分かれている,EthernetIEEEでそれ以外はITU
※波長の予約が大変なのはわかったのだが,ここではその記載は省く

規格名 定義名 伝送フレーム名 最大帯域 最大動作距離 最大分岐数 採用例 備考
GE-PON IEEE 802.3ah Ethernet ↑1.25Gbps,↓1.25Gbps 20km 32 フレッツ 光ネクスト,Yahoo! BB光KDDI 光プラス ホーム,eo 光ネット,4G携帯基地局バック回線 日本というかアジアで標準として使っているらしい
G-PON ITU G.984 GEM・ATM/GTC ↑1.25Gbps,↓2.5Gbps 60km 254 NURO光 2G 欧州的はこっちが標準らしい
XG-PON ITU G.987 XGEM/XGTC ↑2.5Gbps↓10Gbps 60km 64 NURO光 10G
XGS-PON ITU G.9807.1 XGEM/XGTC ↑10Gbps↓10Gbps 20km 64 NURO光 6Gs,同10Gs
10G-EPON IEEE 802.3av Ethernet ↑10Gbps↓10Gbps 20km 64 フレッツ 光クロス(10Gbps対応),auひかり ホーム 10ギガ
NG-PON2 ITU G.989 XGEM/XGTC ↑40Gbps↓40Gbps 40km 256 4つの波長の光を合成して使うと10Gbps×4=40Gbps相当の帯域が得られる,ここまでは1つの波長で10Gbpsが限界
NG-PON2+ ITU G.989 XGEM/XGTC ↑25Gbps↓100Gbps 40km 256 5G携帯基地局バック回線 下りのみで25Gbps×4=100Gbpsを実現,上りは25Gbps×1=25Gbps…まぁスマホ相手だしONU基地局だしで足りそうな気もする
50G-EPON(旧:100G-EPON) IEEE 802.3ca Ethernet ↑50Gbps↓50Gbps 20km 32 光ファイバ1本で上下100Gbpsするより上下50Gbpsを2つ実装した方が良いという判断,それぞれ25Gbps×2=50Gbpsと2波長で合成

※NG-PON2下位規格と下位互換が設けられている

以上をまとめると,

  • 現在は最低でも光ファイバ1本に上下それぞれ1波長を割り当てることで共に1Gbpsは確保できている,これが大抵の光コラボレーション回線(GE-PON)
    • 各戸で1本ずつ使っている…と思われるが,実際はスプリッタとかで共有している場合がほとんど
      • 最悪の場合で4(局内)×8(局外)=32本に分岐できるので,酷いと32Mbpsしか出ない
      • つまり「概ね1Gbps」は知識がない限りは見抜けない詐欺紛いの誇大広告,ベストエフォート値を「概ね」と誤魔化つつ公称値にするなんて絶対にいけない(改革派),いやよく考えたら共有ユーザー数に関わらず(というかそれすら教えられず)(時間平均値も事前にわからず)全ユーザーで一律に契約して料金を取るのはかなり詐欺に近い
      • PPPoEの網終端装置の増設もしないし(これはIPoEを実装してだいぶマシになったからまだヨシとはできるけど)
    • これを大量に束ねて入口であるNTT局のOLTにぶち込んでNGNEthernet/IP網に流し込んでいる
  • NURO光光ファイバ1本で下り2Gbpsを達成している(G-PON)
    • こちらもスプリッタで共有して契約する場合がほとんどだが…
      • NURO光自身が光ファイバをまるごと所有してG-PON対応のOLTに突っ込んで動かしている
      • 加えてそこまでユーザーが密集していない,つまり32本に分岐することがまずあり得ない(ただし加入者が少ないすぎると料金も割高になるが)
    • OLTから先もNGN網とは異なる独自の回線を経由している
      • 当然ISPとしても優秀なのでその先でも混雑しない
  • その他にも独自の光ファイバと専用回線を所有する業者はある,みんな頑張れ!
  • 地域や場所にもよるが,最近(つってもNTT自身の商用化は去年から)はNTTが10G-EPONに手を付け出してたり,OLTの性能は確実に向上してきている
    • NGN網へ流せる光ファイバの本数が増えたため,局内スプリッタが減らされている可能性がある(ONUあたりの通信速度は4倍になる)
    • あと「最近になってできた『ケチってない』市街地やマンション」はマシかもしれない,最初から1Gbps回線を見込んで局外でそこまでスプリットしていない可能性がある
      • それでも光コラボ回線なら諸要因を含めて平均で300Mbpsくらいか?(みんそくを見ながら)
    • 実はNTTはここ最近までNGN網を建設するのに全力で投資したために労力も財布もすっからかんになって,回線速度の向上なんかできねぇという状況だったのでは…?
  • 将来的にはNG-PON2と10G-EPONで10Gbps回線が増えるとは思う,一般に普及はしないだろうけど(ぶっちゃけ過剰すぎ)

コンテンツブロッカーの自作ユーザールール(ユーザーフィルタ)の倉庫

Twitter

正規表現の単語による完全なミュート,絵文字にも別で対応(URLでtwimg.comごとブロック),ハングルは全てミュート(ユニコードで網羅),かつツイートクエリ及びサーチクエリの保護,バグ防止のためにTwitter Card2種類の文言削除,「記事を読んでみませんか?」を無視,「話題を検索」から「COVID-19」と「エンターテイメント」を削除

twitter.com##div:matches-attr("/aria-label|role|data-testid|class/"="/タイムライン:.*|listbox|listitem|presentation|userCell|article|option|link|tablist|tab|region|button/") > div > div:contains(/朝日新聞|週刊朝日|朝日ウイークリー|asahi\.com|BuzzFeed|リテラ|lite-ra\.com|ハフポスト|huffingtonpost\.jp|東京新聞|毎日新聞|琉球新報|文春|ミモレ|CREA|business\sinsider\sjapan|テレビ朝日|テレ朝|日本テレビ|日テレ|フジテレビ|フジ|TBS|報道ステーション|報ステ|時事ドットコム|時事通信|時事メディカル|共同通信|現代ビジネス|Number|news zero|FNN|ママデイズ|BLOGS|ORICON|フラウ|モデルプレス|新R25編集部|東洋経済|Tasty\sJapan|ゲキサカ|Plum|BLOGOS|bizble|Kstyle|FRIDAY|就職四季報|DIGIDAY|ライフハッカー|DELISH KITCHEN|COVID-19|COVID19|COVID_19|新型コロナ|コロナウイルス|反ワクチン|フェミニズム|フェミニスト|lgbt|lgbt|ジェンダー|マイノリティ|女性.*権利|権利.*女性|イエ制度|家制度|家長制|人権|男尊女卑|男女共同参画|男女平等|MeToo|KuToo|勝部元気|石川優実|伊是名|新垣結衣|ガッキー|インセル|K-POP|BTS|GOT7|EXO|韓国人|エンターテインメント · トレンド|エンターテイメント · トレンド|俳優 · トレンド|若者.*重症|重症.*若者|医師会|リベラリズム|リベラル|リベラリティ|学問.*自由|自由.*学問|文化.*芸術|芸術.*文化|学術会議|障害者|従軍慰安婦|南京大虐殺|ナチス|共産|菅直人|鳩山|民主党|りっけん|立憲|立民|生理|月経|妊娠|出産|退陣を求めます|辞職を求めます|ニュース|アベ政権|アベやめろ|スガ政権|スガやめろ|献金|過去最多|過去最大|過去最低|ぢゃな|([\uAC00-\uD7AF]|[\u1100-\u11FF]|[\u3130-\u318F]|[\uA960-\uA97F]|[\uD7B0-\uD7FF]|[\uFFA0-\uFFDF])+|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83C\uDF64/imsu)
twitter.com##div:matches-attr("/aria-label|role|data-testid|class/"="/タイムライン:.*|listbox|listitem|presentation|userCell|article|option|link|tablist|tab|region|button/") > div > div:has(img:matches-attr("/src/"="/.*1f3f3-fe0f-200d-1f308.*|.*1f364.*/"))
twitter.com##div[data-testid="card.layoutLarge.detail"]:remove()
twitter.com##div[data-testid="card.layoutSmall.detail"]:remove()
twitter.com##a:contains(/まず記事を読んでみませんか?/):remove()
twitter.com##div:matches-attr("/aria-label|role|data-testid|class/"="/presentation/"):contains(/COVID-19|エンターテイメント|スポーツ/):remove()
twitter.com#@#div:matches-attr("/aria-label|role|data-testid|class/"="/テキストをツイート|検索クエリ/")

結果としてはだいたいこんな感じになる

f:id:Soluna_Eureka:20210520021014p:plain
参考スクショ

pixiv

バグの可能性あり.自己責任で(とくにSafariでやると死にがち)

pixiv.net##section:contains(/pixivFANBOX/im)
pixiv.net##div > a:contains(/pixivプレミアム無料体験/im):remove()
pixiv.net##div > div > div > div > div:contains(/イラストリクエスト作品|漫画リクエスト作品|pixivisionの新着記事|コンテスト結果発表|募集中のコンテスト|pixivコミックの人気作品|マンガのレベルアップ講座/im)
pixiv.net##div > section:contains(/コメント/im)

nicovideo

バナー位置を選んで削除

nicovideo.jp##div:matches-attr("/class/"="/MatrixRankingBannerAd|RankingMatrixNicoadsRow|InView BottomContainer|CommentPanelBannerAd NicoSpotAdContainer/"):remove()
nicovideo.jp##html > head:contains(/banner/):remove()
nicovideo.jp##div > div > div[class="Ads"]:remove()

Google

画像検索や翻訳結果のサジェストを削除

google.com##div > c-wiz > scrolling-carousel:remove()
google.com##div > g-expandable-container:remove()

【広告ブロッカー】Twitterが無条件にステマしてくるゴミみたいなメディアや目障りなクソ情報をブラウザ上で無視するフィルタ

再配布不可能・私的利用可能

やり方

PCブラウザ版のTwitterに限る
まずは拡張機能でブラウザ用のadguardを入手する
次に以下をユーザールールにコピペする

twitter.com##div:matches-attr("/aria-label|role|data-testid|class/"="/タイムライン:.*|listbox|listitem|presentation|userCell|article|option|link|tablist|tab|region|button/") > div > div:contains(/朝日新聞|週刊朝日|朝日ウイークリー|asahi\.com|BuzzFeed|リテラ|lite-ra\.com|ハフポスト|huffingtonpost\.jp|東京新聞|毎日新聞|琉球新報|文春|ミモレ|CREA|business\sinsider\sjapan|テレビ朝日|テレ朝|日本テレビ|日テレ|フジテレビ|フジ|TBS|報道ステーション|報ステ|時事ドットコム|時事通信|時事メディカル|共同通信|現代ビジネス|Number|news zero|FNN|ママデイズ|BLOGS|ORICON|フラウ|モデルプレス|新R25編集部|東洋経済|Tasty\sJapan|ゲキサカ|Plum|BLOGOS|bizble|Kstyle|FRIDAY|就職四季報|DIGIDAY|ライフハッカー|DELISH KITCHEN|VOCE|マネー現代|Huawei|ファーウェイ|華為|COVID-19|COVID19|COVID_19|新型コロナ|コロナウイルス|反ワクチン|フェミニズム|フェミニスト|インセル|lgbt|lgbt|ジェンダー|マイノリティ|女性.*権利|権利.*女性|イエ制度|家制度|家長制|人権|男尊女卑|男女共同参画|男女平等|MeToo|KuToo|勝部元気|石川優実|伊是名|新垣結衣|ガッキー|大坂なおみ|K-POP|BTS|GOT7|EXO|TWICE|韓国人|エンターテインメント · トレンド|エンターテイメント · トレンド|俳優 · トレンド|このトピックは今後おすすめとして表示されません。|若者.*重症|重症.*若者|医師会|リベラリズム|リベラル|リベラリティ|学問.*自由|自由.*学問|文化.*芸術|芸術.*文化|学術会議|障害者|従軍慰安婦|南京大虐殺|ナチス|共産|菅直人|鳩山|民主党|りっけん|立憲|立民|生理|月経|妊娠|出産|退陣を求めます|辞職を求めます|ニュース|アベ政権|アベやめろ|スガ政権|スガやめろ|献金|過去最多|過去最大|過去最低|ぢゃな|([\uAC00-\uD7AF]|[\u1100-\u11FF]|[\u3130-\u318F]|[\uA960-\uA97F]|[\uD7B0-\uD7FF]|[\uFFA0-\uFFDF])+|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08/imsu)
twitter.com##div:matches-attr("/aria-label|role|data-testid|class/"="/タイムライン:.*|listbox|listitem|presentation|userCell|article|option|link|tablist|tab|region|button/") > div > div:has(img:matches-attr("/src/"="/https:\/\/abs-0\.twimg\.com\/emoji\/v2\/svg\/1f3f3-fe0f-200d-1f308\.svg|https:\/\/abs-0\.twimg\.com\/emoji\/v2\/svg\/1f364\.svg/"))
twitter.com##div[data-testid="card.layoutLarge.detail"]:remove()
twitter.com##div[data-testid="card.layoutSmall.detail"]:remove()
twitter.com##a:contains(/まず記事を読んでみませんか?/):remove()
twitter.com##div:matches-attr("/aria-label|role|data-testid|class/"="/presentation/"):contains(/COVID-19|エンターテイメント|スポーツ/):remove()
twitter.com#@#div:matches-attr("/aria-label|role|data-testid|class/"="/テキストをツイート|検索クエリ/")

大まかな解説

使い方

ミュートしたい言葉をdiv:contains(/AAA|BBB|CCC/)AAABBB`CCC正規表現として入れる
それを含むツイートやユーザーは全て非表示になる(ユーザーページではユーザーの情報だけは見えてしまうけど)
正規表現検索を利用しているので公式クライアントより正確に安全に条件を絞れるミュート機能としての使い方が出来る
正規表現を用いた検索にはフラグとして/imusを使っているが,コレ以外の設定だと思うように動作しないので変更しない方が良い

絵文字の絞り込みには絵文字用の.svgイメージのソースURLを用いている,単独でUnicodeポイントが与えられる絵文字(例:🍤)ならば前後に.*を加えて入れれば良い(例:.*1f364.*)し,複数の絵文字の合成によって表示される絵文字(例:🏳️‍🌈)は指示に沿った複数のUnicodeポイントを半角ハイフンで連結し前後に.*を加えて入れれば良い(例:.*1f3f3-fe0f-200d-1f308.*
ちなみに正規表現を利用した検索において用いるUnicodeポイントがhex4桁までしか認められていない,サロゲートペアを利用してhex5桁1つをhex4桁2つに変換する必要がある,さすがに人力ではダルいので専用ツールサイトの利用を推奨する(例:🍤=>\uD83C\uDF64)(例:🏳️‍🌈=>\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08

|([\uAC00-\uD7AF]|[\u1100-\u11FF]|[\u3130-\u318F]|[\uA960-\uA97F]|[\uD7B0-\uD7FF]|[\uFFA0-\uFFDF])+はなにかって?これだけでハングルを全ブロックできる韓流トレンドのゴリ押しが悪い

またツイートクエリおよびサーチクエリはバグ動作回避のために対象外に設定することで保護した
Twitter Cardの説明文はバグ回避のため削除した,ちなみにLargeとSmallの2種類が存在する
さらに「まず記事を読んでみませんか?」を削除,「話題を検索」から「COVID-19」と「エンターテイメント」「スポーツ」を削除,「おすすめ」「トレンド」からジャンルで削除するにはエンターテインメント · トレンド|エンターテイメント · トレンド(なぜか2種類ある)を最初の正規表現のミュートリストに正確に追加する

仕組み

:matched-attr()と特定のパラメータを用いて検査の対象のdivを決め打ちし,:contains()と各種のワードで検査して引っかかったdivを不可視化している
> div >はどうやらdivの階層構造の深さを表すらしい…が,今のところ1個だけの状態が最もパフォーマンスが良い
そしてワンライナーで複数のdivを選定しているのでリストも1つで済む,フィルタリングがより快適になった

本来なら:remove()して少しでもブラウザを軽くしたかったのだが,非常によくバグる(Something Wrong is ~...の表示)ので断念
他のブラウザ用フィルタの拡張機能では同じ関数が使えないので,ほぼAdGuard専用になっていると考えて良い

注意

"/タイムライン:.*|listbox|listitem|presentation|userCell|article|option|link|tablist|tab|region/")の部分に"tweet"を加えると入力欄がバグるのでやらないこと
正規表現を間違えると想定外の動作を起こすので注意して入力すること

詳細な補足

仕様について

本来のコンテンツブロックは,basec ruleとしてドメインごとに挙動を設定できることが出発点であり,その次にCSS上の設定値や擬似クラスを利用して要素を指定してhideやremoveが可能になるnon-basic ruleがあり,その次にようやくextended css selectorがAdGuardに用意されているほか,さらにHTMLやScriptに対してのフィルタリングが実装されています
今回はextended css selectorを主に利用しており,matches-attrcontainsはどちらもDOMの変更を監視し,変化が発生する都度に評価を行いそれに則って動作します,なのでタイムラインの更新にも対応しています

ネット上の他の記事だとdiv[xxx="yyy"]div:has-text(/xxx|yyy/)のような解説が多いですが,前者は拡張性と管理性が低い・後者は使用する関数が古い問題があります,AdGuardのユーザールールのリファレンス(最新版)に沿いつつ設計することをお勧めします
ただし:has()セレクタCSS 4.0で実装されると策定されただけなので,現状どのブラウザでも未実装です,使えないので注意しておきましょうなので,公式リファレンスにある通りAdGuard内で関数が先行して実装されているので,使っても大丈夫です
aa.jp##div:matches-attr("/bb/"="/cc/"):contains(/xyz/):remove()みたいに関数を連結することが可能です,特定要素を丸ごと消したかったらこうした方が手っ取り早いです(効果範囲には気をつけましょう)

ユーザーが細かに挙動を制御できることで有名なuBLock Originと比較しましたが.正規表現が使えるAdGuardの方が今回は便利だと判断しました,あくまで他のブラウザ拡張機能では今回の構文が使えません

「エンターテイメント」と「エンターテインメント」

Twitterにはなぜか表記揺れがあります,両方消しましょう.

divの中身について

"/aria-label|role|data-testid|class/"

divタグのパラメータで明確に区別がつくのはおそらくはこの4つだけです
ちなみにTwitterはreactで動いているらしいです(react-rootがある)

タイムライン:.*

ユーザー発のアクティビティに関するもの,正規表現で以下を1個にまとめました
いずれもaria-label=で与えられます

タイムライン: ホームタイムライン

ホームに流れるタイムライン

タイムライン: トレンド

今どうしてる?

タイムライン:

最近でてきた「おすすめトピック」 後で名前が変わりそうなので注視

タイムライン: 話題を検索

検索ページのトップ

タイムライン: Carousel

検索ページでの横並びのサジェスト

タイムライン: タイムラインを検索

検索した結果

タイムライン: 会話

各ツイートのスレッド

タイムライン: 通知

通知

タイムライン: メッセージ

DM

タイムライン: リツイートされました

通知をクリックした画面

タイムライン: いいねしました

通知をクリックした画面

タイムライン: リツイートしたユーザー

ツイートから見れるやつ

タイムライン: いいねしたユーザー

ツイートから見れるやつ

listboxlistitem

role=で与えられます
検索窓のサジェスト欄と履歴欄がコレです,トレンド名とアカウント名を両方とも潰すには2つとも必要です

tablisttab

role=で与えられます
上と同じようなものです

userCell

data-testidで与えられます
色んな所に並んで表示される時にユーザーを非表示にします

articleregion

role=で与えられます
全てのツイートはコレに入っているので,念の為に対象にします

option

role=で与えられます
サジェストとか設定ボタンの枠です

link

role=で与えられます
Twitterが用意してくるリンクは大抵はこの中にあります

regionbutton

role=で与えられます
でっかい組み分けの箱と要素はこれです

card.layoutLarge.detailcard.layoutSmall.detail

data-testidで与えられます
説明文がバグを起こすので削除しました

スマホ対応について

例えばiPhoneSafariだと現時点ではうまく動作していません
ちょっとよくわからん,ユーザールールの動作条件がPCとは違うらしいですコンテンツセキュリティポリシーという存在のせいでAdGuardの動作そのものが制限されている可能性がありますね…
解決したらまた追記したいです

最後に

この記事は改善していくので,告知があれば最新版のルールを使った方がいいです
あとTwitterは無●

【macOS】Automatorで「pdf => png」「png => pdf」のクイックアクションを作る

参考元

Automatorを使って、PDFをpngに変換してPDFファイルと同名のディレクトリに置く
夏目祐樹

これのパターンを元に手を加えた

やりたいこと

pdfへの直書きができなかったり,写真をそのまんまpdfでまとめたかったり,そういう時にGUIをいちいち立ち上げるのは面倒すぎた
あとBig Surのプレビュー.appが72dpiでしかラスター出力できなくなってて詰んだ,それだと細かく書ききれないからマジで辛い…

縛り

  • Automator使用
    • 簡単に
    • 汎用に
    • 単一完結
  • クイックアクションとして呼び出す
    • それならファイルを右クリックして呼び出せる
    • アプリケーションとして?そんなん要らんやろ
  • Apple Scriptなし
    • Finderやプレビューの呼び出し説明書を読む気力が全くない
    • 本当ならScriptを書いて完結させるのがスマートだとは思う

PDF to PNG

1つのpdfから複数のpng

1.pdfファイルの受け入れ

f:id:Soluna_Eureka:20210825203922p:plain

ポイント

Automatorにはパス操作向けのテキスト処理の機能がないからbashのちからを借りるぜ!
入力は引数として入ってきた順番で$1$2みたいにになるぜ!
標準出力がそのままモジュールの出力になるぜ!
basenameにこんな感じにフルパスと拡張子を渡せば元のファイルの名前が得られるぜ!

2.生成するpngファイルの命名

f:id:Soluna_Eureka:20210825203933p:plain

ポイント

デフォルトだと元のpdfの名前がつくようになってるぜ!

3.元のpdfファイルがあるフォルダのパスを取得

f:id:Soluna_Eureka:20210825203950p:plain

ポイント

bashのちからを借りるぜ!
pngファイルをしまうフォルダを作るのに必要だぜ!
dirnameにこんな感じにパスを渡せば1段だけ上のディレクトリのパスが得られるぜ!

4.収納するフォルダのパスを生成

f:id:Soluna_Eureka:20210825204042p:plain

ポイント

bashのちからを借りるぜ!
pngファイルをしまうフォルダを作るのに必要だぜ!
さっき作ったフォルダの下にさっきつけた名前でフォルダを作った時のパスが得られるぜ!
ただし末尾に_PNGsをつけてわかりやすくしてやるんだぜ!

5.収納するフォルダを生成

f:id:Soluna_Eureka:20210825204105p:plain

ポイント

こっちも末尾に_PNGsをつけるんだぜ!

6.pngレンダリング

f:id:Soluna_Eureka:20210825204118p:plain

ポイント

他の拡張子を選ぶといろんな設定が出てくるぜ!
ちなみに350dpiは日本の印刷機には多い要件らしいんだぜ!

7.名前を編集してフォルダに収納

f:id:Soluna_Eureka:20210825204136p:plain

ポイント

作成日の昇順で並べてから1スタートの連番を通すとページ数になるぜ!
(ところでフォルダに収納しなかったファイルはどこにいくんだろうな)

PNG to PDF

複数のpngから1つのpdf

1.pngファイルの受け入れ

f:id:Soluna_Eureka:20210825204216p:plain

ポイント

さっきとほとんど同じだぜ!
複数選択の場合だとFinder表示上のトップファイルが変数の先頭になるっぽいぜ!

2.生成するpdfファイルの命名

f:id:Soluna_Eureka:20210825204232p:plain

ポイント

さっきとほとんど同じだぜ!

3.元のpngファイルがあるフォルダのパスを取得

f:id:Soluna_Eureka:20210825204245p:plain

ポイント

さっきとほとんど同じだぜ!
元の画像たちはなるべく1つのフォルダにまとめて置いとくことをおすすめするぜ!

4.収納するフォルダのパスを生成

f:id:Soluna_Eureka:20210825204256p:plain

ポイント

さっきとほとんど同じだぜ!
ただし末尾に_PDFをつけてわかりやすくしてやるんだぜ!

5.収納するフォルダを生成

f:id:Soluna_Eureka:20210825204309p:plain

ポイント

こっちも末尾に_PDFをつけるんだぜ!

6.pdfをレンダリング

f:id:Soluna_Eureka:20210825204320p:plain

ポイント

pngファイルの名前の順にページを編み込めるぜ!
並びを指定したい時は名前を変えればいいんだぜ!

7.名前を編集してフォルダに収納

f:id:Soluna_Eureka:20210825204333p:plain

ポイント

さっきとほとんど同じだぜ! 基本名だけ変えた方が安全だぜ!

感想

確かに手間は省けるようになった. ただしpdfからの変換は全てのページがpngになるので,不要なものは手動で消さねばならない …おとなしくクリスタEXとpdf対応IOプラグインを買いたいなと思いました.CELSYS万歳!

TwitterのMedeia Studioについて

Twitterの仕様が変わった

今年の4/1から色々と変わった

  • Androidユーザー向けにもSpacesが実装される
  • Periscopeは廃止,代わりにTwitter Media Studioが実装

Spacesについて

スルーします,スマホからじゃないと参加できない媒体とか個人的にちょっと信用できないし手を出す気にはなれないので

Periscopeはどうなった?

現状で以下のように確認できた

  • 新規ユーザーの登録は全て不可能

  • 登録済ユーザーのログインについて

    • iOSアプリは不可能
      • 4/1以前にログイン済ならセーフ,ただし再ログインは不可能
      • ログイン済ならスマホからの放送も可能
      • 過去の自分の放送も閲覧可能,削除は可能
    • ブラウザは可能
      • OBSなどから接続して配信する事は不可能
      • 過去の自分の放送も閲覧可能,ただし削除は不可能(元からできないんだけど)
  • 過去の放送について

    • Periscopeで配信されたものはPeriscopeドメインTwitterドメインの双方で見れる
      • 過去の放送だけ「Periscopeで視聴」が可能になる
      • 逆にProducer(後述)から配信した放送は「Periscopeで視聴」を押しても読み込まれない
    • iOSアプリからログアウトした場合,現時点では「ブラウザからログインしてアカウントを消す」意外に過去の放送を消す手段は存在しない
      • Twitter Media Studio(後述)にも放送があったことは表示されるが一切の編集できない
      • その場合,放送ソースには「Periscope」と表示される,別のサーバーからリダイレクトされてるっぽい

Twitter Media Studioについて

  • 「もっと見る」=>「Media Studio」で別ページが新規タブで開く

    • 「ライブラリ」はツイートしたメディア +「Producer」はPeriscopeを含む全てのライブ放送
    • インサイト」はメディアに関連するアカウントアクティヴィティ
    • 「予約投稿ツイート」は全ての予約ツイート
    • 「アナリティクス」はアカウントの全てのアナリティクス(別ページが新規タブで開く)
  • ProducerがPeriscopeの代わりに該当する,これが本題

Producerのやりかた

  • 「ライブ放送を作成」
  • 放送名,カテゴリ,ソースを設定
    • ソースは配信ソフトから繋げる宛先
    • URLとストリームキーがある
  • 「ライブ放送を作成」

その他の設定

オーディエンス

公開範囲のこと

予約設定

放送の開始時間と終了時間を指定できる 要するに切り忘れ系の放送事故が起こりにくい

繰り返し

定期配信向け昨日.毎週か毎日かで設定可能

ポスター画像

サムネのこと

Periscopeの設定

チャットを全画面モードで表示… 現状ではProducerからの放送にはPeriscopeでの接続は不可能 よってチャットはできない,つまり完全な死に機能,乙

ストリームの暗号化

いらないと思う

リプレイの制限

切り抜き対策かな?

地域の制限

中○人●共◉国に喧嘩を売る時くらいにしか使わないのでは?

補足

Periscopeのアカウントのライブ履歴の場所にもProducerで配信中のライブは表示されないので,コメントやチャットは完全にできないと考えた方がいい Periscopeは現状ではただのアーカイブセットになっている

結論

コメント機能なくした運営には失望した,はい

MacのUSキーボードでGoogle日本語入力を使う際の不具合

MacのUSキーボードでGoogle日本語入力を使う際の不具合

きっかけ

  • 半角スペースをデフォで打ちたい
  • 変換候補の精度が高い方がいい

やりかた

brew install --cask google-japanese-ime

もんだい

  • なぜかドイツ語入力になる
  • そのせいでかっこ等の記号類が思うように打てない

たいさく

  • そもそもGoogle日本語入力を使わない事,鉤括弧も入力できないので完全に無理
  • キーの置き換えもやめた方がいい
  • 半角スペースは「⇧」「␣」で打てるのでまぁ…

macOS `Catalina`に`clang 12.0.0`を入れて`ruby 3.0.0`を入れるだけ

ある日,rbenvを見ていた

brew upgrade ebenvして,

$ rbenv install -list
2.5.8
2.6.6
2.7.2
3.0.0
jruby-9.2.14.0
mruby-2.1.2
rbx-5.0
truffleruby-20.3.0
truffleruby+graalvm-20.3.0

昨年中にruby 3.0.0が正式にリリースされ,rbenvも対応したらしい.入れてみよっかなぁ〜俺もなぁ〜…

そのruby 3.0.0を入れようとしてしくじった

当時の環境は以下の通りだった.

  • MBP 2016 15inch
  • macOS Catalina
    • clang Apple 11.0.0←だいたいこいつのせいだった

吐かれたエラー

...
linking miniruby
generating x86_64-darwin19-fake.rb
x86_64-darwin19-fake.rb updated
make: *** [exe/ruby] Segmentation fault: 11
make: *** Deleting file 'exe/ruby'

BUILD FAILED (Mac OS X 10.15.7 using ruby-build 20201225)

Inspect or clean up the working tree at /var/folders/rk/0hczm32x2znb6pr6h4858hpc0000gn/T/ruby-build.20210104003100.75691.mUe6Zo
Results logged to /var/folders/rk/0hczm32x2znb6pr6h4858hpc0000gn/T/ruby-build.20210104003100.75691.log

Last 10 log lines:
compiling enc/unicode.c
compiling enc/utf_8.c
compiling enc/trans/newline.c
./revision.h unchanged
compiling version.c
linking miniruby
generating x86_64-darwin19-fake.rb
x86_64-darwin19-fake.rb updated
make: *** [exe/ruby] Segmentation fault: 11
make: *** Deleting file 'exe/ruby'

どうやら最後のmakeのとこでしくじったらしい.

原因推定

Segmentation fault: 11,これはなんかコンパイラが悪い気がしたので,設定や経過を見たくなった.

rbenv install -v 3.0.0

-vしながらrbenv installすると諸々の経過が見える,その結果

Configuration summary for ruby version 3.0.0

   * Installation prefix: /Users/username/.rbenv/versions/3.0.0
   * exec prefix:         ${prefix}
   * arch:                x86_64-darwin19
   * site arch:           ${arch}
   * RUBY_BASE_NAME:      ruby
   * enable shared:       yes
   * ruby lib prefix:     ${libdir}/${RUBY_BASE_NAME}
   * site libraries path: ${rubylibprefix}/${sitearch}
   * vendor path:         ${rubylibprefix}/vendor_ruby
   * target OS:           darwin19
   * compiler:            clang -fdeclspec
   * with pthread:        yes
   * with coroutine:      amd64
   * enable shared libs:  yes
   * dynamic library ext: bundle
   * CFLAGS:              ${optflags} ${debugflags} ${warnflags}
   * LDFLAGS:             -L. \
                          -L/Users/username/.rbenv/versions/3.0.0/lib  \
                          -fstack-protector-strong -L/usr/local/lib
   * DLDFLAGS:            -L/Users/username/.rbenv/versions/3.0.0/lib  \
                          -Wl,-undefined,dynamic_lookup \
                          -Wl,-multiply_defined,suppress
   * optflags:            -O3
   * debugflags:          -ggdb3
   * warnflags:           -Wall -Wextra -Wdeprecated-declarations \
                          -Wdivision-by-zero \
                          -Wimplicit-function-declaration -Wimplicit-int \
                          -Wpointer-arith -Wshorten-64-to-32 \
                          -Wwrite-strings -Wmissing-noreturn \
                          -Wno-constant-logical-operand -Wno-long-long \
                          -Wno-missing-field-initializers \
                          -Wno-overlength-strings -Wno-parentheses-equality \
                          -Wno-self-assign -Wno-tautological-compare \
                          -Wno-unused-parameter -Wno-unused-value \
                          -Wunused-variable -Wextra-tokens
   * strip command:       strip -A -n
   * install doc:         rdoc
   * JIT support:         yes
   * man page type:       doc
   * BASERUBY -v:         ruby 2.7.2p137 (2020-10-01 revision 5445e04352) \
                          [x86_64-darwin19]

を吐きながら,同じように失敗した.

   * target OS:           darwin19
   * compiler:            clang -fdeclspec

を見るに,macOS備え付けのclangを使っていることは察せた(私はいまだにコンパイラに手を出した事がない).

$ clang -v
Apple clang version 11.0.0 (clang-1100.0.33.8)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

どうもビルドにはコイツを使ったらしい. 悩んでTwitterを彷徨っていたら,clang Apple 12.0.0ruby 3.0.0を入れたっぽい方を発見した. またこ↑こ↓によると,macOS Big SurでちゃんとXCodeを入れている人は

$ clang --version
Apple clang version 12.0.0 (clang-1200.0.32.27)
Target: x86_64-apple-darwin20.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

となるらしい(私はXCodeを入れた後に消した,だってあれデカイし重いし…).

つまりclangのバージョンが古いせいでしくじったんじゃね?と考えた.

解決編

概要

CommandLineToolsを強制的に入れ直すとclang 12.0.0になるのでヨシ!ruby 3.0.0も入れられる!

手順

Catalinasoftowareupdateに任せてもそれ以上にCommandLineToolsは新しくならない(つまりclang 12.0.0はどう足掻いても手に入らない)ので,いっそ手動で入れ直す.

$ sudo rm -rf /Library/Developer/CommandLineTools
...
$ xcode-select --install

バージョン確認すると

$ clang -v
Apple clang version 12.0.0 (clang-1200.0.32.28)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

こうなるはず,やっぱりXCodeがなくても大丈夫だったじゃないか…

これで

$ rbenv install 3.0.0

すれば

Installed ruby-3.0.0 to /Users/username/.rbenv/versions/3.0.0

が出るはず,バージョンを変えるか変えないかはあなた次第だが

rbenv local 3.0.0

とかでできる.

終わり!閉廷!以上!みんな解散!君もう帰って良いよ

おまけ

clang 11.0.0(やそれ以前の任意のバージョンのclang)を使いたい時にどうするかを考えた.

概要

homebrewllvmを入れて,それ経由でclangのバージョンを任意に変えられるようにしようぜ?

llvmとは

llvmを開発している組織さんの公式ページはこ↑こ↓llvmまわりのダウンロードやドキュメント等はこ↑こ↓llvm自体はcc++コンパイラclangのバックで動いているような中間言語を生成するシステムで,というかclangcの仕様に対応しながらllvmと並行で開発・維持され続けているものになっている…らしいな? つまりある時からllvmのバージョンがclangのバージョンになっている,そしてbrewで手に入れられる最新版は今だとllvm 11.0.0で,それを入れるとclang 11.0.0がもれなくそれについてくる…という流れになる.

ただあくまで言語やアーキテクチャに依存せずより効率の良い中間言語を生成しようとするのがllvmで,それを利用してobjective-cなどをコンパイルするのがclang,そんでclangの開発の言い出しっぺはやっぱりAppleで…だからあっXCodeにちゃんと最新版のclang 12.0.0が入って提供されている,やっぱ林檎ってすげぇわマジで…

…なのでclanggccよりも性能と使い勝手が共に良い…らしい(私は開発者ではないので全くわからないが).

事前準備

homebrewを導入しておく.

最新版のllvmだけで良いなら

まずは入れてみる.

$ brew install llvm <versions>
...
$ brew info llvm
...

ちゃんと注意書きを読む(抜粋).

To use the bundled libc++ please add the following LDFLAGS:
  LDFLAGS="-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib"

llvm is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have llvm first in your PATH run:
  echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> /Users/SolunaEureka/.bash_profile

For compilers to find llvm you may need to set:
  export LDFLAGS="-L/usr/local/opt/llvm/lib"
  export CPPFLAGS="-I/usr/local/opt/llvm/include"

keg-only…つまりシンボリックリンクが生成されないタイプのパッケージだけど,中身はちゃんとあるからパスだけは通そうね!あとコンパイラに知らせたいフラッグにも対応しているから,使いたければパスだけは通そうね!(意訳)

…ということで,コマンドとしてのllvmはどうもなさそうなので,それを打ってllvm経由のclangが有効になるような感じにするために,.bash_profileをいじる(参考:学生たちの技術ブログ).まだbashでごめんなさい

function llvm (){ #関数を定義している
    export PATH="/usr/local/opt/llvm/bin:$PATH" #以下,先の注意書きの通りにパスを追加・変更する
    export LDFLAGS="-L/usr/local/opt/llvm/lib"
    export CPPFLAGS="-I/usr/local/opt/llvm/include"
    unset -f llvm #いったん呼び出されたら定義されたこの関数を破壊する
}

ここまで終わったらterminalを立ち上げ直して

$ llvm
$ clang -v
clang version 11.0.0
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm/bin

になるはず. 新しいタブを開けば元に戻るので安心だね!

旧版のllvmを使いたいなら

homebrewは基本的に最新版以外は絶対に認めないマンな上に過去版のインストールに関しては仕様が変わるらしい,そんな中で個人的に現在の参考になったのはこ↑こ↓brew tap-newbrew extractを用いて,自家製のtapに公式のformulaをぶち込んで,そのtapから更にbrew installすれば良い,らしい.これを発案した人,本当に賢い…

ということで試しにllvm 10.0.0を入れてclang 10.0.0に切り替えようとしてみる(主要な出力を抜き出す).

$ brew tap-new llvm/1000
Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/llvm/homebrew-1000/.git/
[master (root-commit) d649d61] Create llvm/1000 tap
 3 files changed, 85 insertions(+)
 create mode 100644 .github/workflows/publish.yml
 create mode 100644 .github/workflows/tests.yml
 create mode 100644 README.md
==> Created llvm/1000
/usr/local/Homebrew/Library/Taps/llvm/homebrew-1000

$ brew extract llvm llvm/1000 --version 10.0.0
==> Searching repository history
==> Writing formula for llvm from revision 96544f6 to:
/usr/local/Homebrew/Library/Taps/llvm/homebrew-1000/Formula/llvm@10.0.0.rb

$ brew install llvm/1000/llvm@10.0.0
==> Installing llvm@10.0.0 from llvm/1000
llvm@10.0.0: A full installation of Xcode.app is required to compile
this software. Installing just the Command Line Tools is not sufficient.

Xcode can be installed from the App Store.
Error: An unsatisfied requirement failed this build.

XCodeがないとダメと言われた.なんだコレは,たまげたなぁ… もしちゃんと入れている人がいたら試してみて欲しい.

あとはどうにかしてバージョンを切り替えてみて欲しい…

感想

コンパイラって色々あって大変だな〜とづまりすとこ 絶対もっと良いやり方があるのでは?brewはバージョン管理に不向きだしllvmclangは公式サイトからDLして突っ込んで自分でちゃんと関数を組み上げた方がいいんじゃないか?問題は解決したからもう何も考えられないけど…

【小ネタ】ユーザー名を変えたら「dyld: Library not loaded」

ユーザー名を変えた

こ↑こ↓の通りに変えてみた 【変更前】soluna=>【変更後】SolunaEureka ちゃんと再起動もした

結果

$ ruby -v
dyld: Library not loaded: /Users/soluna/.rbenv/versions/2.7.2/lib/libruby.2.7.dylib
  Referenced from: /Users/soluna/.rbenv/versions/2.7.2/bin/ruby
  Reason: image not found
Abort trap: 6

ユーザー名が古い方で動作していた

影響を受けた奴ら

rubyrbenv),python3pyenv),nodenodenv) 載せているのは1個目のケース というか確認してないだけで相当数が影響を受けてるんじゃ…

解決

source ~/.bashrcをやり直す

$ ruby -v
dyld: Library not loaded: /Users/soluna/.rbenv/versions/2.7.2/lib/libruby.2.7.dylib
  Referenced from: /Users/SolunaEureka/.rbenv/versions/2.7.2/bin/ruby
  Reason: image not found
Abort trap: 6

シンボリックが参照してくるディレクトリの文字列が変わってねぇ

そもそも入れ直す

rbenv uninstall 2.7.2
rbenv install 2.7.2

解決した

$ ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin19]

他のも全て同じ方法で解決した

もっとややこしい問題だと思ったけどコレで済んでよかった

気づいたこと

...
Downloading openssl-1.1.1h.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/5c9ca8774bd7b03e5784f26ae9e9e6d749c9da2438545077e6b3d755a06595d9
Installing openssl-1.1.1h...
Installed openssl-1.1.1h to /Users/SolunaEureka/.rbenv/versions/2.7.2
...
ruby-build: using readline from homebrew
...

なぜかopensslが入れ直された あとruby-buildnode-buildpython-buildもみんなopensslreadlineを使っとる そしてpython-buildだけ/usr/local/Cellar/にない,なにゆえお前だけ/usr/local/bin/にある… (昔の記憶がもう残っていないから不明)(brewは取り扱っていないらしい)

MathJax v3.x メモ-1 MathJaxの導入

現在の最新版は8/25リリースのv3.1らしい

MathJax公式ドキュメント

何かあったらこ↑こ↓を読んでくれよな〜頼むよ〜

注意

ちょっと頑張って和訳したり実験したりしているだけです,あんまり本気でアテにするなよ…?

前提

(特には)ないです.

MathJaxの導入

最も基本の型

こ↑こ↓にある通りだと

<script type="text/javascript" id="MathJax-script" async
  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
</script>

<head></head>にぶち込めばおk. ちなこのcdn.jsdelivrはこのままだと強制的に最新版を読み込ませてくるので,それが嫌なら

<script id="MathJax-script" async
  src="https://cdn.jsdelivr.net/npm/mathjax@3.x.y/es5/tex-mml-chtml.js">
</script>

のように,指定したいバージョンを@3.x.yみたいにフル記述してやればおk. これでもうバージョン管理は…完璧やな!

概念として

「html本文を読み取った内容を読める数式として出力する」という性質上,html本文に記述する入力とページに表示される出力のそれぞれに,方式が2つずつ存在する. 入力ならば

  • TeX
    • みなさんお馴染みのまさしくアレ
  • MML
    • XMLとしてXHTMLにぶち込まれる

,出力ならば

  • chtml
    • どうやらこれはCSS+HTMLを意味するらしい,決してCompact HTMLではない
  • svg
    • どんだけ拡大しても品質が劣化しないヤツ,これを生成して直に埋め込むらしい

,これをどう設定するかによって最初の話からがらりと変わってくる…のだが,俺はTeXsvgが好きだからよ,折角だしTeX入力・svg出力を選ぶぜ!

用途ごとの使い分け

じゃあさっきの例だとtex-mml-chtml.jsを呼び出すということだ,そしてこれは「tex型の入力もmml型の入力も受け入れてchtmlで出力する」ということ,他のパターンならこ↑こ↓にある通り

なんか-fullって付いてあるのが強そうだな!じゃあ俺は

<script type="text/javascript" id="MathJax-script" async
  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg-full.js">
</script>

<head></head>にぶち込んでやればいいんだな!

☝️-fullってなんだよ

こ↑こ↓によると,TeXの入力の処理に使うライブラリを事前に全てロードさせるオプションらしい.

更なるオプションについて

実は最初のロードの時点で使うライブラリやその動作の設定自由自在にできたりする,TeXのオプションだったりMathMLのオプションだったりAsciiMathのオプションがある,その上でTeXにはこれだけのライブラリを個別に使い分けられるだからこれほどまでにTeXを勧めているという節もある. じゃあ試しに書いてみるか,さっきのinput/tex-fullのとこには

This is the most complete TeX input component. It includes the main TeX/LaTeX input parser, along with all the TeX extensions, and is configured to enable all of them other than physics and colorv2. You can add these two to the packages array in the tex section of your MathJax configuration, though you should remove the color extension if you add the colorv2 extension, and should remove the braket extension if you enable the physics package. これは最も完全なTeX入力コンポーネントです。 これには、メインのTeX / LaTeX入力パーサーとすべてのTeX拡張機能が含まれており、物理学とcolorv2以外のすべてを有効にするように構成されています。 これら2つをMathJax構成のtexセクションのpackages配列に追加できますが、colorv2拡張機能を追加する場合はcolor拡張機能を削除し、physicsパッケージを有効にする場合はbracket拡張機能を削除する必要があります。

って書いてある,つまり-fullした上で更にcolorbracketを減らしてcolorv2physicsを入れることができる(そしたらコマンドの重複がなく安全に動作する)らしいな? こ↑こ↓の全体像とこ↑こ↓の説明

This array lists the names of the packages that should be initialized by the TeX input processor. The input/tex and input/tex-full components automatically add to this list the packages that they load. If you explicitly load addition tex extensions, you should add them to this list. For example: この配列は、TeX入力プロセッサによって初期化される必要があるパッケージの名前をリストします。 input / texおよびinput / tex-fullコンポーネントは、ロードするパッケージをこのリストに自動的に追加します。 追加のtex拡張機能を明示的にロードする場合は、それらをこのリストに追加する必要があります。

そしてこ↑こ↓の例文を見る限りだと,なんだか

MathJax = {
  loader: {load: ['[tex]/colorv2', '[tex]/physics']},
  tex: {
    packages: {
      '[+]': ['colorv2', 'physics'],
      '[-]': ['color', 'bracket']
    }
  }
};

というような形が推奨されているように思うなぁ…

urlとライブラリの対応関係

  • input/tex-base
    • baseのみ
      • requireautoloadも入ってないので,本文中のTeX記法からの拡張が不可能になる
  • input/tex
    • base
    • ams
    • newcommand
    • require
    • autoload
    • configmacros
    • noundefined
    • 管轄外のコマンドを呼び出すと,physicscolorv2以外なら勝手にrequireする
      • ちなみに自分でrequireで明示的に呼び出した方が整理しやすいらしいよ
  • input/tex-full
    • physicscolorv2以外の全て
      • その2つはbracketcolorと差し替えできる

以上からわかる通り,別にTeX専用のライブラリに限らずとも,そもそもInputのコンポーネントOutputのコンポーネントも同じくライブラリの扱いであり,単に指定しなければsrcの先のurlに-fullがあるか否かでロードする中身を勝手に決めているだけである.

requireautoload

requireの出来る仕事は本家TeX並みに強く,説明ページには

The require extension defines the non-standard \require macro that allows you to load extensions from within a math expression in a web page. require拡張機能は、Webページの数式内から拡張機能をロードできるようにする非標準の\ requireマクロを定義します。

とあり,つまりコイツさえ入れれば各ページでrequireすることで逐次にロードできる.

他方でautoloadTeXコマンドとロードするライブラリとの対応関係を事前に定義するものであり,そのTeXコマンドをWebページの本文に打っておくと最初にロードされる. 説明ページを見てもrequireとは準備や挙動が全く異なることがわかるが,TeX本家にはなさげな見慣れない機能なので,試しに動作する例を示すと

MathJax = {
  loader: {
    load: ['input/tex-base', 'output/svg', '[tex]/autoload']
  },
  tex: {
    packages: {
                    '[+]': ['base', 'autoload']
    },
    autoload: {
      boldsymbol: ['boldsymbol']
    }
  }
}

スクリーンショット 2020-11-30 0.13.31.png

後述するloader: {load: []}tex: {packages: {}}とは無関係にロードを行うことができる,という点はrequireと共通している

最小構成のやり方について

ん?先に挙げた最小構成オプションの選択肢に対応するようなURLがこ↑こ↓のリストに載ってないやん!と思う方も中にはいるかもしれない. だがしかし,そもそもこのMathJaxオブジェクトの中のloader: {}(の中のload: [])こそが,ページがロードする中身を事前に決め打ちできるレシピのような存在なのである.早い話が例えば

MathJax = {
  loader: {load: ['input/tex-base', 'output/svg']},
  tex: {
    packages: {
      '[+]': ['base']
    }
  }
};

とすれば,取り合えずは(使えるかどうかは置いといて)最小構成となる. 更にrequireautoloadを含めて柔軟性を高めた最小構成であれば

MathJax = {
  loader: {load: ['input/tex-base', 'output/svg', '[tex]/require', '[tex]/autoload']},
  tex: {
    packages: {
      '[+]': ['base', 'require', 'autoload']
    }
  }
};

と設定してやるのが妥当であろう.

しかしそう設定したところで,srcの先のurlを

<script type="text/javascript" id="MathJax-script" async
  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
</script>

やら

<script type="text/javascript" id="MathJax-script" async
  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg-full.js">
</script>

やらとやってしまって良いのだろうか?いや,やっぱりそれはよくない(反語). 後述するstartup用いなければMathJaxの指定通りのロードは完璧にはできない. そしてドキュメントには仕様が載っていなかったので,自分でやって比較してみた…

fullを選ぶ

startupを選ぶ

下の方が指定通りのロードをしていそうなことがわかる. よって突き詰めるのであれば

<script type="text/javascript" id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/startup.js">
</script>

を選択することが正しいと考えられる.でもurlを打てば一括でロードできちゃうのは楽なんよ

まだまだあるよ!ライブラリ

別にライブラリがあるのはTeXに限った話ではないし,面白い機能もあったりする.

アクセシビリティ

さっきのload: []に入れると使えるらしい.

  • a11y/semantic-enrich
    • 数式に読み仮名を振る,読み上げ機能がある端末に対応できる
  • a11y/complexity
    • 複雑すぎる式を折り畳んでくれる,クリックすれば元に戻る
  • a11y/explorer
    • Tab(↹)とかを押してWebページの中で数式を移動できる
      • a11y/complexityと組み合わせられる
  • a11y/assistive-mml
    • MathMLを利用する読み上げ機能がある端末に対応できる
      • a11y/semantic-enrichが必要

ここまでを全部載せすると…?

<script type="text/javascript" id="MathJax-script" async
  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg-full.js">
</script>
MathJax = {
  loader: {load: ['[tex]/colorv2', '[tex]/physics', 'a11y/semantic-enrich', 'a11y/complexity', 'a11y/explorer', 'a11y/assistive-mml']},
  tex: {
    packages: {
      '[+]': ['colorv2', 'physics'],
      '[-]': ['color', 'bracket']
    }
  }
};

tex: {packages: {}}が設定するのはTeXのタイプセット処理にどのライブラリを用いるかのみであり,アクセシビリティのライブラリはそれとは無関係なので,loader: {load: []}の中に記載するだけでおk.

その他

  • startup
    • 先にある通り,srcの先のurlの末尾をstartupにすると,loader: {load: []}で指定したライブラリを決め打ちでロードできる
    • 同時にライブラリとしても存在し,loaderを動かしてロードさせた後にタイプセットまでを行う
    • オプションでロードやタイプセットに関する挙動を制御できる
  • ui/safe
    • ユーザーがWebページ上に入力する際に,変なコードが紛れて走らないように防御できる
    • 基本的にhtmlコードに関してであり,オプションで制限する内容をカスタマイズできる
  • ui/menu
    • 数式を右クリックすると出現するメニューを追加する
    • 先のアクセシビリティの注意書きには「機能が被っているので別々に読み込まなくても良い」って書いてる
      • つまりアクセシビリティを突っ込んだからコレと同じものが勝手に読み込まれるらしい
      • ただしコレ単体でもソースコードを表示したり拡大縮小したりchtmlとsvgを切り替えたりはできる
    • あと「自動で折り畳まれる機能はv3.x.yにはまだない」って書いてある
    • オプションで表示や機能の設定をカスタマイズできる
  • adaptors/liteDOM
    • ブラウザのDOMに対して直接のアクセスができないもの(nodeのアプリとか)でMathJaxのタイプセット等を実行するために,ブラウザのDOMの代替品を実装させる
    • …というものらしいが使ったことがない
  • core
    • その他の機能の全てを含む,基本的には勝手に操作されるので弄らなくてもいい
  • loader
    • startupが自動で持ってくるライブラリで,追加のライブラリをロードする
    • オプションでロードするライブラリの中身やロードの設定をカスタマイズできる

loaderのオプション

オプション自体はこ↑こ↓が公式ドキュメント,機能の一覧を見ると割と使いそうなものも…?

MathJax = {
  loader: {
    paths: {mathjax: Loader.getRoot()},          // the path prefixes for use in specifying components
    source: {},                                  // the URLs for components, when defaults aren't right
    dependencies: {},                            // arrays of dependencies for each component
    provides: {},                                // components provided by each component
    load: [],                                    // array of components to load
    ready: Loader.defaultReady.bind(Loader),     // function to call when everything is loaded
    failed: function (error) {                   // function to call if a component fails to load
      console.log(`MathJax(${error.package || '?'}): ${error.message}`);
    },
    require: null                                // function to use for loading components
  }
};

loader: {load: []}

今まで何度も出たしもういいよね…

loader: {paths: {}}

[xxx]/yyyってなんだ?

loader: {paths: {}}が関係する,例えばxxxのソースのurlが

MathJax = {
  loader: {
    paths: {xxx: 'https://example.com/xxx'},
  }
};

と定義されれば,その下のyyy

MathJax = {
  loader: {
    load: ['[xxx]/yyy']
  }
};

でロードできる,更に数珠つなぎにしてしまえば

MathJax = {
  loader: {
    paths: {
      xxx: 'https://example.com/xxx',
      yyy: '[xxx]/yyy'
    },
    load: ['[yyy]/zzz']
  }
};

となる,すなわちTeX系のライブラリにおいては

MathJax = {
  loader: {
    paths: {
      tex: '何かしらのurl',
    },
    load: ['[tex]/何かしらのライブラリ']
  }
};

みたいな構造になっていると推測される.

ちなみにさっきの最小構成においてloader: {load: []}を以下のように改変すると…

MathJax = {
  loader: {load: ['input/tex-base', 'output/svg', 'tex']},
  tex: {
    packages: {
      '[+]': ['base']
    }
  }
};

スクリーンショット 2020-11-29 20.34.26.png

MathJax = {
  loader: {load: ['input/tex-base', 'output/svg', '[tex]']},
  tex: {
    packages: {
      '[+]': ['base']
    }
  }
};

スクリーンショット 2020-11-29 20.34.47.png

要するに最終的に末端で確実にファイルが手に入るようなurlにならないとCDNに突き返される,こんな横着みたいな一括ロードはできないそりゃそうじゃ

更に,

MathJax = {
  loader: {load: ['input/tex-base', 'output/svg', '[tex]/boldsymbol.js']},
  tex: {
    packages: {
      '[+]': ['base', 'boldsymbol']
    }
  }
};

スクリーンショット 2020-11-29 20.56.36.png

MathJax = {
  loader: {load: ['input/tex-base', 'output/svg', '[tex]/boldsymbol.js']},
  tex: {
    packages: {
      '[+]': ['base', 'boldsymbol.js']
    }
  }
};

スクリーンショット 2020-11-29 20.57.55.png

tex: {packages: {}}にはちゃんとライブラリの名前を表記しなきゃいけない割にはloader: {load: []}はurlの体を成してさえいればおkらしい…

loader: {source: {}}

xxx/yyyってなんだ?

絶対urlを設置できるloader: {source: {}}が関係する,例えば

MathJax = {
  loader: {
    source: {
      'xxx/yyy': 'https://example.com/xxx/yyy.js'
    },
    load: ['xxx/yyy']
  }
};

となる,すなわちアクセシビリティ系のライブラリにおいては

MathJax = {
  loader: {
    source: {
      '何かしらのライブラリ': '何かしらのurl',
    },
    load: ['何かしらのライブラリ']
  }
};

みたいな構造になっていると推測される. 見ての通りで1対1構造の決め打ち方式であり,loader: {paths: {}}のような拡張性はない.

dependencies: {}provides: {}

dependencies: {}はライブラリ間の依存関係を記憶するリストであり,startupload: []'の依頼に基づきdependencies: {}を使って必要な(ロードするべき)ライブラリを考えprovides: {}に列挙していく. すなわち最終的にロードされるライブラリの実態はprovides: {}に現れる,先に述べたurlとライブラリの対応関係はこれで実現されているとも言える,ドキュメントにも

loader: {
  provides: {
    'input/tex': [
      'input/tex-base',
      '[tex]/ams',
      '[tex]/newcommand',
      '[tex]/noundefined',
      '[tex]/require',
      '[tex]/autoload',
      '[tex]/configmacros'
    ]
  }
}

みたいな例が載っているし多分そう. また基本的なライブラリであればdependencies: {}は既に完全に整備されている.

そもそも普通にMathJaxを使うだけなら(コピー品や独自品を自前のサーバーから配信したいとか出ない限り),loaderにわざわざ手を加える場所は何もなさそうだけど…

その他のオプション

投げられる関数だったりエラーの処理だったり色々とあるけど,もういいよね…

startupのオプション

オプション自体はこ↑こ↓が公式ドキュメント,ロードとタイプセットの挙動を弄るのはもう完全に動的なサービスを作りたい人くらいだと思うので,パスさせていただきますね…

それにタイプセット自体のお話はまた後述…

男npm,direnv,node-casl2-comet2らによるアセンブラ体験

ちょっとだけCASLⅡとCOMETⅡ絡みのおべんきょがあった

流石に4日だけじゃ0からスタートして浮動小数点のIOと四則演算の実装なんてのは無理だったな

内容

ひみつ♡(もうちょい経ったら後悔するかも)

CASLⅡとCOMETⅡのシミュレーション環境といえば

IPA本家のライブラリ(Javaで動く)

こ↑こ↓ でもオラJava使ったことはねぇし,Java SE 8はライセンスがダメで無料じゃ使えねぇって聞いたぞ… 触ったことのねぇJDKってやつやOpenJDKってやつやAdoptOpenJDKってやつに立ち向かって環境構築して,そっから更にCASLⅡとCOMETⅡに触れるってのは,いくらなんでも素人には無理があっぞ!

いろんなWebサイト

でもオラ途中でぜってぇ嫌になっぞ!VSCodeとterminalでパチパチやりてぇんだ!

古の謎exeファイル

macOS Catalinaが実行を許すわけねぇだろ!?

救いの手

最強のCASL2/COMET2環境 by @maxfie1d ひゃ〜,こりゃどえれぇガチプロ様に出会った!オラとてもラッキーだ! npmなら昨年ちょこっと触ったことがあったからな!いける気がすっぞ!

方針

  • npmがあるといいよね
    • nodeはそんなに関係しないよ
  • direnvで環境を組み分けよう
  • node-casl2-comet2を利用させていただく
  • ついでにVScodeの機能拡張についてもだな…
  • すみません,まだbashを使っています…
    • そもそも開発者ではないので…nodeあたりのツッコミどころ満載ですよね.すんません

準備

homebrewを揃える

同じような情報はいっぱいあるだろう,それを踏まえながら公式サイトを見れば良いのではないか…?

node,nodenv,npmを揃える

$ brew install nodenv
ここで$PATHチェックだ
export PATH=$HOME/.nodenv/shims:usr/local/bin/nodenv:$PATH
$ source ~/.bashrc

人によっては違うかもしれねェが…ウチのnodenvnodenpmもコレで動き続けている…

$ nodenv install -list

今回はそこまで関係ないと思うが,取り敢えず新しいものを入れておこう…

$ nodenv install 15.3.0

すると勝手にnpmがついてくるはずだ…ということで

$ node -v
$ npm -v

を打ってちゃんとバージョンが表示されたら成功だ…

direnvを揃える

今回のサブ主役だ…

$ brew install direnv
ここで$PATHチェックだ

詳しい動作はあとでやるがここでおまじないだ,この文

eval "$(direnv hook bash)"

.bashrc付け加えてからもう一度

$ source ~/.bashrc

詳しい解説はいまさら direnv の解説 by @ngyuki にある,そちらを参照されたし… 更にこれが有名かどうかわからないので公式ドキュメントを貼っておく. bashhookしたのは見てわかるけど,なんでコレで動くのかがわからない…

node-casl2-comet2を揃える

アセンブラファイルを置いときたいディレクトリに行ったら

$ npm install @maxfield/node-comet2

なお,npm initをする必要はないもよう

えっグローバルインストールじゃないやん

たしかにIPAの試験に立ち向かうためならいっそ気合入れてグローバルインストールしても良いかもしれません. その場合は

$ npm -g install @maxfield/node-comet2
$ npm root -g

でちゃんとパスを確認して,通ってなかったら同じ要領でパスに追記してあげてください… そしたらdirenvの出る幕もないと思われます…

(私はただ-gに入れた後の管理をやりたくないからやめといただけです)

VSCodeのインストール

同じような情報はいっぱいあると思うけど,とりあえず公式サイトを読めばわかるんじゃないかな…?

ここで$PATHチェックだ

⌘+Pで出てきた場所に>Shellって打つとShell Command: Install 'code' command in PATHって出るのでやっておこう,/usr/local/bin/codeのシンボルが生成されるのでbash$PATHのレンジに入る

ここで$EDITORチェックだ

更にさっきの要領で

export EDITOR=code

を継ぎ足して

$ source ~/.bashrc

…これでデフォルトの$EDITORVSCodeになったよ!他のエディタ?知りませんね…

direnvの本領発揮

node-comet2のシンボルは./node_modules/.binにあるがそんなパスは用意していないし,かと言ってわざわざ.bashrcに書き込む気も起きない,だからディレクトリごとにそこら辺を弄れるdirenvを召喚した…! (だからこういう場所で何も考えずに連打してもcommand not foundしか出ない,nodeとは事情が違う)

.envrcを作る

$ direnv edit

ここで$EDITORが通ってなくてエラーを吐かれてしまった…あると一発でVSCodeが開く

.envrcを書く

export PATH=$PATH:./node_modules/.bin

保存OK?

direnvを起動させる

その場で

$ direnv allow

はい,これでこのディレクトリの変数が書き換わりましたっ…!

ちなみにそこから出ると

direnv: unloading

また入ると

direnv: loading ~/xxx/yyy/.envrc

実験

ここからがようやくいよいよアセンブラの世界だ…

ファイル生成

$ touch test.cas

アセンブリファイルの拡張子は.casで固定っす.

ファイル編集

超絶簡単なモノで良いっすか?

IO      START
        IN      INPUT,   INPUTL
        OUT     INPUT,   INPUTL
        RET
INPUT   DS      256
INPUTL  DS      1
        END

本当にただ吸って吐くだけなんですけど… (アセンブラそのものに関しては,ちゃんとすごい人の記事をみなさま読んでください,私も読もうとしています)

コンパイル

$ node-casl2 example.cas 

これでよし (オプションとかは製作者様のgithubを参照)

実行

$ node-comet2 example.com

実行ファイルの拡張子は.comで固定っす. するとこんな画面が現れます

PR  #0000 (     0) [IN     #0007, #0107        ] STEP 0
SP  #FFFF ( 65535) OF: ↓ SF: ↓ ZF: ↓
GR0 #0000 (     0) GR1 #0000 (     0) GR2 #0000 (     0) GR3 #0000 (     0)
GR4 #0000 (     0) GR5 #0000 (     0) GR6 #0000 (     0) GR7 #0000 (     0)
> s
> argaethasjtsrjryjs
PR  #0003 (     3) [OUT    #0007, #0107        ] STEP 1
SP  #FFFF ( 65535) OF: ↓ SF: ↓ ZF: ↓
GR0 #0000 (     0) GR1 #0000 (     0) GR2 #0000 (     0) GR3 #0000 (     0)
GR4 #0000 (     0) GR5 #0000 (     0) GR6 #0000 (     0) GR7 #0000 (     0)
> s
argaethasjtsrjryjs
PR  #0006 (     6) [RET                        ] STEP 2
SP  #FFFF ( 65535) OF: ↓ SF: ↓ ZF: ↓
GR0 #0000 (     0) GR1 #0000 (     0) GR2 #0000 (     0) GR3 #0000 (     0)
GR4 #0000 (     0) GR5 #0000 (     0) GR6 #0000 (     0) GR7 #0000 (     0)
> s

> sは実行オプションで

h    対話モードのヘルプを表示します。
q    プログラムの実行を終了します。
r    対話モードを終了してプログラムを実行します。
s    命令を1つ実行します(ステップ実行)。

のどれかを押してEnterすると進みます

そう,レジスタや関係する主記憶の動きを刻々と追跡できる!これはすげぇ…

経過が要らないなら

$ node-comet2 -r example.com

それでも入力が求められた時は流石に止まりますけど…

感想

ライブラリが整備されているCってとっても高級な言語なんだなぁと… 符号付き整数のIOの実装だけで苦しみました,浮動小数点のIOの実装なんて今の私には全く無理でした…ヒェッ…

おま○け

CASLⅡ・COMETⅡむけのVSCode拡張機能!…も,@maxfie1d様製だった… これがガチプロの世界か… (色々やれることが多すぎてまーったく使いこなせてないけど補完は助かる) f:id:Soluna_Eureka:20210825201137p:plain

NTT東日本管内での ONU(HGW)の取り扱いおよびv6プラスへの変更に関するメモ

ん?まーたテレワークの機運が高まっているな?

ぶっちゃけIPv6とIPoEに憧れていて,これを機に回線契約をv6プラスにした人も多そう

2021年6月ごろ

大幅に改定しました,自分で好きに使おうと思ったら調べ物をする必要があったので,その結果をなるべく正しい認識になるように反映させてもらいました
ちなみに光電話ありきで話しています
各種設定やメンテナンス等にも簡単に触れています

2021年10月ごろ

数え間違いや単語間違いがありました

NTTの光回線のv6プラスの仕組みについて

大雑把に書く

概観

基本的にはJPNEのv6プラス紹介ページにある以下の図の通り
f:id:Soluna_Eureka:20210825202915j:plain
参考・https://www.jpne.co.jp/service/v6plus/
とりあえずはココを読めばあらかたを知れると思う

JPNEとは?

日本ネットワークイネーブラー株式会社の頭文字
IPoE接続を提供するVNE事業者(後述)の一員であり,黎明期から携わってきた

ユーザーが知っておくべきこと

ネットワーク構成が完全にIPv6 IPoEになる

PPPoEの構成は自力で追加しない限りは存在しないし,IPv4ネットワークにはv6プラスの機能があって初めて接続できる
なので従来の回線認証もIPv4アドレスもない,手間が省けるのと同時にユーザー視点ではブラックボックスな領域が増える

NGNONU,HGW,VNE,それぞれの役割

NGN

NTTがつくった次世代の回線網,光ファイバで繋がれまくっている爆速(?)の回線
特にIPv6構成されているものをv6プラスは利用している,NGN網と呼ばれる

ONU

NGN網の末端の基地局から伸びてくる光ファイバを受け入れる機器

HGW

光電話,およびその他の宅内にある機器を,NGN網を接続する機器

VNE

事業者一覧・https://www.ntt-east.co.jp/info-st/ipoe_menu/ 従来まではISPの各社がそれぞれで自前の機器を使ってPPPoEセッションを扱っていたが,v6プラスではNGN網からVNE事業者の機器を通されてインターネット網に接続される,ISP事業者はVNE事業者に対して相乗りしていると言える
小規模なISP事業者が小規模なVNE装置に小規模に投資してもシステム全体を見ると効率が悪くなる,ゆえに相応の規模と機能を持つ以下の9社

が現在のVNE事業者の一員である(予定では最大16まで増えるらしいが)

ISP事業者を選ぶのも大事だが,かつてISP事業者にもやったようにVNE事業者の空き具合を見るのも大事になったかもしれない しかし少なくとも下手なPPPoEよりは確実に早くなるので気にしなくて良いと思う

ONUとHGWについて

一体化されているか,それとも別々か

両方ありえるが,最近は一体化されたONU兼HGWというものが多い,というよりも多分そっちになると思う
ただし5Gbps回線や10Gbps回線になると別々の機器として提供される,2Gbpsまでなら一体化されていると考えて良い

役割の違い

大前提としてHGWは光電話をIP電話として機能させるために存在する,これはONUだけで実現できない(電話線用の実装や処理が必要なので)とされる
そのついでに他の宅内にある機器をインターネットに接続させたり,プライベートなネットワークを構成したりのサポートもHGWがやっている

そしてONUの出口とHGWの出口では,インターネット上におけるレイヤ位置もプロトコルも違うので,ONUの出口にそこらの普通の機器を繋いでも使い物にはならない,専用のお高いスイッチ機器を使えばHGWの代わりに動作するらしいが…?
(HGWとONUが一体化されているならこんなこと気にしなくても良い)

どうやってIPv6通信とIPv4通信を相互に交換するのか

参考・https://www.nic.ad.jp/ja/materials/iw/2016/proceedings/t04/t4-sahara-2.pdf
ちょっと長いスライドだけど

交換する方式の違い

  • トランスレーション
    • パケットを書き換える
    • 元のパケットは機械的に取り出せない
  • トンネリング
    • パケットを内包する
    • 元のパケットは機械的に取り出せる

※大まかに2つ

交換する場所の違い

NATとはアドレスの変換のことだが,グローバルでユニキャスト(インターネットに繋がっていればまず辿り着ける)がデフォのIPv6による通信(ローカルアドレスマルチキャストアドレスもあるが割愛)を,グローバルでユニキャストなIPv4による通信に変換することを指す
ところがIPv6IPv4よりもアドレスの総量がはるかに多いため,対応するIPv4アドレスの割り振りに難儀する,そのため32bitで表現されるIPv4アドレスに加えてポート数を用いることで,グローバルでユニキャストな1つのIPv4アドレスを複数のユーザーで共有するNAPTを利用する
従来のIPv4においても宅内のLANと外界のインターネットを繋げるためにNAPTは既に使われているが,ローカル・グローバル間の4to4のNAPTと呼ばれるのに対し,こちらはグローバル・グローバル間の6to4のNAPTと呼ばれる

要するに通信経路上でグローバルIPv4アドレスを与えられるのはどこという話である

  • ISP NAT
    • ISP事業者側の収容装置で行う
  • CPE NAT
    • ユーザー側の終端装置で行う

※大まかに2つ

MAP-Eとは

トンネリングかつCPE NATな方式であり,v6プラスにおいて採用されているものである
CPE NATに必要な情報はNGNからHGWに降ってくるので,HGWを設置して接続した瞬間に確定する(v6プラスの開通手続きをしていれば),ユーザー情報はNGN上のVNE側装置やその他のサーバに勝手に送られているのでPPPoEのような回線認証は不要になる(これがIPoEの強みである)し,HGWが勝手に状況を管理してくれる
その他の方式については割愛

自前でHGWを用意する場合

先に挙げたように専用のお高いスイッチ機器で自前でHGW機能を代替したい場合,ONUの直下に置くかMAP-Eが無効になっているHGWの直下に置く必要があるとされる
HGWがMAP-EをやっちゃうとそのHGWの配下からはMAP-Eに手出しできないのだ
(逆に言えばONUは単純に光ファイバとLANケーブルの変換とグローバルIPv6アドレスの管理しかやってないと言えそう)
参考・http://www.rtpro.yamaha.co.jp/RT/docs/v6plus/

HGW(ONU)の設定の備忘録

設定上の注意

  • HGWに繋いだマシンからブラウザのGUIを介してできるようになっている
  • 設定を変更した際に取り返しのつかないことが起きないように気をつけよう
    • 万が一そういう事が起きても大丈夫なように設定ファイルを保存しておこう
    • 流石にHGW設定画面にたどり着けなくなることはないとは思うけど…
  • HGWの種類によってはファームウェアの表示や機能に差があるかもしれない

メイン設定画面

f:id:Soluna_Eureka:20210825202833p:plain

場所

  • http://192.168.1.1
    • 初期設定だとほぼ必ずこうなっているはず
    • わかんなくてもネットワークの画面にルーターの位置が書いてあるのでわかるはず
      • f:id:Soluna_Eureka:20210825203030p:plain
      • これをブラウザで叩けばよい

中身

  • 基本設定
    • 接続先設定(IPv4 PPPoE)
      • v6プラスでの通信に成功していると,一切の編集ができなくなる
    • 接続先設定(IPv6 PPPoE)
      • v6プラスでの通信に成功していると,この項目そのものが消える
  • 電話設定
    • ひかり電話共通設定
      • 品質設定など
    • 内線設定
      • HGWに対するTELポート接続orネットワーク接続,そしてひかり電話対応機器で増設できる
      • 実際にやったことがないので詳細はわからないが,ブラウザから以外にも電話機からもできるらしい
    • 光回線ひかり電話に対応するルーターが扱えるTELポートと電話機は2つまでが標準
      • f:id:Soluna_Eureka:20210825203052p:plain
    • つまりいくらTELポートがあったとしても,電話線で接続できる電話機は2つまでに限られる
  • 無線LAN設定
    • 無線カードや無線機能がない限りでは設定はできない
      • 市販のWifiハブの方が使い勝手はいいのでそっちでよくね
  • 詳細設定
    • DNS設定
      • ローカルでDNSサーバーを立てて振り向かせたい時に使う…らしい(使ったことない)
    • DHCPv4サーバ設定
      • HGWの直下の機器にローカルIPv4アドレスを配布する際の設定
      • HGW側のローカルIPv4アドレス(192.168.1.1),および配布時の開始ローカルIPv4アドレス・その割り当て数・リース(リフレッシュ)時間
      • MACアドレスで決め打ちしてローカルIPv4アドレスを固定して配布する機能もある(後述)
      • ハブ(Wi-Fi等)をブリッジモード(APモード)で使う場合はその配下の機器まで全てHGWのDHCPv4サーバの管理下になる
    • SPI設定
    • IPv4パケットフィルタ設定(PPPoE)
      • 通信のフィルタリングができる
      • 無効→無防備,標準→「フレッツ光ネクスト網内で折り返す通信(NTT東日本NTT西日本との契約により可能となるもの)は許容」(本文ママ),高度→外から自主的に来るものを全部NG
      • v6プラスでの通信に成功していると,この項目そのものが消える
    • IPv6パケットフィルタ設定(PPPoE)
      • 機能は上に同じ
      • v6プラスでの通信に成功していると,この項目そのものが消える
    • IPv6パケットフィルタ設定(IPoE)
      • 機能は上に同じ
      • v6プラスでの通信に成功していると,この項目が使用可能になる
      • IPv6アドレスはプレフィクスを用いて一括で指定できるのが特徴
    • LAN側静的ルーティング設定
      • 「HGWの直下にルータ機能を持つハブ(Wi-Fiとか)を置き,その直下に機器(プリンターとか)を置き,HGWに直接つないだPCからHGWとルータハブを通してその機器に接続したい」…みたいな時は,ルータ側とONU側で被らないようローカルIPv4アドレスを設定した上で,静的ルーティングの設定で「HGWとルータの接続経路」を明示しちゃんと通信を導いてあげないと,当然だがデフォルトでは通信が全て弾かれる
      • あくまでも一般人が快適に過ごす程度であれば,HGW下のハブは全てブリッジモード(APモード)で使うのが最も楽,HGWに全部任せてしまおう
    • 高度な設定
      • PPPoEブリッジをオンにすると,HGWの下で独立したPPPoEセッションを立てた時に,その通信を見極めて素通りさせてくれる(使ったことはない)
      • アップデートは自動でいい
      • 何か他にも色々あるのでONUファームウェアに備え付けのヘルプページを見て欲しい,大して役に立たない場合がほとんどなのでそれからググろう
  • メンテナンス
    • 機器設定用パスワードの変更
      • 要するにログインするユーザ名とパスワード,忘れないように
    • 設定値の保存&復元
      • 設定ファイルを生成してPCに保存したりそれを使って設定を復元したりできる
    • ファームウェア更新
      • アップデート用のファイルをPCから渡してやらせることもできる…が,普段なら勝手に更新を確認してアップデートしてくれる
    • 何か他にも色々あるのでONUファームウェアに備え付けのヘルプページを見て欲しい,大して役に立たない場合がほとんどなのでそれからググろう
  • 情報
    • 現在の状態
      • ONUとHGWの基本情報がわかる
    • 通話ログ
      • お電話の履歴が覗ける
    • DHCPクライアント取得情報
      • グローバルIPアドレスを配布するDHCPサーバー情報を表示してくれる
      • DHCPv4とDHCPv6およびIPoEとPPPoEで別々に存在し,v6プラスでの通信に成功していると,DHCPv6 IPoEとDHCPv4 IPoEの2つが表示される
      • ちなみにIPv6DNSサーバーはNTT東日本が建ててくれた2404:1A8:7F01:A::3および 2404:1A8:7F01:B::3が提供される,NTT西日本はわからん
    • DHCPv4サーバ払い出し状況
      • HGWが下の機器にどれだけローカルIPv4アドレスを配布したかを表示
    • DHCPv6サーバ払い出し状況
      • ONUが下の機器にどれだけグローバルIPv6アドレスのプレフィクス部分を配布したかを表示
      • ONUがHGWに1個すでに払い出しているので,残りは15個のみ(現状)
      • あくまでHGWが下の機器に払い出したグローバルIPv6アドレスのことを意味してはいない
    • セキュリティログ(IPv4)
      • 結構な量が弾かれていたりする
      • 代表するパケットフィルタ設定(v6プラスでの通信に成功していると,IPv6パケットフィルタ設定(IPoE)が相当する)が適用される
    • セキュリティログ(IPv6)
      • こちらも結構な量が弾かれていたりする
      • こちらも代表するパケットフィルタ設定が適用される
    • 何か他にも色々あるのでONUファームウェアに備え付けのヘルプページを見て欲しい,大して役に立たない場合がほとんどなのでそれからググろう+

ちなみにここQ&Aによると…

NTT 東日本が設置しているデフォルトの DNS サーバー (「2404:1A8:7F01:A::3」 および 「2404:1A8:7F01:B::3」) に対して、本サービスの DDNS ホスト名の解決クエリを送信するだけで、本サービスの DDNS ホスト名に関連付けられた IPv6 アドレスの応答を受けることができます。

IPv4設定

f:id:Soluna_Eureka:20210825203153p:plain
さっきのメイン設定画面とは別の場所にコイツがいたりする
IPv6のネットワーク網を用いるサービスに切り替えるとIPv4に関連する設定がONUのメイン設定画面ではできなくなるので,その代わりにコイツを使う

場所

配信済事業者ソフトウェア一覧

f:id:Soluna_Eureka:20210825203213p:plain

  • http://192.168.1.1:8888/t
    • 実はIPv4設定とはこのソフトウェアの一種である
    • IPv6での通信に成功していると,IPv4設定が1つ目に表示される,なので別にv6プラスを適用してIPoEの通信をしなくても表示される
      • 稀にバグでコレが消えてしまう場合があるらしいが,その場合はメイン設定画面でPCから設定ファイルを渡して読み込ませることで復活させられる
      • …でも配信済ソフトウェアがこれ1個だけってもったいなくない?他にもあるのかなぁ…

中身

  • Topページ
    • ここにはあなたが利用できる(IPv4のネットワーク網からあなたを見た時の)IPv4アドレスとそのポートが表示される,つまりは超絶クソ個人情報に相当する,取扱注意
      • スクショを撮ってネットの海に流そうものなら…
    • 前述の通り,IPv6ネットワークからIPv4ネットワーク網に乗り換えると,必然的に1つのIPv4アドレスを複数人で使うことになり,固定でIPv4アドレスを1つ占有しない限りは65535個のポートの分譲が発生する,好きなポートが使えないという制約がつく
      • 具体的には「連続する16ポートをバラバラに15区分,計240ポート」が割り当てられるらしい
      • IPv4アドレスも使用可能ポートも変わることはなさそう(今のところは)
  • IPv4パケットフィルタ設定
    • IPv4の書き方で,通信のフィルタリングができる
  • 静的NAPT設定
    • IPv4の書き方で,ポートの公開と通信の変換ができる
      • 固定でIPv4アドレスを占有しない限りだと前述の通り使用できるポートが限られる,外部に公開するのはTopページにあるグローバルIPv4アドレスとポート,それを変換して内部に通すのはHGWから見た自前の端末のローカルIPv4アドレスとポートになる
      • 固定でIPv4アドレスを占有すれば外部には好きなポートで公開できる,一般的なWebページとかのサーバーを立てるならば占有すべし(その分カネはかかるし契約内容も変更となる)
      • もしくはIPv6でサーバを立てる,実際IPv6のDDNSがあるので,これなら(パケットフィルタの解除をすれば)自由にポートが使える
  • 高度な設定
    • タイムアウトまでの時間を設定できる
    • 固定でIPv4アドレスを占有している場合は固定アドレスも設定できる
  • ユーザ名/パスワードの変更
    • やったことないしやめたほうがいい

v6プラスへの移行

v6プラスへの移行の流れ

旧来回線から移行するためのステップを示す

IPv6へ移行する

契約内容を変更

回線事業者とプロバイダの双方に確認を取る 料金も変わるかもしれないのでプランの見直しの良い機会かもしれない

ONUとHGWを新調

この時点で必ずv6プラスに対応できるONU・HGWを選定しておく

回線を新調

場合によってはそうなるかもしれない,色々と工事が必要ななケースもある

IPv6へ切り替わるのを待つ

混んでいたら数週間くらいかかるかも,それまではIPv4 PPPoEが適用されている

ONUの設定を確認する

ようこそIPv6の世界へ,ただしこの時点ではまだIPv6 PPPoEが適用されている

v6プラスへ移行する

v6プラスへの移行の手続きをする

プロバイダに申告,大抵の場合はv6プラスは無料のオプションなのでご安心を移行のための料金やその後の利用のが無料じゃない場合があるらしい,それも含めて予算を見た方が良いかも

v6プラスへ切り替わるのを待つ

割とすぐ切り替わった

ONUとHGWの設定を確認する

まずは各種の設定画面の表示がv6プラスにおいてあるべき状態かどうかを確認する
そしてこ↑こ↓のv6プラス接続の確認サイトで全てのチェックをパスするかを確認する
それが終われば…

ようこそ,v6プラスの世界へ!

ルーターの再起動および初期化

どういう時にやるべきか?

  • 動作が重い
  • 通信が切れがち
  • 設定が反映されない
  • パスワードぜんぶ忘れた

みたいな時はまず再起動すると解決するかも
それでもダメなら初期化すると解決するかも(特にパスワード関係)

事前準備

本体設定を再利用できるように,「メンテナンス」→「設定値の保存&復元」から.configファイルを落としておく(暗号化されている)
このファイルを落とした時点で設定されているHGWのログイン用のパスワードが,.configファイルを解凍してHGWに読ませるためのパスワードになる
それすらも忘れたなら初期化して最初から設定しやがれ

ちなみに…http://192.168.1.1:8888/enabler.ipv4/mainの設定内容は保存されないので,スクショかなんかでメモっておくとよし

再起動

方法

「メンテナンス」→「機器再起動」→「再起動」で実行
もしくは本体の再起動ボタンを押す
所要時間は1分

何が起きるの?

普通に再起動するだけ
特に気にする必要はない

何をするべきなの?

特に必要ない

初期化

方法

「メンテナンス」→「設定値の初期化」→「工場出荷時設定に戻す」で実行
もしくは本体の初期化ボタンを押す
所要時間は2分
その後にちょっと設定を要求される

何が起きるの?

順を追って話そう

工場出荷時に戻る

完全にまっさらになる

どっかからISP情報が降りてくる

回線(物理的な意味で)と契約者(住所的な意味で)は一対一の関係をしているので,契約ISPの情報がまず降りてくるっぽい

勝手にIPv4 PPPoEで接続を始める

その契約ISPを相手に通信を始める,ユーザーによる認証は不要
この時だけPPPoE通信の設定画面が見られるようになる
まだこの時点ではhttp://192.168.1.1:8888/enabler.ipv4/mainには接続できない(ソフトウェアがない)

ここでPPPoEを強制的に切ったらどうなるんやろなぁ

勝手にIPv6 IPoEで接続を始める

2分ほどで設定が完了しPPPoE通信の設定画面がグレーアウトする

勝手にv6プラス設定の適用を始める

例のIPv4 over IPv6用のソフトが自動的に落ちてくるっぽい

何をするべきなの?

管理ユーザの登録

ユーザー名とパスワードを設定しよう
hhttp://192.168.1.http://192.168.1.1:8888/enabler.ipv4/mainでは別々の設定が必要になる

設定ファイルの復元

メンテナンス→設定値の保存&復元に行ってファイルを選択,初期化前に落とした.configファイルを引っ張ってくる
当時のパスワードを入力して復元実行する
1分ほどで終わる

IPv4 over IPv6用の設定

http://192.168.1.1:8888/enabler.ipv4/mainの設定をやり直す

v6プラスそのものについてのメモ

そもそも何が利点なんだっけ

  • IPv6が使用可能になる
    • グローバルアドレスがより身近な存在になる
    • ぶっちゃけIPv4同士のNATに魅力がない
  • PPPoEセッションが不要である
    • 小分けされたISP事業者の設備に殺到しない
    • そもそもPPPoEセッションは立ち上がるまでにに効率が悪い
    • なので輻輳が起きづらい(起きないとは言っていない)
  • 結果的には速度が落ちづらい(落ちないとは言っていない)

現実的には

ISP事業者の中にはちょっと前まで「v6プラスならトラフィックが無制限」などと言う組織もあった気がするが,実際は

  • 地元の基地局光回線収容設備の能力
  • それらを結ぶNGN網の通信能力
  • インターネットへと接続するVNE事業者のネットワーク収容設備の能力

といった制約があり,いちユーザーには速度の向上にはもはや限界がある
まずは宅内の機器のネットワーク装置やLANケーブルを見直した方がいい,そこが抜けているといくらいい回線でも端末の通信速度は上がらない

参考文献

以下を読もう

ドンっ!!(10分講座)
ドンっ!!(ガチな仕様解説書)
ドンっ!!!(更にガチな仕様解説書)

IPoEを用いつつIPv6ネットワークからIPv4ネットワークへの通信の接続に用いられる技術である,JPNEのv6プラスやBIGLOBEIPv6オプションが該当するMAP-E方式においては,IPv4ネットワーク行きの通信は HGWでカプセル化されIPv6ネットワーク(NGN網)に流される,そして運ばれた先(NGN網の末端にあるVNE事業者設備)で元の通信に戻され,IPv4ネットワーク上の目的のサーバーに到達する,という流れを経る
このために必要なグローバルIPv4アドレスの操作はHGWが管理する

もう1つの技術であるtransix(DS-Liteも同様にHGWから先の通信経路ではIPv6アドレスが用いられるため,IPv6 IPoEで通信するためにはやはり対応する製品とサービスに変更する必要がある(こちらの方が実装の時期が早かった)
ただし,実際にグローバルIPv4アドレスを与えるのはHGWではなく事業者側の装置ゆえ,ポート開放の設定などがユーザーには簡易に行えないのが欠点である

この仕様の違いによって,対応するONU・HGWの種類が異なっていたが,つい最近になってNTTが双方に対応できるような製品を用意していた

もし自宅の自前の機器を選んでグローバルIPv4アドレスを用いてポート解放するのであれば,HGWでNATが行えるMAP-Eを選ばざるを得ないという現状ではある

疑問点

IPv6パケットフィルタ設定(IPoE)」の挙動

IPv6セキュリティのレベル」→「ファイアーウォール機能」で「高度」「標準」「無効」が設定できると思うが,

  • これは最初からIPv6の通信じゃないと弾けないのか?
  • グローバルIPv4アドレスからNATした後もIPv6通信に相当するのか?
  • ipv4のセキュリティログがあるってことは強要されてるのか?

IPv4パケットフィルタ設定」の挙動

  • 上のパケットフィルタと矛盾させるとどうなる?

フィルタの内容

  • どのポートを縛るべき?

非英語国家ユーザー向け・macOS版LTspiceの罠

気をつけるべきこと

経由するフォルダと編集するファイルの全ての名前に非ASCII文字を使わない

絶対パスが全てASCIIで表記できるようにしましょう 一度閉じれば二度と開けなくなるどころか上書き保存すらできなくなるまであります 必ずちゃんと純粋なASCIIを使いましょう

検証環境

検証言語

原因(妄想)

ファイル指定用のスクリプトがASCIIのみ対応しているせい

でもなぜか「Save as...(=別名で保存)」だけはできちゃいます そのせいでこの罠に気づくのに3時間もかかった,悔しいです

エイリアスはどうか

ファイルを呼び出すだけならエイリアス名は全く関係ないようです (その場合は絶対パスを取得するだろうし,LTspiceもわざわざエイリアスは使わないと思います)

が,LTspice内の動作として扱うパスの表記に日本語を使うとどうなるかは未検証です,が多分ダメだと思います

日本語化パッチについて

2020年度版がなさそうだし本体のスクリプトまでカバーできるかどうかもわからないし日本語で無理にやりたい理由もないので,私は導入するのはやめておきます

その他 雑記

macOS版での「μ」

デフォルトで既に「μ」は「u」で入力できるようになっているしちゃんと「μ」で表示されます Windows版と違い設定は不要です(Windows版は全く知りませんが)

macOS版で解析実行

「右クリ」→「Draw」→「Spice Directive」→「(コマンド) (引数1[ 引数2 引数3 ...])」→「左クリ(配置)」 これでコマンドを埋め込んでRunすると実行されます Windows版のウィンドウから検索みたいな便利機能はないんですね 解析コマンドはggったら色んなサイトに載ってると思います

macOS版で素材の参照ファイル指定

色々方法があるっぽいですが 「右クリ」→「Draw」→「Spice Directive」→「.lib (ファイルのパス)」→「左クリ(配置)」 とかで呼び出せるらしいです デフォルトパーツとかだとUser/(username)/Documents/LTspiceApplications/LTspice/Resourcesから勝手に探してくれるっぽいです 今じゃmacOSが堅すぎてユーザーがそこら辺を弄れなくなったからUser/(username)/Documentにオプションデータを入れて弄ってくださいませという感じでしょうか

権限はどうなっているの

LTSpiceに与えられる権限はUser/Documentsだけで,勝手にexamplesフォルダ(デモンストレーション用の回路?)を作るだけっぽいです それ以外は全てユーザーが逐次に動作させるので問題はないかと思われますが,examples消しても必ず復活してきます

LTSpiceのプロセス名が空欄

これは流石にどうにかして頂きたいなぁと思っています ちなみに「システム環境設定」の「セキュリティとプライバシー」でもプロセス名が空欄です 検索除けかと思っちゃいました

Model Updateが必ずエラーを吐く

Error downloading release.log.gzと言われます SoftWare Updateで全部やるから死に機能になったしサーバーも落としたってことなんでしょうか

【 #ClipStudioPaint 】気をつけるべき環境設定(特にUSキーボード使い)

あらすじ

USキーボードを使っていらっしゃるそこのあなた!! どれほど見た目が綺麗でも常に厄介ごとが起きるのが日本人USキーボードユーザーの宿命!! 気をつけないとタブレットの機能の一部がお亡くなりになりましてよ!! ※この記事は比較的に短いです ※2020/07/23時点の話です

環境

  • macOS Catalina
    • Windowsについてはわかりません,ごめんなさい
  • Intuos Pro Large
    • ドライバ等は全て最新版
    • タブレットについてもわかりません,ごめんなさい
      • Wacom製品ならほとんど同じだとは思います
  • ClipStudioPaint
    • Pro使ってますがそういうのは関係ないと思います

クリスタの設定

ショートカットキーの入力の置き換え

以下の5つのキーはClipStudioPaint上のショートカットキー設定においてのみ,USキーボードの見た目とは反する入力を引き起こしますので,十分に気をつけましょう なお,ここでは「システム環境設定」「入力ソース」の英字カスタム設定(後述)は意味を為しません,諦めて以下の法則に従って設定を行いましょう

  • 「キーボードに印字されている見た目」
    • =>「実際に入力される内容」

の順で比較します

  • 「`」
    • =>「@」
  • 「=」
    • =>「;」
  • 「;」
    • =>「:」
  • 「’」
    • =>「^」
  • 「\」
    • =>「|」

もしJIS準拠のアプリケーションにおいて思うような入力ができない時は,この5つの組み合わせを疑った方がいいかもしれません・・・

逆に変更してはいけない環境設定

ペンタブレット等でマルチタッチジェスチャーを使う場合,以下の内容を設定すると機能が使えなくなる可能性が非常に高いですので,なるべく触らないようにしましょう ※手元の実機で検証できたものに限ります

ショートカットキー設定

  • 回転
    • 右回転
      • 「^」
      • もし上書きしてしまったらさっきの方法で「^」を入力しましょう
      • これを破壊するとマルチタッチジェスチャー「回転」の右回転ができなくなります
    • 左回転
    • スクリーンショット 2020-07-23 21.20.03.png

修飾キー設定

  • Space

    • 共通設定
    • ツールを一時変更
    • 手のひら
      • これを破壊するとマルチタッチジェスチャーの「スクロール」ができなくなります
    • スクリーンショット 2020-07-23 21.19.17.png
  • マウスホイール

    • 共通設定
    • ビューを操作
    • 上で拡大・下で縮小
      • これを破壊するとマルチタッチジェスチャーの「ズーム」ができなくなります
    • スクリーンショット 2020-07-23 21.19.40.png

ペンタブレットに必要な設定

マルチタッチジェスチャー

  • ワコム タブレット」に移動
  • 以下の画面に移動
    • スクリーンショット 2020-07-23 21.50.45.png
  • 「タッチパネル」「ジェスチャーの標準設定」に移動
  • 2本指で行うマルチタッチジェスチャーは以について,を4つをオンにする

    • 同時タップで右クリック
    • スクロール
    • ズーム
    • 回転
    • スクリーンショット 2020-07-23 21.26.58.png
  • 他の内容はお好みで設定しましょう

    • 4本指の「スワイプでフルスクリーンアプリを切り替え」の動作についてはこちらを記事を参考にしてください,この機能に限っては動作上に例外的な条件が存在しているようです

ファンクションキー

ファンクションキー機能(特にタッチホイール)を用いて,クリスタ上でマルチタッチジェスチャーと同等の操作(特に「回転」)を行うために必要な設定の手順を,以下の通りに示します

英字入力ソースをカスタム設定

  • 「キーボード」「入力ソース」に移動
  • 「日本語」の「入力モード」を「ひらがな」「英字」の2つに設定する
    • ひらがなは固定されているのでオプションで英字を追加するだけ
    • スクリーンショット 2020-07-23 21.37.46.png
  • 「英字のレイアウト」以下をこのように設定する
    • スクリーンショット 2020-07-23 21.39.29.png
    • 修飾キーを使わずに「^」を入力できるレイアウトを選択しましょう
      • つまりキーボードのプレビューに「^」があるものならOKです
    • スクリーンショット 2020-07-23 21.46.06.png
      • 「ABC - AZERTY」はフランス語系のキー配列です,今回はコレを使います
      • この例であれば「[」が印字されているキーを押すと「^」が入力されますが,念のために自前のキーボードで対応する位置関係を確認してください
    • 作業が終了したらすぐに「U.S.」に戻しておきましょう

ファンクションキーを設定

今回は「タッチホイール」に「回転」を割り当ててみます

  • ワコム タブレット」に移動
  • 以下の画面に移動
    • スクリーンショット 2020-07-23 21.50.45.png
  • 「タッチホイール」のどれか1箇所を選択し「キーストローク」を選択
    • スクリーンショット 2020-07-23 21.51.50.png
  • 以下のように設定する
    • スクリーンショット 2020-07-23 21.54.21.png
    • ここで「^」を打つために「英字」の設定をいじりました
    • 「ABC」では行えない(US配列しか対応していない)ので注意,「英字」で行いましょう

考察

なんでこんな面倒なことをしなきゃいけないんですか?

マルチタッチジェスチャーの処理過程

※あくまでクリスタ上に限った話の推測です

  1. ペンタブ本体がマルチタッチジェスチャーを認識
  2. タブレットドライバがシステム環境設定に沿って反応するジェスチャーをフィルタリング
  3. タブレットドライバがアプリに応じてジェスチャーをそれぞれ置き換える(ユーザーによる編集は不可能)
    1. 「2本指」「スクロール」=>「『␣』+『ドラッグ上下左右』」
    2. 「2本指」「ズーム」=>「『マウスホイール上下』」
    3. 「2本指」「回転」=>「『^』(右回転)」or「『-』(左回転)」
    4. 「2本指」「ダブルタップ」=>「『右クリック』」
  4. タブレットドライバがOSに入力を伝える
  5. OSがクリスタに入力を伝える
  6. クリスタが動作をする

ちなみにタブレットドライバの.pkgのファイルリストを見たらアプリケーションごとの設定ファイルっぽいものを見つけました,クリスタもイラレもフォトショも名を連ねています ----------2020-07-25-1.03.13

しかし痒いところに手が届かない・・・編集させてくれぇ・・・ あとなんで回転だけショートカットキーを経由しているんだ・・・

USキーボード入力の処理過程

クリスタに限った話ではまったくわかりません どういう実装がなされているのか見当がつきません システムのキーボード設定を無視するなんて・・・

結論

統一感があんまりないので,それぞれの関係性を逐次に覚えましょう

【 #IntuosPro #Intuos etc】macOSへのWacom製ペンタブの導入のまとめ(2020/07/23更新)

前置き

  • ペンタブ購入からPCへの導入までの流れを実体験とフィーリングとノリを用いてお伝えします
  • 皆さまに何かがあったとしても一切の責任は取りませんが色々な結果を残しておきます
  • 基本的には非液タブ・日本語版・macOS版・最新版を念頭にしてやっておりますので悪しからず
  • 独立駆動可能な液タブ(クリエイティブタブレット)については全く扱いませんだって高いもんアレ
  • ペンやボタンに関する実践的な設定も扱いません,だって私は全く使いこなせてないし・・・

追記(2020/07/23)

「4本指横スワイプによる『フルスクリーンアプリケーションの切り替え』機能」に関して,動作に必要な条件を特定しました. また異なるバージョン間のタブレットドライバにおいて,現状では設定ファイルを移行できないことについても,追記しておきます.

追記(2020/7/17)

ついこの間にmacOS Catalina 10.15.6が出ましたが,動作に致命的な問題は見当たりません が,手元の環境では「4本指横スワイプによる『フルスクリーンアプリケーションの切り替え』機能」だけ何故か正常に動作していません,この現象の追加の目撃情報を求めています・・・

この現象自体はmacOS Catalina 10.15.5+タブレットドライバv6.3.40-2でも確認していますが,macOS Catalina 10.15.6+タブレットドライバv6.3.40-2でも変わりがないようです 現在もWacom様へのお問い合わせ等で解決方法を探している途中ですが,最新版ドライバへのアップデートはみなさまご自身の責任でやっていただければなと思います・・・

基本的にドライバの導入方法はバージョン問わず同じですが,OSごと・バージョンごとの細かな差異に関しては,Wacom提供の文書に沿って行うのが一番です(当たり前)

使うもの

  • Wacom Intuos Pro
    • 新しい方(ちなみに古い方も名称が同じ)
    • Large
    • 品番 "PTH-860"
  • ProPen 2
    • 付随品です
  • オーバーレイシート
    • 追加で買った
    • スムース一択だと思ったのでスムースにした
  • 替え芯
    • 付随品です
    • 芯はこれから使い込んで選定していく予定
  • 実質的に国の10万で買ったことになります,はい

※前から使っているもの

  • MacBookPro
    • 2016 late
    • 15 Inch
    • Catalina 10.15.5
      • Mojaveでの扱いも載せます
  • サブモニター
    • DELL
    • 品番 "SE2216H"
  • Wacom Intuos
    • Medium
    • Black
    • 品番"CTL-6100WL"
      • 持ち運び用に今後も使うつもりです

参考にするべき公式情報源

※まずこれらをざっと見たほうがいいかもしれないです

ペンタブレット本体について

※ここにリンクがないモデルについては一覧の中から自分で探していただけると嬉しいです

ペンタブレット向けファームウェアについて

※アップデートの際はペンタブ本体のソフトウェアを更新するので特に慎重にやりましょう

Mac向けドライバについて

※最近のモノであればmacOS上ではほぼ全てのWacom製品のドライバが共通しているっぽいです

導入の手引き

製品を揃える

  • どうですみなさん,ペンタブデビューしませんか?身勝手なダイマをしたら運営に消されるのでこれくらいにしておく
    • 割とマジでコロナが長引く報道が出る度に製品が売り切れるので買うなら早めに買った方が良いと思っています
    • Wacom以外にもメーカーの選択肢はあるから・・・
  • 私は昨年の10月に持ち運びを前提にしてIntuos Mediumを買いましたが,まさかの翌春に持ち運ぶような環境がなくなったという事態に背中を押され.ついにIntuos Pro Largeに手を出してしまいました・・・
    • なので2019秋のM3のCDの注文書を作ったり2020春のM3のジャケを描いたりしたのはIntuos Mediumです
    • 実際あらゆる書類をペンタブで書いて済ませているのでお絵かきというより日常生活の一種になっています

タブレットドライバを導入する

早速だけど条件分岐する

もし既に他のWacom製品を使っているなら

  • ドライバ検索ページ使いたい製品PCのOSに対応するドライバを検索
  • それが現在使っているドライバと一致しているか確認する
  • さらに条件分岐
    • 一致していたらタブレットドライバの設定は不要,次に進もう
    • 一致してしない場合は以下のケースが考えられる
      • 諸事情でOSをアップデートしていないケース
        • 旧製品を使い続けたい等の都合がある場合は特に注意しなければならない
        • MacのCatalinaに限ればセキュリティ機能が変化しまくるせいでドライバの対応が難しい
          • macOS Catalina10.15.3以降はタブレットドライバ Macintosh V6.3.39-1Jxmi for macOS以降じゃないと正常に動作しないとされているので,旧製品の対応が手遅れである限りmacOSのアップデートは控えるべき
          • そして最新版であるmacOS Catalina10.15.5~10.15.6における挙動についてはまだ公式声明が存在しない
      • 他にケースが思いつかなかった
      • もし何も問題がなければドライバはなるべく最新版にアップデートしておこう
        • しかしmacOS Catalinaに関してはアップデート自体が既にリスクを伴っている,安定化するまでおすすめはしない
        • ドライバのアップデートについても別個に紹介します
        • 次項にあげたバージョンの対応表も参考になるかも

もし初めてWacom製品を使うなら

  • ドライバ検索ページ使いたい製品PCのOSに対応するドライバを検索
  • ダウンロード
    • 日本語版・macOS版・最新版ならページはここ
  • WacomTablet_6.3.40-2.dmgを開く
    • 検証をクリアするとディスクイメージとして展開される
  • Install Wacom Tablet.pkgを開く
  • 利用規約をよく読み同意する場合は「同意する」をクリック
  • インストールが実行される
    • Macへの変更の許可が求められた場合は適宜に許可をしてあげる
    • 少し長めの検証が終わったのち,すぐにMac本体へのファイルの書き込みが終わるが,「ブートプログラムに登録中」のような文言が表示されて長めの動作が発生する
      • 私はCatalina 10.15.5にしてこの表記に初めて遭遇したので,他のユーザーによる追加の目撃情報を求めています
      • これのせいでWacom公式のCatalina向けインストール指南書とは若干だが異なる挙動をしていると考察している
  • インストーラの要求の通りに再起動する
  • 以降の"システム環境設定/セキュリティとプライバシー"で許可すべき項目は状況によって変わってくる・・・
    • ケースAの場合(全てが最新版)なら
      • "アクセシビリティ"に"com.wacom.IOManager.app"
      • "オートメーション"に"Wacomデスクトップセンター"
      • "オートメーション"に"WacomTabletDriver.app"
      • この場合の挙動について他ユーザーによる追加の目撃情報を求めています(2回目)
        • 入力監視に関する項目が削除されたのは「ブートプログラムに登録中」のお陰かな・・・?
    • ケースBの場合なら
      • "アクセシビリティ"に"com.wacom.IOManager.app"
      • "入力監視"に"WacomTabletDriver"
      • "入力監視"に"WacomTouchDriver"(タッチ機能搭載製品に限る)
      • "オートメーション"に"Wacomデスクトップセンター"
      • "オートメーション"に"WacomTabletDriver.app"
    • ケースCの場合なら
      • "アクセシビリティ"に"WacomTabletDriver"
      • "アクセシビリティ"に"WacomTouchDriver"(タッチ機能搭載製品に限る)
      • "入力監視"に"WacomTabletDriver"
      • "入力監視"に"WacomTouchDriver"(タッチ機能搭載製品に限る)
      • "オートメーション"に"Wacomデスクトップセンター"
      • "オートメーション"に"WacomTabletDriver.app"
    • ケースDの場合なら
    • ケースEの場合なら
      • 特に必要なし
    • ・・・をそれぞれ登録しなければならない
      • 場合によっては勝手に要求してくるので許可してあげよう
      • 要求してこなければFinderから対象のスクリプトもしくはアプリケーションを探して突っ込もう

※以下の表はあくまでWacomTabletのバージョンとmacOSバージョンとの対応関係を付き合わせたものです,ペンタブ・液タブの種類との整合性についてはドライバ検索ページを用いたチェックを皆様にお願いします ※Mojaveから急激にセキュリティ機能が強くなったのでその時点からの関係性を追跡しています,Mojaveにおける挙動についてはWacom公式のMojave向けインストール指南書も参考にしてください

macOS ??.??.??~10.11.6(~El Capitan) macOS 10.12.0~10.13.6(Sierra~Hi Sierra) macOS 10.14.0~10.14.6(Mojave) macOS 10.15.0~10.15.2(Catalina) macOS 10.15.3~10.15.4(Catalina) macOS 10.15.5(Catalina)
WacomTablet ?.?.??~6.3.31-3 E(バージョン関係は要確認) E × × × ×
WacomTablet 6.3.31-4~6.3.36-2 E(バージョン関係は要確認) E D × × ×
WacomTablet 6.3.37-2~6.3.38-3 × E D C × ×
WacomTablet 6.3.39-1~6.3.40-2 × E D C B A?(要確認)
  • ケースAではこうなる
    • スクリーンショット 2020-07-15 17.44.41.png
    • スクリーンショット 2020-07-15 17.45.01.png

タブレットを接続する

  • 新しいドライバを入れたら直後は念のために1回だけセーフブート処理をしておくと良いと思う
    • セーフブート処理は「Shift⇧押しながら再起動」「パスワード入れて待機」「もう1回だけ再起動」で行える
  • 以下のどちらかの方法で接続する

Wacom IDを登録する

  • ぶっちゃけこれはしてもしなくても良いです
  • もし登録すると製品特典のソフトウェアがあった時に手に入ります
  • 次項のWacomデスクトップセンターで使えたりします

Wacomデスクトップセンターの設定をする

  • Wacomデスクトップセンターを開く
    • スクリーンショット 2020-07-15 17.43.30.pngこんなやつ
    • スクリーンショット 2020-07-23 23.34.27.pngこんなやつ2
  • タブレットが接続されていることを確認する
  • Wacom IDでログインする
  • タブレットWacom IDに登録する
    • Wacomデスクトップセンターからブラウザに飛ぶと自動でシリアル番号が入力されるから楽 ができる
  • 以降はここからドライバやファームウェアの動作チェックやアップデート等が行える

システム環境設定の設定をする

  • 「システム環境設定」内に『ワコムタブレット』があるはずなのでそこを開く
  • 要するにペンタブの機能をカスタムできる
  • 製品によって設定画面が違う(こんな感じに)
  • 設定の詳細や攻略は各製品の説明書やガチプロユーザーが発信する情報を見て研究しましょう
    • 買ったばかりでまだ使いこなせていない私から言えることはIntuos Proの方が間違いなくあらゆる面において総合的に性能が良い」ということです身勝手なダイマをしたら運営に消されるのでこれくらいにしておく

ドライバや設定内容を管理する

  • Wacomタブレットユーティリティを開く
    • スクリーンショット 2020-07-15 18.11.26.pngこんなやつ
    • スクリーンショット 2020-07-23 23.32.10.pngこんなやつ2
  • 設定ファイルとは

    • "(任意の文字列).wacomprefs"みたいなもの
    • 新しいMacに乗り換えたりドライバを再インストールした時に簡単に設定を移行できる
      • ただし異なるバージョンのドライバ間では設定ファイルの引き継ぎができない
    • 設定ファイルを置いておくフォルダを作る
      • Finderでちゃちゃっと作る
    • 「バックアップ」から対象フォルダに設定ファイルを生成する
      • できればわかりやすいように名前を変更しておこう
      • スクリーンショット 2020-07-23 23.32.30.png
      • こまめにやっておくと吉,クラウドに上げておくともっと吉
  • ドライバのアンインストール

    • 鍵をクリックしてパスワードを投入
    • タブレットドライバ:アンインストール」を選択
    • 関連ファイル綺麗さっぱり消えるわけではなく空のフォルダがちょくちょく残っていたりするので,再インストール前には念のため手で探し出して消しておこう
      • おそらく全てに"wacom"の文字列が入っているので見つけるのは楽です

フルスクリーンアプリケーションの切り替えについて

以下の2つの条件が満たしている時に限り動作する.

  • 1
  • 2
    • 「キーボード」「ショートカット」「Mission Control」において
      • 「Mission Control」「左の操作スペースに移動」が「⌃←」
      • 「Mission Control」「左の操作スペースに移動」が「⌃→」
    • に設定されており,かつ該当の機能がいずれもオンになっている
    • スクリーンショット 2020-07-23 23.02.27.png

「4本指横スワイプによる『フルスクリーンアプリケーションの切り替え』機能」だけ何故かキーボードショートカットを介して実装されているようで,該当の機能を使う場合はこの設定を固定しなければならない. なおタブレットドライバのバージョンとの関連性は不明.(もう実験したくないです)

これ以外の動作について

アプリケーションごとに事情があるので,アプリケーションのリファレンスを参考にするのがベター 例えばクリスタの設定においても特殊な事例を発見したため,自分好みに動作をカスタマイズする際は慎重に検証をおこうなうべし・・・

【超絶重要】ドライバのアップデートでしくじったこと

  • 多くのユーザーを救うことを信じて書く
    • 私はこれで痛い目にあってmacOSの再インストールまで決行せざるを得なかった
    • Wacomデスクトップセンターを経由せずにアップデートする場合について書く
  • 状況
    • WacomTablet 6.3.38-3 => 6.3.40-2
    • それ他は記事冒頭の内容の通り

結論

ドライバを削除した後の再起動を忘れたためにMacペンタブレットによる一切の操作を受け付けなくなり,セーフブートでも解決せずOSのクリーン再インストールから決行する羽目になった アンインストールからの再インストールの手順を踏むならば,丁寧に再起動するべし もしくはアンインストールせずに上書きアップデートを行うべし

原因と反省

Catalina 10.15.3以降の扱いについて

タブレットドライバ Macintosh V6.3.40-2Jxmi for macOS』の注意事項

以下引用

macOS 10.15.3以降でOSのセキュリティアップデートを行う場合は、タブレットドライバ6.3.39以降のドライバへ更新を行う必要があります。

非対応の古いタブレットドライバをインストールしたままOSをアップデートすると、「タブレットが接続されていません」など正常に動作しない場合があります。その場合は、ドライバをアンインストールしてOSをアップデート後、6.3.39以降のドライバをインストールしてください。

解説

OSのアップデートとタブレットドライバのアップデートを同時に行う場合は,先にドライバをアンインストールしてからOSをアップデートしなければ詰む

Wacom公式のMac向けアップデートの指針の注意事項

以下引用

実施が必要な手順:

ペンタブレットをコンピューターから以下の通り接続を解除してください。

USBケーブルの接続を解除します。

ワイヤレスキットを使用している場合、コンピューターからUSBドングルを外してください。

ペンタブレットBluetoothで接続されている場合、ペンタブレットの電源とコンピューターのBluetoothがオフになっていることを確認してください。

Finder-移動からアプリケーションフォルダを開き、ワコムタブレットフォルダを開いてください。

ワコム タブレットユーティリティを起動します。

タブレットソフトウェアで、アンインストールをクリックしてください。

Mac OS Xの場合はこの作業を実行するために管理者アカウントの認証が表示される場合があります。​

ペンタブレットドライバが削除されたら、OSを再起動します。

OSの再起動後、以下から製品に対応した最新のタブレットドライバをダウンロードしてください。

https://tablet.wacom.co.jp/download/down1.html

ダウンロードしたdmgファイルを開き、インストーラーを実行して表示される手順に従ってください。

インストールが完了したら、再度OSを再起動してください。再びログインしてから、ペンタブレットを再接続してください。

注意: ペンタブレットはお使いのコンピュータ本体のUSBポートに直接接続してください。USBハブやキーボードまたはモニタのUSBポートを使用するとペンタブレットが正常に動作しないことがあります。

インストール完了後、ペンの動作確認を行います。またペンタブレットの設定画面が正常に起動できるかご確認ください。

[移動]-[アプリケーション]-[ワコムタブレット]-[ワコムタブレットのプロパティ]

設定画面が正常に開ける場合、タブレットドライバは正常に動作している状態となります。

上記の手順で正常に動作しない場合は、ペンタブレットドライバに関するセキュリティ項目のチェックを一旦外してからアンインストールをお試しください。

以前保存した環境設定が復元後に適切に動作しない、または何らかの不具合に気づいた場合、環境設定の再リセットを推奨いたします。リセット後に機能が問題なく動作している場合、保存していた環境設定ファイルが破損している可能性がありますので、手動またはより古いバックアップから再作成する必要があります。

解説

セキュリティ項目のリフレッシュを再起動によってしなければ,ドライバのバージョンによっては動作が壊れて詰む

および前述のWacomタブレットmacOSのバージョンを参考

反省点

  • 「再起動しなくても大丈夫でしょ」という慢心があった
  • でもやっぱりどう考えてもmacOS Catalinaが悪いよmacOS Catalinaが

原因(推測)

どんなバージョンのmacOSでも再起動が当たり前だろ説

  • アンインストール後は再インストール・再設定をする前に一度は再起動してOSを整理するのは当たり前だよなぁ
    • そうじゃないと常用RAMから機能拡張の情報がさっぱり消えませんものね,衝突しては困りますわ・・・

システム環境設定の認証項目が変化したから説

  • 前述のケースAとケースBでは入力監視において許可を出すか否かの違いがあった
    • その結果として現在でもWacomが出す情報とは差異があるままで正常に動作している
    • macOS Catalina 10.15.5においては「1つのappの実行の完全な配下にある諸々の拡張機能は,その1つのappを代表して許可が与えられると言えるので,そういうものに個別に許可を出す必要はないんじゃないか,逐一に許可するのはユーザビリティにも反するし廃止しよう」という話が出たんじゃないかと疑っている
      • インストール時の検証における何らかの処理で従来バラバラだったwacomのドライバが統一された・・・?
  • pkgファイルのインストール中に初めて見たような画面が存在していた
    • セキュリティとプライバシーの仕様変更に合わせてインストーラ.appが変更された線を疑っている
    • 「ブートプログラムに登録中」という語彙からするに,ブート専用プログラムとしてmacOSに深く刻まれたとか・・・?
      • 指南書の通りにFinder上でプログラムを探したが対象フォルダ内部にあるはずのプログラムが見つからないため
      • 先に述べた仮定とも矛盾しない(ユーザーが手を加えないようにいっそ見えない場所に隠した方が安全だよね・・・?)
  • この2点を踏まえると,リスト上では許可があるべき項目(入力監視)に許可がないのにmacOSによってドライバが動作するというクレイジーな状態が発生し,処理がどこかで詰まって操作不能に陥ったのではないか,という結論に至った
  • つまるところアンインストール後の再起動は許可リストの完全なリセットに相当し,それを私がサボった上でCatalinaの仕様変更を膝に受けてしまったてめ,致命的なバグに陥ったのではないか,という仮説を建てた
    • 許可項目のリセットは対象の拡張機能ソフトウェアが全く存在しない状態で行われなければいけないんだろうなって
    • 最終的にはトラックパッドのクリック入力すらドライバのせいにして弾かれた上にセーフブートも効かなかった
  • OSの再インストールで治った理由はよくわからない
    • 再インストールの手順はAppleの案内に沿って行われるべき
    • ここまできたら半ばヤケクソな最後の手段だと考えている・・・

最後に

皆さまはちゃんと公式の文書をしっかりと読み理解して気をつけてドライバをアップデートしてください

俺「"not suitable for the qiita community"っと・・・」カタカタ -> Qiita「・・・!!」ザッ

皆さんもGoogleで検索してみましょう

せーのっ

「"not suitable for the qiita community"」

Qiita「・・・!!」ザッ

こちらがその一覧です

f:id:Soluna_Eureka:20200715230152p:plain

よく見えないって?

じゃあ表にしてみるね・・・

href decoded title breadcrumb date description
https://qiita.com/capsmalt https://qiita.com/capsmalt capsmalt - Qiita qiita.com › capsmalt It's illegal (copyright infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines).
https://qiita.com/rubytomato@github https://qiita.com/rubytomato@github rubytomato@github - Qiita qiita.com › ... Other than the above, but not suitable for the Qiita community (violation of guidelines). 渡邉 真. @rubytomato@github. @rubytomato. 今までJavaをメインにやってきましたが、JavaScript(Node.js)の習得に取り組み始めました。 215. Posts · 7643.
https://qiita.com/nyampire https://qiita.com/nyampire nyampire - Qiita qiita.com › nyampire Other than the above, but not suitable for the Qiita community (violation of guidelines). @nyampire. @nyampire · 68. Posts · 1136. Contributions · 127. Followers. Follow. Yokohama. OpenStreetMap Foundation Japan. Following tags.
https://qiita.com/ryohashimoto/items/69dac29a63f682143df7 https://qiita.com/ryohashimoto/items/69dac29a63f682143df7 Sidekiq 6の新機能・変更点 - Qiita qiita.com › Ruby 2020/3/13 Other than the above, but not suitable for the Qiita community (violation of guidelines). Sign up for free and join this conversation. Sign Up. If you already have a Qiita account Login. How developers code is here. Qiita.
https://qiita.com/nunulk https://qiita.com/nunulk nunulk - Qiita qiita.com › nunulk It's illegal (copyright infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines).
https://qiita.com/tnorimat https://qiita.com/tnorimat tnorimat - Qiita qiita.com › tnorimat Other than the above, but not suitable for the Qiita community (violation of guidelines). @tnorimat. @tnorimat · 6. Posts · 109. Contributions · 15. Followers. Follow. 横浜市. 日立製作所. Following tags. Following tags are none. Organizations.
https://qiita.com/TakahikoKawasaki https://qiita.com/TakahikoKawasaki TakahikoKawasaki - Qiita qiita.com › TakahikoKawasaki Other than the above, but not suitable for the Qiita community (violation of guidelines). 川崎 貴彦. @TakahikoKawasaki. @TakahikoKawasaki. 株式会社 Authlete の共同創業者。プログラマー代表取締役社長。 44. Posts · 16045. Contributions.
https://qiita.com/rubytomato@github/items/aabc9ee7ba0ccee910b5 https://qiita.com/rubytomato@github/items/aabc9ee7ba0ccee910b5 Vuetify.js 2.2 UIコンポーネントを調べたときの補足 - Qiita qiita.com › Vuetify 2020/6/23 ... infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines)...
https://qiita.com/kitoko552/items/3f45de6c876c638b690d https://qiita.com/kitoko552/items/3f45de6c876c638b690d GitHubに二段階認証を設定した後にGit操作できない時の解決策 ... qiita.com › GitHub 2 日前 Other than the above, but not suitable for the Qiita community (violation of guidelines). Sign up for free and join this conversation. Sign Up. If you already have a Qiita account Login. How developers code is here. Qiita.
https://qiita.com/notakaos https://qiita.com/notakaos notakaos - Qiita qiita.com › notakaos It's illegal (copyright infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines).
https://qiita.com/omiita https://qiita.com/omiita omiita - Qiita qiita.com › omiita Other than the above, but not suitable for the Qiita community (violation of guidelines). Omiita. @omiita. 東工大情報系修士2年。(2020年現在) 深層学習の研究しています。 アメリカの大学で1年間コンピュータサイエンス勉強してきました。ご連絡はメール...
https://qiita.com/G-awa https://qiita.com/G-awa G-awa - Qiita qiita.com › G-awa Other than the above, but not suitable for the Qiita community (violation of guidelines). @G-awa. @daisuke-awaji. 物性物理学、分子動力学の研究をやってました。サイエンス出身、スパコンが好きです。 java, spring, ruby, rails, python, nodejs, react,...
https://qiita.com/kamesennin https://qiita.com/kamesennin kamesennin - Qiita qiita.com › kamesennin It's illegal (copyright infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines).
https://qiita.com/takahirom https://qiita.com/takahirom takahirom - Qiita qiita.com › takahirom It's illegal (copyright infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines).
https://qiita.com/mysticatea/items/e155bd2fee35c22ee423 https://qiita.com/mysticatea/items/e155bd2fee35c22ee423 ESLint v7.3.0 - Qiita qiita.com › JavaScript 2020/6/20 ... infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines)...
https://qiita.com/k-penguin-sato/items/07fef2f26fd6339e0e69 https://qiita.com/k-penguin-sato/items/07fef2f26fd6339e0e69 Rails】graphql-rubyAPIを作成 - Qiita qiita.com › Rails 2020/3/24 ... infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines)...
https://qiita.com/rubytomato@github/items/f9cc8e261c765c86f9cd https://qiita.com/rubytomato@github/items/f9cc8e261c765c86f9cd Windows Package Manager (Preview) メモ - Qiita qiita.com › Windows 2020/5/25 It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines) ... Other than the above, but not suitable for the Qiita community (violation of guidelines). Sign up for free and join...
https://qiita.com/seratch https://qiita.com/seratch seratch - Qiita qiita.com › seratch Other than the above, but not suitable for the Qiita community (violation of guidelines). Kazuhiro Sera. @seratch. Slack の東京オフィスで技術スタッフをしています。日本でのパートナー協業を技術面でサポートしたり、本社のメンバーと Slack の SDK...
https://qiita.com/lagenorhynque/items/68c314c288b75a9492ba https://qiita.com/lagenorhynque/items/68c314c288b75a9492ba Clojure/ClojureScript関連リンク集 - Qiita qiita.com › Clojure 2020/7/5 ... infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines)...
https://qiita.com/NaokiIshimura/items/2a179f2ab910992c4d39 https://qiita.com/NaokiIshimura/items/2a179f2ab910992c4d39 Rails5.2から追加された credentials.yml.enc のキホン - Qiita qiita.com › Rails 2020/7/3 ... infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines)...
https://qiita.com/shikichee/items/a5f922a3ef3aa58a1839 https://qiita.com/shikichee/items/a5f922a3ef3aa58a1839 GitHubで使われている実用英語コメント集 - Qiita qiita.com › Python 2019/6/9 It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines) ... Other than the above, but not suitable for the Qiita community (violation of guidelines). Sign up for free and join...
https://qiita.com/sadnessOjisan https://qiita.com/sadnessOjisan sadnessOjisan - Qiita qiita.com › sadnessOjisan It's illegal (copyright infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines).
https://qiita.com/mobilebiz https://qiita.com/mobilebiz mobilebiz - Qiita qiita.com › mobilebiz Other than the above, but not suitable for the Qiita community (violation of guidelines). 高橋 克己. @mobilebiz. @mobilebiz. フルスタックエンジニア。趣味は料理。 2014年7月に、留守番電話が文字で届く国内初の留守電サービス「TRANSREC」を...
https://qiita.com/witchcraze/items/af8ac5da5948ff6a609e https://qiita.com/witchcraze/items/af8ac5da5948ff6a609e EOLを確認できる公式ソースまとめ - Qiita qiita.com › EOL 2020/6/6 ... infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines)...
https://qiita.com/yugoes1021/items/bb3b5c2c8b5d083ce211 https://qiita.com/yugoes1021/items/bb3b5c2c8b5d083ce211 [Power BI Tips] Power BI で信号機が作りたい - Qiita qiita.com › PowerBI 2 日前 ... infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines)...
https://qiita.com/tenntenn/items/0e33a4959250d1a55045 https://qiita.com/tenntenn/items/0e33a4959250d1a55045 Go言語の初心者が見ると幸せになれる場所 #golang - Qiita qiita.com › Go 2020/6/16 Other than the above, but not suitable for the Qiita community (violation of guidelines). Sign up for free and join this conversation. Sign Up. If you already have a Qiita account Login. How developers code is here. Qiita.
https://qiita.com/bezeklik/items/10e520e281bd32bde3e8 https://qiita.com/bezeklik/items/10e520e281bd32bde3e8 CentOS 7 に MySQL Server 8 をインストールする - Qiita qiita.com › MySQL 2019/6/12 ... infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines)...
https://qiita.com/naoi https://qiita.com/naoi naoi - Qiita qiita.com › naoi It's illegal (copyright infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines).
https://qiita.com/niyalist https://qiita.com/niyalist niyalist - Qiita qiita.com › niyalist It's illegal (copyright infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines).
https://qiita.com/koedamon https://qiita.com/koedamon koedamon - Qiita qiita.com › koedamon It's illegal (copyright infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines).
http://tests.wop-lab.company/hcfu/rubberduck-vba-github.html http://tests.wop-lab.company/hcfu/rubberduck-vba-github.html Rubberduck vba github - WOP lab tests.wop-lab.company › hcfu › rubberduck-vba-github ... Failed Cross-posted on GitHub – Mathieu Guindon Jun 7 '17 at 14:50. py ファイル見かけていました Other than the above, but not suitable for the Qiita community (violation of guidelines) 仕事で使ったり個人的に入れて便利なツールを紹介します。
http://aviakompozit.wop-lab.company/ap52t/dawasa-jobs.html http://aviakompozit.wop-lab.company/ap52t/dawasa-jobs.html Dawasa jobs aviakompozit.wop-lab.company › da... Other than the above, but not suitable for the Qiita community (violation of guidelines) This is the best website for Sri Lankan graphic designers. Find current Part Time job vacancies from top companies and employers. The Government of the...
http://thecourtyardfulham.com/7pdfoa/hitogata-vrm.html http://thecourtyardfulham.com/7pdfoa/hitogata-vrm.html Hitogata vrm - The Courtyard Fulham thecourtyardfulham.com › hitogata-vrm Other than the above, but not suitable for the Qiita community (violation of guidelines) 1.HitogataとはWebカメラ等を用いてVTuberになれるフリーソフトWebカメラを使うものの中でも(たぶん)最も滑らかな動きで高解像度。パーツを組み合わせてモデル...
http://dg.gratiaplena.it/richtextblock-wpf.html http://dg.gratiaplena.it/richtextblock-wpf.html Richtextblock wpf - Gratia Plena dg.gratiaplena.it › richtextblock-wpf This capabilty was originally introduced to allow developers to create the column layout of the typical Other than the above, but not suitable for the Qiita community (violation of guidelines) Set the header as “WinRT” and repeat the same...
https://buff.ly/2BiXx05 https://buff.ly/2BiXx05 オワコン大手SIerに学ぶアンチパターン - Qiita buff.ly › ポエム 2020/6/12 ... infringement, privacy infringement, libel, etc.) It's socially inappropriate (offensive to public order and morals). It's advertising. It's spam. Other than the above, but not suitable for the Qiita community (violation of guidelines)...
http://dn.stomatologbialapodlaska.com.pl/demosaicing-python-code.html http://dn.stomatologbialapodlaska.com.pl/demosaicing-python-code.html Demosaicing python code dn.stomatologbialapodlaska.com.pl › ... Other than the above, but not suitable for the Qiita community (violation of guidelines) Over five million people in more than 180 countries have used Python Tutor to visualize over 100 million pieces of code, often as a supplement to textbooks,...
https://batoolthepureone.com/sdtpce/shadertoy-webvr.html https://batoolthepureone.com/sdtpce/shadertoy-webvr.html Shadertoy webvr - BATOOL THE PURE ONE batoolthepureone.com › sdtpce › shadertoy-webvr ViroReact: AR and VR using React Native Step into the worlds of Shadertoy with an Oculus Rift. js that simplify code, adds physics, and post-effects Other than the above, but not suitable for the Qiita community (violation of guidelines) Dec 08,...
http://ijs-machine.be/lnvntss/open3d-python-install.html http://ijs-machine.be/lnvntss/open3d-python-install.html Open3d python install ijs-machine.be › lnvntss Alternatively, you could not use our provided visualization code, and visualize the point cloud Other than the above, but not suitable for the Qiita community (violation of guidelines) To see which Python installation is currently set as the default:...
https://ycomtechnologiesltd.com/lffcs4/unirx-unity.html https://ycomtechnologiesltd.com/lffcs4/unirx-unity.html Unirx unity - YCOM Technologies ycomtechnologiesltd.com › lffcs4 › unirx-unity 2016/7/16 LINQ to GameObject (58 Other than the above, but not suitable for the Qiita community (violation of guidelines) Apr 11, 2018 · Unityで使われているUniRx。使い方やそのメリットをご紹介します。 EveryUpdate microcoroutine Free...
http://www.mpsodisha.com/dw9phx76/vrchat-stencil-shader.html http://www.mpsodisha.com/dw9phx76/vrchat-stencil-shader.html Vrchat stencil shader - MPS www.mpsodisha.com › vrchat-stencil-shader ... 2018 · Let's learn how to create one of my favourite effects: Dissolve! Check out Skillshare: http://skl. Other than the above, but not suitable for the Qiita community (violation of guidelines) [Unity Shader] Outline 외곽선 쉐이더 만들기 (0) 2019.
http://eg.tuttozippo.it/tecogan-pytorch.html http://eg.tuttozippo.it/tecogan-pytorch.html Tecogan pytorch eg.tuttozippo.it › tecogan-pytorch ... research Volumetric Isosurface Rendering with Deep Learning-Based Super-Resolution Sebastian Weiss, Mengyu Chu, Nils Thuerey, Rudiger Westermann¨ (a) (b) (c) Other than the above, but not suitable for the Qiita community (violation...
http://foto-start.be/amp9v/javafx-timer-clock.html http://foto-start.be/amp9v/javafx-timer-clock.html Javafx timer clock - Foto start foto-start.be › javafx-timer-clock Other than the above, but not suitable for the Qiita community (violation of guidelines) Jul 21, 2014 · Time Is A Stream val clock: Observable[Long] = Observable. 5 seconds: Take the following steps to add the Weather and Clock widget on the...
http://dg.macroluce.it/elasticsearch-regex-query-string.html http://dg.macroluce.it/elasticsearch-regex-query-string.html Elasticsearch regex query string dg.macroluce.it › elasticsearch-regex-... Other than the above, but not suitable for the Qiita community (violation of guidelines) Aug 31, 2016 · 2. +(10710[0-9]). A lot of the articles on the Internet are out of date, so here is a short example for the latest Elasticsearch using Ruby, my...
http://randy-newman.com/2ncx5h9m/voicemeeter-banana-vrchat.html http://randy-newman.com/2ncx5h9m/voicemeeter-banana-vrchat.html Voicemeeter banana vrchat randy-newman.com › voicemeeter-banana-vrchat 18 绿色 Other than the above, but not suitable for the Qiita community (violation of guidelines) We like to play everything, relax, and have a good time. https:// www. I use VoiceMeeter Banana to manage my sound. VRChatを始めてからもうすぐ1...
http://believedhkf.sango.xyz/new-rtcicecandidate.html http://believedhkf.sango.xyz/new-rtcicecandidate.html New rtcicecandidate believedhkf.sango.xyz › new-rtciceca... ... but so always appears the camera's main user ando the second camera not appe Other than the above, but not suitable for the Qiita community (violation of guidelines) Generally, my communication model is as below, self_id is a unique id...
https://chotenawabny.com/0dgdknu/callkit-github.html https://chotenawabny.com/0dgdknu/callkit-github.html Callkit github chotenawabny.com › callkit-github ... than the above, but not suitable for the Qiita community (violation of guidelines) Mar 05, 2018 · Unlike other web programming languages, Python enables developers to build web applications with concise, readable, and maintainable code.
http://snelste-wagens.be/4sje1a/terraform-stackdriver-logs.html http://snelste-wagens.be/4sje1a/terraform-stackdriver-logs.html Terraform stackdriver logs - De snelste wagens ter wereld snelste-wagens.be › terraform-stackdr... Other than the above, but not suitable for the Qiita community (violation of guidelines) CI for terraform deployments will be run in live GitLab, using private runners within the environment. Use Promo Code GNS350OFF at checkout to receive...
http://hf.woniuseo.com/3qv/yolov3-to-onnx.html http://hf.woniuseo.com/3qv/yolov3-to-onnx.html Yolov3 to onnx hf.woniuseo.com › yolov3-to-onnx Other than the above, but not suitable for the Qiita community (violation of guidelines). models . weights file into the TensorFlow 2 weights format. onnx from torch. The conversion of the YoloV3-608 to ONNX does not work because the python...
http://synexus.com.ua/gp6t/flask-oauth2-keycloak.html http://synexus.com.ua/gp6t/flask-oauth2-keycloak.html Flask oauth2 keycloak synexus.com.ua › flask-oauth2-keycl... Other than the above, but not suitable for the Qiita community (violation of guidelines) Oct 17, 2018 · This was the thing that was going in my head when I was learning Django and Angular 4. If you thought jwts were bad, take a look at the...
https://gorczany.com/lrs/error-cannot-find-module-react.html https://gorczany.com/lrs/error-cannot-find-module-react.html Error cannot find module react gorczany.com › lrs › error-cannot-fin... 2020/4/28 Webpack plugin. json' Other than the above, but not suitable for the Qiita community (violation of guidelines) Subscribe. json' at Function. Dear Nexcom, ng-uikit-pro-standard is compatible with Angular 6. scss'-> Accessors...
http://bk.metrotile.com.pl/athena-regex.html http://bk.metrotile.com.pl/athena-regex.html Athena regex bk.metrotile.com.pl › athena-regex Other than the above, but not suitable for the Qiita community (violation of guidelines)Quirk #4: Athena doesn't support View From my trial with Athena so far, I am quite disappointed in how Athena handles CSV files. If you are entering a...
http://dwcconsult.com.br/inf7oi/tecogan-pytorch.html http://dwcconsult.com.br/inf7oi/tecogan-pytorch.html Tecogan pytorch dwcconsult.com.br › tecogan-pytorch 有研究过超分辨率重建的大大吗 [问题点数:40分,结帖人h294455907] Other than the above, but not suitable for the Qiita community (violation of guidelines) No 1. wikipedia. What is going on with this article? ※2018年06月23日 追記 PyTorchを...

感想

う〜ん・・・Qiitaにこんな機能があったとは

真面目な感想

Qiitaさぁ・・・公開SNSサービスでユーザー通報フォームの文言をプロフィールページのHTMLとJavaScriptに直に埋めこむのはさぁ・・・ちょっとどうかと思うよ・・・?

f:id:Soluna_Eureka:20200716001139p:plain

こんな文言があったらGoogleが拾わないわけないだろ・・・