自己顕示欲の開放治療所

erg, programming and something.

別名:Laughing and Grief 雑記

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

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

技術書典7で頒布した同人誌の公開

この記事は\TeX{}\LaTeX{}アドベントカレンダー2019の19日目の記事です。

adventar.org

18日は Xs (@qp_mzzt) | Twitter さんの LaTeXで目次のカスタマイズをしてみた - Qiita でした。

間に合わなかったよ……

本来であれば本日は技術書典7にて頒布した「LuaLaTeX微文書作成入門」の改稿版を公開する予定となっておりましたが、 別の某アドベントカレンダーやら様々にバタバタしておりましたところ、嘘です、忙しさにかまけて自分の書いた文書から 目を逸らし改稿が遅々として進まなかったところ、この日を迎えてしまいました。本日は頒布した内容をそのまま公開させて いただきます。

何の本だったか

  • LuaLaTeX入門本を目指すもの
  • LaTeX入門書を読んでいる前提
  • LuaLaTeX向けクラスファイルの紹介
  • フォント設定
  • tcolorboxでlistingができる
  • TikZで図以外ができるよ
  • ビルドツール紹介
  • 分割ビルドとパッケージ
  • LaTeXWebサービス紹介

既知の要訂正箇所(2019年12月19日公開版では直っていません。改稿後直る箇所です。)

では、どうぞ

https://drive.google.com/file/d/19OQTORvLstkHt82yQ5woZ4O_Bf5Zav0X/view?usp=sharing

今後の更新

リファクタリングと一通りの更新が終わったらGitHubにてソースを含めた公開を行います。その際現在の旧版はアクセスできなくなる予定です。

ついでなので、改題し新表紙になる予定です。

明日のTeXLaTeXアドベントカレンダー

20日目はえぬぬぬぬぬぬぬぬん (@enukasu) | Twitterさんです。

投稿とアドベントカレンダーに関する訂正

この記事は EWBアドベントカレンダー2019の18日目の記事です。

adventar.org

おわび

過去「EWBについて扱った書籍が1冊くらいしかない。しかもアスキー社からは出てない」旨の発言を何度かしておりましたが、訂正いたします。

www.d-sys.co.jp

www.d-sys.co.jp

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1989年に刊行されておりました書籍がEWBを扱ったものであるようです。

1989年となるとかなり素朴な1系についてのものでしょうか。積極的に探してみようと思います。

簡易マークアップテーブル記法まとめ

この記事はEWBアドベントカレンダー2019の17日目の記事ということになりました。

adventar.org

20191217 20時30追記:Textileの複雑な表を追記。Textile、はてな記法の参考ページを追加 20191217 21時追記: CAS-UB記法の表と参考ページ追加。シンプルなテーブルでそれぞれのコードから得られる表が大体同じになるようにした

Caution

対象言語は大体wikipediaの軽量マークアップ言語のページから。

テーブルヘッダ = TH テーブルデータ = TD

必ずしも記法フル対応では載せていない。 それぞれ同じ出力を得るテーブルを書くのは思った以上に面倒そうなのでやっていない。はてなのWebエディタで書き始めるんじゃなかった。

シンプルなテーブル

Markdown(PHP Extra)

  • テーブル(セル)内改行は<br>で実現
|  TH  |  TH  |
| ---- | ---- |
|  TD  |  TD  |
|  TD  |  TD  |

寄せ

| TH (left) | TH (center) | TH (right) |
| :--- | :---: | ---: |
| TD | TD | TD |
| TD | TD | TD |

AsciiDoc

  • 行頭.以後改行までキャプションタイトル
  • 2行目表示オプション、headerの他にfooterなどがある。
.An example table
[options="header"]
|=======================
|TH|TH  
|TD    |TD 
|TD    |TD 
|=======================

reST

=====  =====
   TH    TH     
=====  =====  
TD      TD  
TD      TD  
=====  =====

Textile

行見出し
|_. TH |_. TH |
| TD | TD |
列見出し
|_. TH | TD |
|_. TH | TD |
|_. TH | TD |
寄せ
|_. TH |
|=. TD(center) |
|>. TD(right) |
|<. TD(left) |

Wiki

  • 先頭行|~でその行全体がヘッダ? 派生によるかも
|~TH|TH|
|TD|TD|
|TD|TD|

Org-mode

  • ! # といった記号で属性を付与できる?
