【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ファイルの受け入れ

1.png

ポイント

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

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

2.png

ポイント

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

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

3.png

ポイント

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

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

4.png

ポイント

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

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

5.png

ポイント

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

6.pngレンダリング

6+.png

ポイント

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

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

7.png

ポイント

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

PNG to PDF

複数のpngから1つのpdf

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

1+.png

ポイント

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

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

2+.png

ポイント

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

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

3+.png

ポイント

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

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

4+.png

ポイント

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

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

5+.png

ポイント

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

6.pdfをレンダリング

6++.png

ポイント

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

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

7+.png

ポイント

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

感想

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

でぃすこぐらふぃ

それ以前

筑波大学附属高等学校にいたりした 一回だけバンドやったりした

2018年

4月

2019年

4月

  • Technation-Records(テクネ)入り

10月

  • traPの秋M3への出店に際し,新規CDの制作進行を担当

2020年

2月

  • テクネの春M3への出店に際し,新規CDのイラストを担当

9月

  • traPを脱退

2021年

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

ロックダウンで電力需要が一瞬だけちょっとだけ低下していた話

資料

資源エネルギー庁 統計一覧

2020年度 www.enecho.meti.go.jp

それ以前 www.enecho.meti.go.jp

エクセルファイルがあるのでここ4年を引っこ抜いた

グラフにしてみた

特別高圧・7000V〜,工場や鉄道などクソデカ需要者向け

高圧・6000V〜7000V,ビルや商業施設などデカ需要者向け

低圧・〜600V,その他向け

f:id:Soluna_Eureka:20210122104714p:plainf:id:Soluna_Eureka:20210122104718p:plainf:id:Soluna_Eureka:20210122104722p:plainf:id:Soluna_Eureka:20210122104726p:plain
比較

わかったこと

高圧と特別高圧の2020年5月の落ち込みが確かにわかる でもあれだけ経済を止めると騒いでおいてコレしか減っていないとも言える つまり電力という観点ではロックダウンされても活動量は大して変わらないし解除してからは例年通りに戻ったしむしろ9月の低圧受電が上がっているのでコロナのおかげな節電効果を考えるのはまずい

f:id:Soluna_Eureka:20210122105752p:plain
低圧

節電しよう

  • 熱エネルギーを生み出す家電は総じて効率がクソ
    • よってエアコンが至高,関東以南の電気ヒーターは甘え
    • ガスで湯を沸かせ,ティファールは電気を食う悪魔じゃ
  • テレビは電気を食う
    • 消せ,それ以外の娯楽を見つけろ
    • 必要な時にパソコンを使えばいい
    • 半導体は動けば動くほど熱を出す電熱器だと考えるべきだと思う,それでもLEDやELは高性能な光源だとはわかっているけれど,テレビは画面の明るさが桁違いすぎる
  • それはそうとして家電を買い換えろ
    • もしくは埃を掃除しろ,冷蔵庫エアコン空気清浄機あたりだよ
    • つーか政府は買い替えを補助しろ,この際に国内メーカーを支援しろ,発電所を作るより全国に点在するクソ古い家電を取っ替えた方が早いし安上がりだ,国民のQOLも上がるし一石二鳥だ
    • どうせ贅沢はやめられないんだし二者択一だろ

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様製だった… これがガチプロの世界か… (色々やれることが多すぎてまーったく使いこなせてないけど補完は助かる)

スクリーンショット 2020-12-01 18.15.58.png

NTT東日本での ONU(HGW) & v6プラスへの変更 に関するメモ

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

ぶっちゃけIPv6とIPoEに憧れていて,これを機に回線契約をv6プラスにした人も多そう ONUとHGWの違いは色々とあると思うけど,インターネット機能はだいたい同じかと思う

ONU備忘録

