続きを読むそういやソニーの電子ペーパー買いました、A4でかいですね、、、、 pic.twitter.com/QAoaB7cnKp
— 光のインターネットの闇 (@no_maddo) March 24, 2019
インターネットの闇を支える技術
別にインターネットの闇の話ではなくて私が最近導入して便利だったものをつらつら書きます。
QuickTab
Google Chromeの拡張。Tabの切り替えをC-qで実現する。
これでタブの位置関係とかどのウインドウにあるかとかをいちいちグラフィカルに見ずに住むようになった。
chrome.google.com
余談ですがこれを入れると操作感がEmacsのバッファだな、という気持ちになります。
Authy
二段階認証アプリ。Google Authenticatorなどと比較して複数の端末でセキュリティ情報を共有できるのが選んだポイント。
旅行のときに自分の携帯電話を落としてしまい、電話番号に来る2段階認証が全くできなくなって
にログインできずアバーとなった経験からこれにしました。
電話番号認証ほんま社会的に弱い。
もちろん複数端末に機密情報を入れるのは紛失したときにそれが漏れ出るリスクを上げているわけですが、 モバイル端末紛失からの自分の情報にアクセスする権限を失うほうが影響がでかい気がします。
Mendeley
https://www.mendeley.com/library/
PDFとか読んだ文献管理が無理になってきたのでPDF系は全部これに押し込むようになりました。
Google Chromeのプラグインをいれると今見ているPDFをスムーズにインポートできます。
JIS配列セパレートキーボード
そういえば2台目です pic.twitter.com/OcIU6P2QRk
— 光のインターネットの闇 (@no_maddo) March 12, 2019
結構癖のあるセパレートキーボード。JISではこれしかセパレートないと思います。
デフォルトの設定だと使いにくい(十字キーが打てない、Fnキーも十字キーも右側にあるってどうなんだ)。
私は
- 左側の使わない無変換キーにFnをわりあてて
- 左上の半角全角/Escを入れ替えて、FnなしではEscを入力するように
くらいのカスタマイズで使ってます。ホームポジションのまま十字キーが使えて便利。
あんまレイヤーを切り替えてガシガシみたいな使い方はしてないです。
ヘルシオホットクック
予約調理が便利。 冷凍カット野菜 + カット済みの鶏肉を放り込んで限界筑前煮を量産することができる。
私、魔女のキキです。こっちは自動鍋がかき混ぜ過ぎた筑前煮 pic.twitter.com/IMNEFBeCNE
— 光のインターネットの闇 (@no_maddo) June 4, 2018
Type-C USBとあれそれつなぐやつ
Switchように買いました。これのおかげで専用のドックがなくてもHDMIで画面接続できてかつ イーサネットで有線接続できます。
横長ディスプレイ
こういうの。
横長ディスプレイは作業領域が本当に広くて、こういうのが1つあればデュアルモニターとかにしなくていいと思う。 おすすめは更に業務用にUSBハブになるやつ。
耳栓+イヤーマフ
ドラッグストアで売っているようなシリコン耳栓とAmazonで適当に買ったイヤーマフが 仕事に集中するのに便利です。 すごくひとりごとの多い人の近くで働くときにも安心。
隣でゲームの話とかしてても全部遮ってくれるようになるよ。 でも何か話しているというところまでは消音できないです。
Dアニメストアのモバイルアプリ
電車通勤中ずっとアニメ見とる。 東京電車内の治安が最悪でアニメでも見てないとやってられない。
私の家の共同アンテナは地上波の番組を一切受信できなくなったので主なアニメ見る手段です。
SATYSFi雑感
最近文章のためにずっと書いてる。 感触としてはかなり現状これでやっていくのはチャレンジングだと感じる。
Emacsのメジャーモードほしい
現状gfnさんが配布されているsatysfi.elがある
実装を見ると define-generic-mode
で作られているシンプルなモードで、
キーワードハイライトが動作する感じ。
自動インデントとかかっこいい目の機能はない(と思う)。
私はこれ以外にカッコの対応が取れないときびしいので smartparen-mode
を使っている。
<>の対応を取るためには、以下の設定を書いておくと良い感じがする。
(sp-local-pair 'fundamental-mode "<" ">")
書くときに困ること
Syntax Error or Lexer Error. 各括弧のによって何が起きるのかSATYSFi Bookを読んで把握したほうが良い。 プログラミング言語としてのSATYSFiはかなり特殊な言語だと思う。
文脈に依存したlexer
何を書くとLegalであるかというのは現在のコンテキストによって変わる。 そのコンテキストはどういう時に変化するかというと、各括弧によって変化する。
ソースコードのコメントにそのことが書いてある。
(* * The SATySFi lexer is stateful; the transitions are: * | to \ from |program|block |inline|active | math | * |-----------|-------|------|------|-------|--------| * | program | ( ) | | | ( ) | !( ) | * | | (| |) | | | (| |) | !(| |) | * | | [ ] | | | [ ] | ![ ] | * | block | '< > | < > | < > | < | !< > | * | inline | { } | { } | { } | { | !{ } | * | active | | +x ; | \x ; | | | * | | | #x ; | #x ; | | | * | math | ${ } | | ${ } | | { } | * * Note that the active-block and active-inline transitions are one-way. *)
トップレベルはprogram stateから始まる。 demo.satyを順に見ていくと、
- document関数の関数適用
toplevelはdocument型の値を返す式を書く (|
によってprogramを受理する状態に遷移(変わらないが)。StackにStateをPushする{
によってinline stateに遷移、それをStack Push
inline stateのときには地の文を書くことが出来る- \SATySFiのようなものはコマンド。コマンドはどういう時にセミコロンが必要なのか悩んだけど基本必要、コマンドの引数に{}があるときには書かない(書いたらエラー)
}
でinline stateを抜ける
- ………
'<
はprogram stateからblock stateに遷移する- block stateは段落の塊みたいなinline-block型を持つ式を書く
+p
は段落を作るためのコマンド{
でinline modeに遷移
.........
みたいなメンタルモデルを持たないといけない。 基本的には上の表の括弧で決まるから、わからなくなったら直前の開き括弧を探しに行くと良い気がする。
状態Lexerウウーみたいな気持ちになったけど、本質的に組版で地の文を書きつつプログラマブルな要素を書きたいとなると何でも書ける地の文の世界とプログラムの世界を状態で分けるのが自然な気がしてきた。
Syntax ErrorとかLexer Errorが出たらなんかこの状態でできないことしとらんかということを真っ先に考えたほうが良さそう。
// 今の理解なので間違ってたら教えてください。。。。まだ3週間くらいしか書いてないので
雑感
最近Latexを書きつつSATYSFiを書いていると頭が混乱してきます。
段落を書くのが +p { ... }
で書くのと、line break 2つで切れ目と見て段落を形成するのはどっちが楽だろう。。。。。
LatexとSATISFIはソフトウエアとしての歴史が違うのでツールチェインで 比較してもしょうがないのだけどやはり色々辛いです。 けどもDSLのフロントエンド実装のことを無限に考えられて楽しいです。 Syntax Error, Lexer Errorのところを何とかする方法考えて遊んでいます。。
Emacsで自動インデントできるのメジャーモード作りたいんだけど、SMIEとか言う奴が全くわからないでいます。。。。。
追記:
私も少しはフロントエンドのコードを書いていたからわかるんですがわかりやすいエラー出力のために言語処理系がフロントエンドを変更してクソデカ lexer or parserになっていくのを見ると、この辺を諦めてスパっと行くのも開発者の労力削減のためにやむを得ないという気持ちになります。
GCCのパーサー定義とか見ると本当に地獄で、こんなものを1人プロジェクトでメンテ出来るわけがありません。 しかしそれでは書く方が辛さがあるので、いい感じの折衷案みたいなものが見いだせると嬉しいですね。。。
プリキュア映画をみた気持ち
忘れないうちにプリキュアの映画の話を書いておく。 これを見たとき絶望感で一杯になってしまった。 www.precure-movie.com
続きを読む