|-----+-----|
| TH | TH | 
|-----+-----|
| TD | TD |
|-----+-----|
| TD | TD |
|------+----|

Almost Free Text

#---SET-CONTROL tableparser=new
    ! TH        !
    !------------!
    ! TD ! TD ! 
    !-------------!
    ! TD ! TD !

EWB

  • ハードタブ
  • 罫線は罫線用トリガで
//table1{
//tkei
//g{TH  TH//}
//bkei
TD  TD
//tkei
TD  TD
//tkei
//}

Re:VIEW

  • ハードタブ
  • 空欄の場合は.。文字列の最初の行頭の.もこの関係で消えるので対処が要る?
//table{
TH TH
------------
TD TD
TD TD
//}

CAS-UB

|=Heading TH |=Heading TH |
|TD |TD |
|TD |TD |

setext

___________ TH  ___________ TH
              TD                TD
 ---------------  ----------------
              TD                TD  
==============  ==============

Terence's Markup Language

[
*TH* | *TH*
----
TD | TD
----
TD | TD
]

はてな記法

  • *を先頭につけるとTH化?
|*TH|*TH|
|TD|TD|
|TD|TD|

Plain2

  • 交差位置の記号は- + |どれでも同じ。
  • 基本的に罫線は表現通り
  • [[T``]]Tは、「両脇の脇線がない場合」以外は省略可能
[[T
---------------------
| TH | TH  |
============
| TD | TD |
---------------------
| TD | TD |
---------------------
]]T

KARAS

!| TH || TH
|| TD || TD
|| TD || TD

複雑なテーブル

reST

グリッドテーブル
+------------------------+------------+----------+----------+
| Header row, column 1   | Header 2   | Header 3 | Header 4 |
| (header rows optional) |            |          |          |
+========================+============+==========+==========+
| body row 1, column 1   | column 2   | column 3 | column 4 |
+------------------------+------------+----------+----------+
| body row 2             | ...        | ...      |          |
+------------------------+------------+----------+----------+

StructuredText

|---------------------------------------|
| This should give a row with colspan 3 |
|---------------------------------------|
| Col 1  |      Col 2  |       Col 3    |
|---------------------------------------|
| Col 1  |      Col 2                   |
|---------------------------------------|
| Col 1                |       Col 2    |
|---------------------------------------|

|---------------------------------------|
| Column 1   | Column 2
|---------------------------------------|
| Align Top  |         OK               |
|            |                          |
|---------------------------------------|
|            |                          |
| Align Bot  |         OK               |
|---------------------------------------|
|            |                          |
| Align Mid  |         OK               |
| Note the   | offset unequal.          |
|            |                          |
|---------------------------------------|
|Align left  |               Align Right|
|---------------------------------------|

Plain2

   ---------------------------------
   |へん|つくり||  あわせて   |
   |  |   || 漢字 | よみかた |
   |===============================|
   | 金 |   || 錫 | すず   |
   |----| 易 ||------+-----------+
   |  |   || 鯣 | するめ  |
   |  |------||------+-----------+
   | 魚 | 非 || 鯡 | にしん  |
   |  |------||------+-----------+
   |  |   || 鯰 | なまず  |
   |----| 念 ||------+-----------+
   | 手 |   || 捻 | ひねる  |
   ---------------------------------

KARAS

  • ::が水平左結合、:::が垂直上結合。
|| Cell 1 ||  ::    || Cell 2 || Cell 3
|| Cell 4 || Cell 5 ||  :::   || Cell 6
||  :::   || Cell 7 ||  :::   || Cell 8

AsciiDoc

.Multiline cells, row/col span
|====
|Date |Duration |Avg HR |Notes

|22-Aug-08 .2+^.^|10:24 | 157 |
Worked out MSHR (max sustainable
heart rate) by going hard
for this interval.

|22-Aug-08 | 152 |
Back-to-back with previous interval.

|24-Aug-08 3+^|none

|====

Textile

  • \<数字>.で数字分水平結合、/<数字>^ .で上付き、/<数字>~.で下付きの垂直結合