設定上の注意

  • ONUに繋いだマシンからブラウザのGUIを介してできるようになっているぞ
  • 設定を変更した際に取り返しのつかないことが起きないように気をつけよう
    • 万が一そういう事が起きても大丈夫なように設定ファイルを保存しておこう
    • 流石にONU設定画面にたどり着けなくなることはないとは思うけど…
  • ONUの種類によってはファームウェアの表示や機能に差があるかもしれないわね
    • 最近のNTT系のONUなら,「LINEポート(光ファイバを引き込んでONUになる)もしくはVDSLポート(別のONUから電話回線を引き込む)もしくはWANポート(別のONUからLAN回線を引き込む)で受ける」=>「TELポート×2とLANポート×4と無線(Wi-Fi×1を出す」
    • V6プラスならほぼ確実に「LINE受け」になると思う,対応ルーターを参考にして欲しい
    • 契約するサービスは…んにゃぴ…色々ありすぎてちょっとよくわからないですね…

メイン設定画面

スクリーンショット 2020-11-29 2.12.35.png ONUの機種名は秘密だぜ?

場所

  • http://192.168.1.1
    • 初期設定だとほぼ必ずこうなっているはず
    • わかんなくてもネットワークの画面にルーターの位置が書いてあるのでわかるはず
      • スクリーンショット 2020-11-28 18.49.25.png

中身

  • 基本設定
    • 接続先設定(IPv4 PPPoE)
      • v6プラスでの通信に成功していると,一切の編集ができなくなる
    • 接続先設定(IPv6 PPPoE)
      • v6プラスでの通信に成功していると,この項目そのものが消える
  • 電話設定
    • ひかり電話共通設定
      • んにゃぴ…これはよくわからないですね…
    • 内線設定
      • ONUに対するTELポート接続orネットワーク接続,そしてひかり電話対応機器で増設できる
      • 俺ァこういうのやったことないからわからないんですけど,ブラウザからやったり電話機からやったりできるらしいっすよ
    • 光回線ひかり電話に対応するルーターが扱えるTELポートと電話機は2つまでが標準らしい
      • スクリーンショット 2020-11-28 22.16.04.png
      • つまりいくらTELポートがあったとしても,電話線で接続できる電話機は2つまでっ…!
  • 無線LAN設定
    • あー,市販のWi-Fiルーターで良いんじゃ…無線カードを使ったこともないのでわからない…
  • 詳細設定
    • DNS設定
      • ローカルでDNSサーバーを立てて振り向かせたい時に使う…らしい(使ったことない)
    • DHCPv4サーバ設定
      • ONUの下の機器にIPv4アドレスを振り分ける際の設定
      • 出力側のIPv4アドレス(192.168.1.1)と開始IPv4アドレス・割り当て数.リース時間
      • MACアドレスごとにIPv4アドレスを固定する機能があったりする,使ったけど不便でやめた
      • それにWi-Fiルーターの設定ならエアステーション用アプリを使えば良いし…
    • SPI設定
    • IPv4パケットフィルタ設定(PPPoE)
      • 通信のフィルタリングができる
      • 無効=>無防備,標準=>「フレッツ光ネクスト網内で折り返す通信(NTT東日本NTT西日本との契約により可能となるもの)は許容」(本文ママ),高度=>外から来るもの全部NG
      • v6プラスでの通信に成功していると,この項目そのものが消える
    • IPv6パケットフィルタ設定(PPPoE)
      • 機能は上に同じ
      • v6プラスでの通信に成功していると,この項目そのものが消える
    • IPv6パケットフィルタ設定(IPoE)
      • 機能は上に同じ
      • v6プラスでの通信に成功していると,この項目が使用可能になる
    • LAN側静的ルーティング設定
      • ONUの下にルーターWi-Fiとか)を置き,更にその下に機器(プリンターとか)を置き,ONUに直接つないだPCからONUルーターを通してその機器に接続したい」…みたいな時は,ルーター側とONU側で被らないようきっちりIPv4アドレスを設定した上で,この静的ルーティングの設定で「ONUルーターの接続」を明示しちゃんと通信を導いてあげないと,当然だがデフォルトでは通信が全て弾かれる
      • あくまで一般人が快適に過ごす程度であれば,ONUの下のWi-Fiルーターをルーターモードではなくブリッジモードで使うのが最も楽で,事情がない限りはネットワークの構築をするまでもなく,ONUIPv4アドレスの割り振り(DHCPv4)と通信を全てやらせてしまった方がかえって安心…
    • 高度な設定
      • PPPoEブリッジをオンにすると,ONUの下に独立してPPPoEを用いた通信ができる機器を置いた時に,その通信を見極めて素通りさせてくれる…らしい(使ったことない)
      • アップデートは自動でいいと思う
      • 何か他にも色々あるのでONUファームウェアに備え付けのヘルプページを見て欲しいです…
  • メンテナンス
    • 機器設定用パスワードの変更
      • 要するにログインパスワード,ぜっっったいに忘れないようにしましょう()
    • 設定値の保存&復元
      • 設定ファイルを生成してPCに保存したりそれを使って設定を復元したりできる
    • ファームウェア更新
      • アップデート用のファイルをPCから渡してやらせることもできる…が,普段なら勝手に更新を確認してアップデートしてくれるので,まぁ不要かと…
    • 何か他にも色々あるのでONUファームウェアに備え付けのヘルプページを見て欲しいです…
  • 情報
    • 現在の状態
      • ONUの基本情報がわかる
    • 通話ログ
      • お電話の履歴が覗けますわよ
    • DHCPクライアント取得情報
      • IPアドレスを配ってくれるDHCPサーバーの場所を表示してくれる
      • DHCPv4とDHCPv6およびIPoEとPPPoEで別々に存在し,v6プラスでの通信に成功していると,DHCPv6 IPoEとDHCPv4 IPoEの2つが表示される
      • なおわたくしめはDHCPv4とDHCPv6の仕様とか違いとかは全く持って理解していません
      • ちなみにIPv6DNSサーバーはNTT東日本が建ててくれた2404:1A8:7F01:A::3および 2404:1A8:7F01:B::3で固定されている…らしい,NTT西日本はわからない
      • もしDHCPv4サーバーについて気になるなら,こ↑こ↓から検索できる
    • DHCPv4サーバ払い出し状況
      • ONUの下の機器にどれだけIPv4アドレスを配布したかを表示してくれる
    • DHCPv6サーバ払い出し状況
      • ONUの下の機器にどれだけIPv6アドレスを配布したかを表示してくれる
      • …という話ではあると思うが,「DHCPv6サーバ設定」もないし,DHCPv6についても全く無知なので,これが何を意味するかは不明…払い出し数もずっと0のままだし…
    • セキュリティログ(IPv4)
      • 結構な量が弾かれていたりする
      • 代表するパケットフィルタ設定(v6プラスでの通信に成功していると,IPv6パケットフィルタ設定(IPoE)が相当する)が適用される
    • セキュリティログ(IPv6)
      • こちらも結構な量が弾かれていたりする
      • こちらも代表するパケットフィルタ設定が適用される
    • 何か他にも色々あるのでONUファームウェアに備え付けのヘルプページを見て欲しいです…

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

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

