自己顕示欲の開放治療所

erg, programming and something.

別名:Laughing and Grief 雑記

Latin and Greekは習ったこともない

真面目な記事の他、特定の方には不快と思われる事柄に関して言及を行うことがあります。ちょっと頑張りますが、Blog内で解決できなかった場合要望があれば別ページに技術記事は書き直します

ぼくのかんがえたさいきょうの軽量マークアップ言語のためのメモ

そんなものはない

おもったこと

  • Markdownの好きではないところとして、拡張記法が実装言語によってバラつくところがある。
  • CommonMarkはちょっとNotForMeだった。
  • Re:VIEWの記法は結構好きだけど書籍用処理系と構造しか今はない。
  • EWBでは(変換先が決まっていたためでもあるが)意味マークアップと装飾用マークアップが分かれていて分かりやすい。
  • メモやブログの再利用時に手直しの負担が少ない方がよい。
  • 技術書向け以外のための記法(具体的には小説の会話文など)もちょっと欲しい。
  • 変換時に可能なら元のファイル構造を維持したい。
  • 構造によってはパラレルに処理できると嬉しい。

やりたいことともんだい

  • Re:VIEWライクな汎用記法を考えてみる。
  • ドキュメントのインポート機構をつける。
  • セクションは明示的に閉じるようにする。同じドキュメント内で開いたセクションは閉じる。
  • RAWブロック(インライン)系とネスト可能なブロック(インライン)の記法は分けるべきか?
  • 設定ファイル記法。CUE or TOML? ドキュメント本体とは別記法でドキュメントに仕込むことも可能に。処理時に明示する場合
  • 結局ベストなテーブル記法はなんなのだろうか。
  • preproccess, postprocessは汎用言語仕様としては悪手っぽい。
  • 不正なドキュメントは変換失敗でよい。
  • 文書の想定種類 カード(カンバン, コメント部のドキュメントなど)。これを最小単位とする。 アーティクル(カードを内部に含む場合がある)。 ブック(アーティクル、カードを内部に含む場合がある)。 それぞれで可能なセクショニングレベルを分ける。ブックはh1 - h6相当まで, アーティクルはh1 - h5, カードはh1 - h4とする。変換時にブックからアーティクルが呼ばれているといったとき、アーティクルのセクションレベルは1段下がって解釈される。 ** メタデータとしては上位が優先される。セクションオーサーなどのメタデータは別に分ける。
  • 一部のマークアップについて短縮記法を用意する。

Card

  • タイトル(メタデータ)とh1は共通
  • ドキュメントのネストを許容しない

Article

  • タイトル(メタデータ)とh1は共通
  • Cardのネストを許容する

Book

  • タイトル(メタデータ)とh1は別
  • Article, Cardのネストを許容する

TODO

とりあえずこんなところか。

Sphinx再入門を決めた夜

これは技術記事ではなくて日記です。念のため。

技術書典7

1週以内にはこちら単体の記事を書きますが、弊サークル「Virtual Ones」は「き41D」で「LuaLaTeX微文書作成入門」という中綴じコピ本を頒布しておりました。おかげさまで前回比

! zero division error

も売れまして、何とか参加費と印刷費を回収できました。予告しておりました通り後日PDFを公開いたします。

Sphinx

配置されていたのがドキュメントクラスタ(終了前くらいに初めて知った)だったので、そういったサークルが近場になるワケですが、今回「マークアップ同好会」の@tk0miyaさんがお隣のサークルでした。 確か技術書典5でもお隣にだった覚えがあります。そのときは遅刻していったのであまり時間は長くありませんでしたが。一体何hinxのコミッタの人なんだ……。

私がSphinxをひたすらに使っていたのは2014年頃で、Pythonを使っていたからreST+Sphinxを使い始めた流れだったかと思います。周りはmarkdownが蔓延し始めていたので少しアウェイ感が。 当時はSphinxで縦書き組版したかった記憶があります。LaTeXを直接書くのがつらかったからSphinxになんとかしてほしかったんだと思います。まあSphinxじゃそこはどうにもならなかったんですが。