|{background:#ddd}. Cell with background|Normal|
|\2^. Cell spanning 2 columns|
|/2. Cell spanning 2 rows|one|
|two|
|>. Right-aligned cell|<. Left-aligned cell|

Pandocで対応記法出力させたらそれなりに統一できたのでは。

参考リンク

EWB Licenseニアリィイコール3条項BSD

この記事はEWBアドベントカレンダー2019の16日目の記事です。

adventar.org

前回のEWBライブ

binディレクトリに入ってるやつの中に実行用バイナリでないツールが結構入っていることが発覚。

EWB LICENSE

web.archive.org

Copyright (C) 1986, 1999 ASCII Corporation.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. Neither the name of the author may be used to endorse or promote products
   derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

EWBの頒布規約は大体3条項BSDになります。上のアーカイブに記載された日本語訳を掲載しますと、

【著作権表示】
Copyright (C) 1986, 1999 ASCII Corporation.
All rights reserved.

【契約条件】
改変の有無にかかわらず、本ソフトウェアのソースコード及びバイナリーコー
ド形式による再頒布及び使用は、次の契約条件の下に許諾される。
1. ソースコードの再頒布に際しては、上記の【著作権表示】、この【契約条
   件】及び次の【免責条項】の表記を、引き続き維持して明記しなければな
   らない。
2. バイナリー形式による再頒布に際しては、上記の【著作権表示】、この
   【契約条件】及び次の【免責条項】を、再頒布に際し提供する説明書及び
   その他の関連資料に改めて明記しなければならない。
3. 特別な事前の書面による許諾がない限り、本ソフトウェアから派生した製
   品を推奨又は宣伝するために、著作権者名は使用してはならない。

【免責条項】
本ソフトウェアは、著作権者により、「現状有姿のまま(そのままの形で)」
提供されるものであり、商品性又は特定目的への適合性に関する黙示的保証な
ど、明示又は黙示の保証を問わず、いかなる保証をも行うものではない。
いかなる理由によっても、また、契約責任、厳格責任又は(過失によるものを
含む)不法行為責任を問わずどのような責任の理論によっても、著作権者は、
いかなる場合も、本ソフトウェアを使用することにより発生する、あらゆる直
接損害、間接損害、偶発損害、特別損害、懲罰的損害あるいは派生的損害(代
替製品・代替サービスの調達、使用利益、データ又は収益に関する損失、営業
中断による損失など)について何らの責任も負わない。これは、本ソフトウェ
アを使用することにより、これらの損害が発生する可能性について、あらかじ
め示唆されていた場合であっても同様である。

ということで、GitHub上に上のライセンスを表示しながら配置するのはセーフのはず。

github.com

ででーん! ちょこちょこ足します。

実はEWB3.2リリースと3.3のリリースタイミングで頒布のライセンスが変わったとの履歴があるんですが、それ以前のライセンスが分からないんですね。 3条項BSD自体は1999年に登場していますし、コピーライトの表記年はEWB3の登場時の固定っぽいんですよね。

それと、よく見る最近のBSDだとクオーテーションマークが""ですが、バッククオート2つとシングルクオート2つのLaTeXでよしなにしてくれるやつになってます。

pTeXのライセンス

同じくアスキー社の開発であるp\TeX{}のライセンスを確認してみましょう。

github.com

こちらはtexjporgによって管理されている歴史資料になります。

COPYRIGHTを見ると、こちらも3条項BSDですね。表記年と著作者表記は2009年アスキー・メディアワークスになっていますが。

分かったのはツール群大体そのまま読めるスクリプトってことだけ

この記事はEWBアドベントカレンダー2019の15日目の記事です。 技術書典の当落によって残りの10日のやる気がかわりそう。

adventar.org

進捗

新しめのFreeBSDに古いパッケージを入れて動くか試すのは「失敗」です。予定通りですね。 そもそも、互換が用意されてるとはいえ32bit時代のパッケージ群を64bit用OSに入れるときは色々考えるべきですね。

収穫は一応ありまして、

EWB-Shelfといったコアなものではなく、ツール群で軽量なものはそのまま読めるシェルスクリプトPerlスクリプトであることが分かりました。

GUIを開く」とあるツールのスクリプトを開くとwishでファイルを開くのに味付けをする程度あったり、tounixPerlスクリプトだったりといった具合です。 現代化、意外と困難でもないかもしれない

バイナリ以外のツールはここに追記していく予定。

あ、GUIツールの中にはEmacsLispを呼ぶものも確認できました。XEmacsでは確かにそうなるやね。

ToDo

大人しくDVD付属のイメージから実行環境を用意します。

FreeBSDに解凍したEWBを入れた(入れたのか?)

この記事はEWBアドベントカレンダー2019の14日目の記事です。

adventar.org

これから電車移動で1時間以上吸われるのに何も進んでいないのですが。

前回FreeBSDをインストールしたので、先ずはEWBのパッケージが入ったDVDをFreeBSD側に認識させます。

VirtualBoxに認識させたディスクをマウントする

今回は雑に/mediaにぶちこみました。devの名前今回はエスパーで検討つけたんですが VirtualBox側で変更できるんですかね。何もわからん。

# mount -t cd9660 /dev/cd0 /media

で、/media/Packages/*を全部/home/ewb(作成したユーザ名)以下にmvでドーン。

これで実質インストール完了といえなくもない(いえない)。

帰りの電車でこれをなんやかんやして起動できるか試します。

GCP無料枠でZerotierVPNを立てる

この記事はWORDIANアドベントカレンダー2019の14日目の記事になります。

adventar.org

今日は自分を編集部員だと思いこんでいるので……。

TL;DR;

Google Cloud Platformには「金を払うと無料」、もといクレカ登録すると使える「無料枠」という概念があります。

この無料枠内で使える構成でVMインスタンスを立てることができ、ここにVPNサーバを立ててみようという話です。

OpenVPNなどについては先例があり、

sorapoo.hatenablog.com

のように構築しています。

今回は一般に馴染みが薄いであろう、「ZeroTierVPN」をここに立ててみましょう。

ZeroTierVPN

www.zerotier.com

ZeroTier VPNは独自のアドレス空間によって管理する、様々なプラットフォームに対応したVPNソフトウェアとサーバです。 アカウントを作成したら無料で100個までアカウントにマシンを割り当てられ、簡単にVPNを構築できるのが特徴です。ただし、自前サーバでアカウント管理部分(controller)までやろうとするとその限りでない。

手順(GCP

上のリンク先などに既にある通りなので、要約すると

  1. アカウント登録
  2. カード登録
  3. マシンをf1-micro
  4. ディスクを30GBに拡張
  5. CentOS8で作成

で、作ったらIPの固定をしてssh鍵の登録をしたら完了です。

Zerotier-One

本来なら「myzerotier.comにアカウントを登録して〜」で終了しますが、 controllerを自分の手で管理したいとなるとそうはいきません。 自分で管理する気がなければそもそもGCP使う必要もないです。ローカルとリモートにzerotier-oneを入れてドキュメントをなぞりましょう。

建てたVMに入り、gitを入れ、

git cloneして、Ubuntuでいうところの build-essential などを入れます。

ところで、f1-microのメモリは600MBそこらです。ちょっと大きくなったC++プログラムなんかはビルドがメモリ不足で失敗します。

令和の時代にswapファイル作るのが有効な案件に出会うとは思ってもみませんでした。 なお、後程「ローカルの仮想環境でビルドして持ち込めばよかったのでは」と突っこまれるなど。

controllerのビルドにはそれ以外に、postgresとそのdev、RabbitMQ用にErlangとRabbitMQを入れる必要があります。sqlite3で代用できる?ようですが、更に複雑化しそうだったのでスルー。

ビルドが終わったら./zerotier-one -d で起動すると、controllerにアクセスできるようになります。CurlでGETとPOSTをすると簡単に値の確認ができますが、 通常/var/lib/zerotier-one以下に生えるはずのauthtoken.secretの値をクエリに?auth= で入れる必要があるので確認しておきましょう。

このとき、

curl -X GET "ZT-Auth" http://localhost:9993/controller?auth=xxxxxxxxxxx

のように叩きます。

github.com

この辺りは追記予定。

クライアント(local machine)

実はsnapで入るよzerotier-one。サーバ(controller)側のサポートはCentOS7なんで (サポートするとはいっていない)、VM上で態々ビルドしたワケですが。 注意点としては、snapで入れると、ZEROTIER_HOMEのパスが通常のビルドと違う場所になるので、snapのvar内の該当箇所にexportしてやる必要があります。 Ubuntu18.04だと /var/snap/zerotier-one/common ですね。

さあ、zerotier-one.zerotier-one -dで起動を、しないんだなこれが/snap/zerotier-one/current/command-zerotier-one.wrapperにある PATH の場所にzerotier-oneの実行ファイルが無かったのでln -sして/snap/zerotier-one/current/usr/zerotier-one`に繋ぎます。

挫折

あの、サーバの zerotier-oneをローカルホスト以外に割り当てて起動する方法が分からないのですが!

年明けなど、落ち着いた時期に更新したい。