IPv4設定

スクリーンショット 2020-11-29 2.14.38.png さっきのメイン設定画面とは別の場所にコイツがいたりする IPv6のネットワーク網を用いるサービスに切り替えるとIPv4に関連する設定がONUのメイン設定画面ではできなくなるので,その代わりにコイツを使う

場所

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

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

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

中身

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

v6プラスへの移行

v6プラスとは?

IPv6のネットワーク網でのIPoE方式での接続と通信を提供しつつ,IPv4のネットワーク網への接続もカバーしてくれるサービス,IPv6 IPoE

IPv4 PPPoEとの違い

IPv4IPv6では規格が異なり,後者は前者の抱えるIPアドレス枯渇問題の解決策になりうるとされる その内いつか完全にIPv6に移行する日が来る可能性が微粒子レベルで存在している…?

IPv4 IPoEとの違い

悪いなのび太,IPoEはIPv6でしか使えないんだ(たぶん)

IPv6 PPPoEとの違い

接続と通信の方式がPPPoEとIPoEでは異なり,前者は後者に比べ通信が混雑しやすいとされている それでもIPv6のネットワーク網からIPv4のネットワーク網への接続はカバーしてくれている

v6プラスへの移行の流れ

IPv6へ移行する

契約内容を変更

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

ONUを新調

この時点で必ずv6プラス対応ルーターを選定しておく

回線を新調

場合によってはそうなるかもしれない,工事不可避なケースも…

IPv6へ切り替わるのを待つ

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

ONUの設定を確認する

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

v6プラスへ移行する

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

プロバイダに申告する,大抵の場合はv6プラスは無料のオプションなのでご安心を

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

なんか割とすぐ切り替わった気がする,2020年の夏の話なんで記憶が薄いけど…

ONUの設定を確認する

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

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

豆話

そういやプロバイダはちょっと前まで「v6プラスならトラフィックが無制限」みたいに言ってた組織もあった気がするんだけど,流行り始めてから段々と制限をかけるプロバイダが増えた気がする もしガチで勝ちに行くならやっぱろ金に物を言わせて勝ち組の回線を奪取しに行くべきなんだよなぁ…

v6プラスの技術について

ドンっ!!!(10分講座) ドンっ!!!(ガチめの仕様解説書)