眠くなってきたのでまとめると、多少は知識が身についてきた(と思いたい)ので返せるものがあればという思いで再入門です。あとオレオレ軽量マークアップの開発の刺激にね。

とりあえずUbuntu16.04のサポートが2021年まであるらしいので、そのあたりのTeXLiveのバージョンで動く想定はしておいた方が良さそうということで、 2014か2015年あたりから使っているLXD/LXCにUbuntu16.04とTeXLive2016を入れた。

薄荷ばあやと「義務教育の頃近所に住んでいた大学生のお姉さん」と「年下の姉」「年下のママ」と「年上の妹」

Preface

薄荷少女5巻が知らないうちに出ていたので読んだ。アフィリエイト付きリンクを張っておきます。また、本記事ではセクシャリティの話題が登場しますが、創作上での話、更にステレオタイプを ベースとしたものであることを強調させてください。ところどころ断定口調もありますが、もちろんそんなことはない。

5巻、あるいは物語的な意味での感想としては「幸せなバッドエンド」或いは「ノーマルネバーエンド」かなというのが私の感じたことである*1

Intro

薄荷少女を初めて読んだのは後輩の持ってきた永遠娘*2の巻末についてきた番外編だ。マコちゃん絵日記ではないが、 「いや、趣旨はそう外れてないけどここに載せて(作者は)いいの?」みたいな感想が先ず出てきた。 その頃にはIKKIサンデーGXといった漫画雑誌を読まなくなっていたから、そういう層に対するこういった新しい導線としては実はアリなのかもしれない。 まず滅茶苦茶柔らかいタッチの絵と、人物の空気に驚いた。永遠娘は「○リババア専門誌」というニッチジャンルだけあってタッチも主流とはちょっとズレたものも多い。 彼らの描くヒロインたちの多くは「美少女」ではなく「可愛い女の子」なのだ。突然殴りこんできた一般漫画で見事にその雑誌の空気に(ピンク的なものは含まずに)馴染んでいたのだ。

「○リババア」は表現上アレなので以後は「のじゃ○リ」と便宜的に称する。「のじゃ○リ」自体は古風?(「〜のじゃ」)な話し方をする幼い少女くらいしか含意せず、 キャラクターとしては多く「えらぶっているが寂しがり、耳年増、おばあちゃんっ娘、○リババア」のように登場するが本記事では便宜的表現であるので注意されたい。

「のじゃ○リ」の属性とギャップ萌え

のじゃ○リはその外見と過ごしてきた年月による老成した人生観のギャップを端的に表すが、その表れ方は当然作品によって異なる。

  • 実際の年齢に比べて外見相応の挙動をするギャップ
  • 実際の外見に比べて年齢相応の挙動をするギャップ
  • 外見に引き摺られて年齢に相応しくない感情を抱く

あたりが箇条書き的な特徴となるだろうか。これに類する属性に「年下の姉」「年下のママ」といったものがあると私は考えている。 「異様に若い母」と「年下のママ」については、母は「母らしくない挙動」をし、ママは「どこか背伸びした挙動」もしくは「異様な包容力」といったものであり、母については「女性性と母性」についての話題であると考えるので 除外する。なお、「年上の妹」については「恐らく存在しない」と考えているということを補足しておく*3。しっかり者の妹は別に年上の妹ではなく、年齢が実際に上の関係上の妹はただの女性かもしれない。

これらの関係は「年齢から予想される振舞い」「関係性から予想される振舞い」という前提があって効果的に機能する。 例えば100歳のキャラクターがいたとして、「100歳なのにあんなことをするのか」「100歳だから色々あったんだろうな」といったことだ。

薄荷少女においても、謎の薬で体が縮んでしまったがバットでは殴られない導入でのじゃ○リが誕生するところから物語は始まる。が、この方向からだけでは料理の感想に「うまい!」と言っているだけのようなもので、拙いなりにもう少しだけ掘り下げる。

「子供の頃の近所に住んでいた大学生くらいの異性」絶対的な距離の固定

友人曰く「おねショタの定義から証明を行っている」、「ペンギン・ハイウェイ」を観ましたか? 結末含め10000000000000000000000000000000点なので観てください。 さて、皆さんの子供の頃、近所にはミステリアスな大学生はいただろうか。私はいなかった。しかし、「子供の頃の近所に住んでいた大学生くらいの異性」と言われてどういったものか想像ができない人間は いないだろう。「〽子供のころの夢は 色褪せない落書きで」と歌う名曲*4もあるが、自我を形作る原風景として、義務教育*5時代の経験は重要である、はずである。 その年頃の子供にとって、一番心理的距離の遠い関係性は、実は大学生ではないだろうか。勉強を続けて、高校生になる未来は見えても、更に続けて大学生にというのは高校2年生くらいまでは遠い距離の人間はそこそこ多いのでは ないだろうか。そこから一足飛んで「社会人」というのは家族や通学路までの道、自由時間から逆に想像が容易くなる。「なにをしているのかわからない、すごいかもしれないひと」という目と、「かつてあったはずの、その頃何を考えていたか分からなくなってしまったくらいの子」の目が交差する。 大学生の多くは恐らく4年で、義務教育卒業までの期間より短い。1人暮らしの大学生は大学生でなくなると住居を変えることが多く、その辺りが関係の終焉となる。 10年後などに再会するとき、かつての大学生からは神秘が剥がれ、またあの頃の未知の前に立つ子供もいない。初恋に似た憧れは夢の中、思い出せない場所へと姿を隠しそれを侵すことを許さない。

ここでの関係性で重要なことは、ある程度の距離と越えられない溝である。子供の行動に大学生は距離を以て接し、大学生の思考は未だ子供の及ぶところに無い。これは世界の境界線の話かもしれない。 原風景に固定化されるこの距離と溝は子供の心に傷となって残る。

言うまでもなく老人と子供にはこれよりも長大な距離と溝がある。しかし、普段は長大な距離故に溝が問題になることは無い。

薄荷ばあやと薄荷少女

本題に戻り、薄荷少女では、子供の頃自分の世話をしてくれていたばあやが童女になってしまうことでこの距離が縮んでしまうのだ。縮みすぎて相手が童女になっているが。 特別掲載誌の主題とするところはのじゃ○リであるが、永遠娘の通常の作品は(誌の性質上)性的な交流を持つ。永遠娘でなくとも一般を含む多くののじゃ○リ作品では溝は一時的にせよ越えられるものとして描かれる。 作品を通し描かれるのは縮みすぎた距離に戸惑う坊っちゃんの姿であるが、彼は5巻を通し遂に溝を越えることはなかった。

上の表現であると誤解を招いたかもしれないが、薄荷が常に老人の感性を以て接するわけではない。何せこの作品は「薄荷少女」であるのだし。 坊ちゃんは目の前の少女に対し、子供の頃滿ちていたばあやの薄荷の香りを嗅ぐのだ。そして薄荷も少女であるから、ばあやであるから二人の関係性は坊ちゃんとばあやなのだ。

坊ちゃん

「坊ちゃん」自体は一般的な表現であるが、主人公が教職を持って、ばあやがいて、となると夏目漱石の「坊ちゃん」が有名どころだ。漱石の「坊ちゃん」に登場するきよは物語前半で退場し、 その後彼を坊ちゃんと呼ぶ者はまあいなくなる*6が、 薄荷少女ではばあやは奇跡の薬で坊ちゃんの元へ馳せ参じる。どちらの主人公も基本的に女っ気が無いが、これは果たして。自分よりも自分に期待してくれて、身の回りのことを嬉しそうにこなしてくれる 存在は呪縛に近しいのでさもありなんといった風ではあるが。

Outro

考えていたら苦しくなってきたのでこの辺で終了。薄荷少女を読もう。5巻の物理本って世界がどうなったら出るんだろう。

TVアニメ「うたわれるもの」OP主題歌 夢想歌

TVアニメ「うたわれるもの」OP主題歌 夢想歌