IPoEを用いながらIPv6のネットワーク網からIPv4のネットワーク網への通信の接続に用いられる技術として,JPNEのv6プラスやBIGLOBEIPv6オプションが該当するMAP-E方式においては,IPv4のネットワーク網に向けた通信は ONU(HGW)でカプセル化されIPv6のネットワーク網に流される,そして運ばれた先で元の通信に戻され目的のサーバーに到達する,という流れを経る. もう1つの技術であるtransix(DS-Liteも同様にONU(HGW)でカプセル化されるため,IPv6 IPoEで通信するためには,やはりONU(HGW)を対応する製品に変更する必要がある.

両者の違いはNAT(IPv6アドレス・ポートを利用する通信をどのようにIPv4アドレス・ポートを利用する通信に変換するか,またその逆も然り)が行われる場所であり,MAP-EであればONU(HGW)が担当するがtransixであればプロバイダの施設が担当する,そのためどちらを利用するかによってONU(HGW)の種類やファームウェアの種類が異なっていた… (と思ったらつい最近になってNTTが双方に対応できるような製品を用意していた.)

その特性ゆえ,もし自宅の自前の機器を選んでポート解放をするのであれば,ONU(HGW)でNATが行えるMAP-Eをまずは選ばざるを得ないという現状は,確かに存在すると考えられる…

その他

はてなブログの記事のヘッダフッタ編集が面白いのでQiitaでもやってほしいけど無法地帯になりそう

一段

志半ばで絶える善より,徹底的に熟す偽善

何であろうとも終わるまで

二段

己を裁き,己を定め,己を造る

此れをひたすらに繰り返す

不撓不屈の自由と正義

再び孤高と独善を恐れるな

三段

不戦,此れ勝利に非ず

戦がなければ勝利もない

無言,此れ否定に非ず

言がなければ否定もない

併せ来る者,拒まず

必ず人を一見せよ

変り往く者,追わず

必ず人に餞別せよ

生に在って樂となせ

生を謳歌するに越した事はない

死を以って完となせ

死を迎えるまで終わる事はない

Götter predigen, mit Gottes analekten, unter Sol und Luna, für eine Eureka.

この世ならざるものとの付き合いかた

この世ならざるものとは

もしかしたら生きている間に出会うかもしれない,普段の我々が存在する世界とは異なる世界から来訪してくる存在.
見える・聞こえる・触れられるような時もあれば,ただ感じるだけの時もある.

幻覚か?

心理的不安定から五感が狂う事は人間にはよくある事であるから,そんなに信頼性が高いわけではないが,確実に記憶に焼き付く体験に至るような場合が多い.

体験記

一.毘沙門天の使い,大ムカデ

二.鹿島神宮神隠し未遂

三.安房鴨川,魚見塚展望台

非英語国家ユーザー向け・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で全部やるから死に機能になったしサーバーも落としたってことなんでしょうか

俺「"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が拾わないわけないだろ・・・

押忍!番長 シリーズ キャラ・ストーリー まとめ その1

唐突にどうした

いや〜気になっちゃって・・・

とりあえず情報ネタ元をメモしておきます

注意

パチスロ民ではないんですけど,純粋にキャラとストーリーに興味があります

なんで実機解説とかプレイ履歴とかそういう類では一切ありません・・・

というか逆にネタバレ注意な要素もありそうなので悪しからずや・・・

リンクまとめ(正統)

実装順

番長

古いのでサイトが2つある

製品情報

www.daitogiken.com

キャラ紹介

ycitysp.com

番長2

古いのでサイトが二つある

製品情報

www.daitogiken.com

キャラ紹介

ycitysp.com

リーマン番長

www.daitogiken.com

番長3

www.daitogiken.com

P番長

www.daitogiken.com

番長A

www.daitogiken.com

解説

p.hisshobon.jp

P番長2

www.daitogiken.com

※キャラ・ストーリー紹介は扱っていない

リーマン番長2

www.daitogiken.com

リンクまとめ(外伝)

実装順

P薫先生

www.daitogiken.com

※閲覧にFlash Player必須,最新版動作せず,FlashPlayer9が必要らしい・・・

※なので問題が解決し次第で追記します,開発機能のオーバーライドでもダメでした

古いのでサイトが二つある

製品情報

www.daitogiken.com

※閲覧にFlash Player必須,最新版動作確認済み

キャラ紹介

ycitysp.com

剛衛門

www.daitogiken.com

www.daitogiken.com

リンクまとめ(コラボ)

実装順

押忍ど根性ガエル

www.daitogiken.com