*1:オタクはすぐADVのマルチエンディングで喩える……。

*2:18歳未満もしくは性的表現に嫌悪感を持つ方は調べないように

*3:未来のミライ」を観てこの感想を述べたら友人にネタバレするなと怒られた。

*4:キン!キン!

*5:高校も行く人間が多い地域であれば高校まで含む

*6:記憶が多少曖昧だが、垂れ流し記事なので調べ直さない。まあきよと同じニュアンスで使う人はいなかったはず。

Sphinxでナウいjsbook使うと章題ページだけページ番号がヘッダにいく

結論

gist.github.com

preface

最近、フューチャーアーキテクト、というか多分ほぼ渋川さんから素晴らしいドキュメントが公開されました。

future-architect.github.io

これでTypeScriptにちゃんと入門しようと思って、Kidle Oasis にPDF入れて読んでいたんですが、目次タイトルや章題ページだけ、なんかページ番号の位置が違うしフォントも違う?

原因

SphinxでreStructuredTextから生成されているので、原因特定が比較的容易でした。ちゃんと触ってたの4、5年前だけど。

章題ページだけヘッダを取るくらいならデザインかな、という感じだけどページ番号の位置は大抵は揃えてなんぼなのでSphinxというかLaTeXのどっかでpagestyleが上書きされているのかな、と あたりをつけて調べることに。 sphinxmanual は現在のデフォではjsbookをロードして拡張してるっぽいので、jsbookの chapter を見ると、\plainifnotempty なるものが呼ばれてるので、まあコレだろうということで、 どうにかする方法を考えます。jsclassesも最近使ってなかったし、使ってたときは中身読んでなかったのでこういう不都合がでたのは最近かもしれないし以前からかもしれません。

修正

chapter を再定義するのが正しい気もしますが、Sphinxのベースで将来的に弄ったらそれを更に〜というのはグチャグチャになっていきそうなので、お行儀悪く \plainnotempty で定義されるページスタイルを 書き換えてみます。一応、fancyhdrがあって、chapterがあってという状態で、\plainifnotemptyが存在する場合のみ再定義するようにしたので他のクラスで使ってもパッケージのロード時間が僅かに増える程度で害はないかと思います。

chapterfoot ページスタイルを新たに用意しているのは、\thispagestyle{normal} だとヘッダも他のページと同じになってしまうのでどちらの動作が正しいか判断がつかなかったため。

使い方

Gistの方にも書きましたが。

コピーして、conf.pyの latex_additional_files でビルド時コピーできる場所に置いて設定し、

latex_elements = { 'preamble': '''
\\usepackage{sphinx-jsbook-mod}
'''}

としましょう。

コンテナでopam入れようとして失敗するときの対処

手元のUbuntuのバージョンが18.04でglibcのバージョンが2.27でSATySFi0.0.3がduneのインストールでコケるなど、 よくある事態がありますが、皆さんLXDユーザなので

「LXCのコンテナにUbuntu19.04入れたろ」

という対処を思いつくのではないでしょうか。

で、いざやろうとするとopamのソースコードからのインストールで躓いたりするわけです*1opam init 時にsandbox環境をつくって色々やろうとするときに /dev/pts がマウントできひんみたいなとこで詰まるわけですが、対処法opamのFAQに載ってるやん。 つまりこのブログ記事の必要はなし。

opam.ocaml.org

「unprivilegedなコンテナなど初回のinitのときに --diable-sandboxing つけて」 ってありますね。ハイ、解決〜。

コンテナじゃなく18.04で普通に入れたい場合でもこれでいいらしい。 qiita.com

*1:19.04ならaptで入るバージョンでも大丈夫かも

開発用備忘録[WIP]

開発用備忘録

今のモチベ

成果をジェネレイトしたい。期間的にもそれ以外の要素でも 作りたいものはフルスクラッチで書かずライブラリや他人のコードを参考にしたい。ライセンス管理ががが。

licensed

matsnow.hatenablog.com

ええのあるやん。

github.com

GitHub製のライセンスチェッカ。Ruby製かー。……メイン環境に入れないで利用できるようにできないかな。dockerディレクトリは……rubycのためですか。プロジェクトのURLをlicensedが動いてるサーバに投げたら結果が返ってくるみたいな運用したい。

本当に欲しかったもの(ポエム)

ライセンスの兼ね合い(これを使ってるからこのプロジェクトのライセンスはここから選んで、みたいな)や作るライセンスでの記載文の自動化がしたいんですよね。 やっていくしかないが、Rubyへの苦手意識をどうにかしなければ。

VPN関連備忘録[WIP]

VPN関連備忘録だったりネタメモさったり

これまでのラボライブ!

卒論が終わると卒論が進む! 不思議!

「WebRTCのDataChannelでワチャワチャやる」程度の内容で書くんだと思っていたら、 ほとんど書けない言語からバグバグ常態のEmscriptenでwasmコンパイルしてほとんど書けない言語のインタプリタ作ることになって爆発したのは何年前だったっけ……

別の学生が次の年にやって普通にやりきっていったのを眺めているうちに何もかもに置いていかれたのんな……。 wasmも、WebRTCも、HTTP/3も……。

DataChannel ではバイト列が送れるので何でも送れる*1。何でも送ろうということで ボスはプログラムをRPCで送りたがり、私はVPNを作りたがった。 古、VPNUDPでやってきたりした訳だし

「やりたい」と私が酒の席で言うと、ボスは

「WebRTCの必要ないよね」

と言った。誰だってそーいう。おれだってそーいう。まあモチベを伝えていなかったのが悪くて、WebRTCシグナリングサーバ使うじゃん、 これ便乗できたら専用シグナリングサーバ立てなくてもランデブーポイントにしてグローバルIPVPNサーバ要らんやん、とくだを巻く私。

「本番通信もWebRTCでやらなくてもいいよね(意訳)。IPv6普及すればローカルとかグローバルも……」

あっハイ。

眠いのでとりあえず走り書き。 あるいは技術書展6用ネタにするか……?

微妙に卒業研究に関わったやつ

https://www.researchgate.net/publication/261266327_Social_VPNs_Integrating_Overlay_and_Social_Networks_for_Seamless_P2P_Networking

あと、Social SoftEther VPN。まあ、OSNを使って友人間でのVPNの接続をやりやすくしようぜって研究ですね。いや、この説明はFAKEですが。

今回のゼミで教えてもらったやつ

Tinc VPN

www.tinc-vpn.org

www.itmedia.co.jp

事前にVPN-IPを設定、共有しておく必要があるものの、簡単に2者間でVPNが構築できます。増えてもいいけど。

ZeroTier

www.zerotier.com

ここでのサーバはランデブーポイントの意味合いが強い気がします。オープンソースでクライアント、サーバがありますがZeroTier社がサーバを提供しているので サーバを立てなくても使える、と。 zerotierのサーバに乗っかる場合同じネットワーク100台までは無料。 オープンソース版引っぱってきて自分で鯖立てれば制限無し。 100台超えるなら管理考えると商用プラン検討すべきだと思いますが。

見つけたやつ

LCVPN(Light decentralized VPN)

github.com

……"C" は? アスキー文字圏特有の言葉遊びとかあるんでしょうか。

Decentralized VPN in golang.

キュンキュンする単語だけで構成された美しい説明ですね。更新止まり期間が長いですがシンプルで読みやすい。

meshbird

github.com

こっちもGolang製ですね。片側でキー作成してあとは同じキーがあれば接続が可能、と。

私、気になります!

asnokaze.hatenablog.com

tools.ietf.org

皆(デカ主語)QUICでVPNやりたいんだよな。

https://github.com/meshbird

LCVPNとか参考に、QUICでVPN先行導入したブツとか3年計画(足りなそうだけど、その頃には皆やっているから私がやらなくてもよさそう)くらいで やっていく。かも。でもシグナリングはどうにかして普及プロダクトに乗っかりたいんだよな。眠い。

*1:何でもは多分嘘です。でもファイル共有サービスなどは既にある。