私が歌川です

@utgwkk が書いている

パート分けされた歌詞からパート情報を削除するワンライナー

sed -re 's/(.+)(.)/\1/g' atapon.txt

こういう文字列置換,初めは慣れなくて perl -mutf8 -nle 's/(.+)(.)/\1/g' -p atapon.txt とかやっちゃうけど,これぐらいならわざわざ Perl を使うまでもなくて,sed で十分という気づきを得られる.

-r を付けると拡張正規表現が有効になり,これで我々にとって直感的な後方参照が有効になる.

以下は試行錯誤の過程です.

エディタの自動保存プラグインを有効にしてコードを書いている

エディタ(vim)の自動保存プラグインを有効にしてコードを書いている.今は 907th/vim-auto-save を使っている.

github.com

自動保存は賛否両論あると思うけど,git 管理下にあるなら git が自動的に diff をとってくれるし,vim なら gitgutter とかでどこが変化したかも見れるのでそんなに困らないと思う. ディスク書き込みがネックになるような環境にはいないので,どんどん保存させている.

ただ git 管理下にないファイルまで自動でどんどん保存されるのは怖いという思いもあるので,.vimrc をこのようにしている.fugitive が用意している関数でうまくやっている*1

" auto save
augroup autosave
  autocmd!
  autocmd BufEnter * let g:auto_save = (exists("*fugitive#head")&&""!=fugitive#head())
augroup END

バッファに入ったら自動保存するかどうかを切り替えるという作戦.見た感じだとうまく動いてそう.

ところで,みなさんの .vimrc が気になっているところです.

ログを残す文化

ログを残す文化は大事だけど,残し方をもっと気をつける必要があると日々思っている.

  • 情報が散らばってしまわないか?
    • DropboxEvernotewikiiPhone のメモアプリ,Slack,IRC……と散らばってしまうと,あとで探すのが面倒
    • 一箇所に集めておく
  • 後から参照しやすいか?
    • 所構わず書いてるとそのうち参照不可能になる
    • 人間の記憶は思ったより弱い
    • 検索機能が必要
  • 障害に強いか?
    • データ消滅して終了したらつらい
    • どこかにミラーリングされてるとよい?
  • そのメモで本当に分かるのか?
    • 自明そうなことも忘れられる
    • とにかく自明であっても全部詳細に書く
    • 引き継ぎに使うこともできるかもしれない
    • 解釈の余地が出てくるとキリがない
    • 少なくとも,いつ,誰が書いた,の情報が残っているとよい

『知的生産の技術』に書いてあった気がするし,書いてなかった気もしていて,大昔に読んだので忘れてしまった.

知的生産の技術 (岩波新書)

知的生産の技術 (岩波新書)

KMC の春合宿で Python の処理系の講座をした

追記: dict の実装で出てくる図が間違っています*1.あとで修正します.

スライドを差し替えました.変更点は次の2点です.

  • dictの図を開番地(オープンアドレス)法のものに訂正
  • バイトコードについて追記(2バイトで1つの命令と引数を表す旨)

先日 KMC で春合宿があり,そこで Python の処理系に関する講座をしました.

speakerdeck.com

内容

プログラミング言語を実行体系で分類すると,次の2つに分けられるのではなかろうかと思います*2

また,型付けで分類すると,次の2つに分けられます.

  • 静的型付け言語
  • 動的型付け言語

C言語コンパイラの実装に関する情報は巷に溢れており,また書籍も数多くあります. 一方で Pythonインタプリタに関する詳細な情報は,もちろんあるのですが,気にせずに使っている人が大半かと思われます*3

そこで,Python の処理系がどう実装されており,どう動いているのか,をスライドにまとめ,春合宿の講座として行いました.

要点をまとめると,

になります. バイトコードコンパイルして仮想機械で実行する,という体系は,最近のプログラミング言語の処理系に多いようです(Java, C#, Ruby など). しかしながら,インタプリタ言語は今でもコードを逐次実行しており,そのために遅いのではないか,と思っている方が少なくないと思います. そんな人にも資料を読んでもらい,実際の実行体型に肉薄してもらえればと思います*4

反省とか

*1:Python の dict では開番地(オープンアドレス)法が使われています http://dsas.blog.klab.org/archives/python-dict-internal.html

*2:どちらにも標準で対応している言語もあります.

*3:それはC言語でも同じ???

*4:遅い原因は他にありそう.

健康振り返り

薬を服用したり塗ったりしている.頭皮以外はだいぶ落ち着いている様子.

睡眠

Fitbit のおかげで可視化できるようになって便利.

utgwkk.hateblo.jp

いまのところは健康的な時間に寝て起きることに成功している.

野菜350g

毎日「1日分の野菜」を飲んでいる.手軽で便利.

伊藤園 1日分の野菜 (紙パック) 200ml×24本

伊藤園 1日分の野菜 (紙パック) 200ml×24本

のど

今日は*1のどが痛くて痰が絡むことがしばしばあった.心配なので風邪薬を飲んだ.

*1:じつは昨日三宮に着いたあたりから.

YAPC::Kansai 2017 OSAKA 行った #yapckansai

下書きに残ってた.けっこう記憶から消えつつある.聞いたセッションの感想を書く.

メールフォームからメールを送る近代的な方法

/usr/sbin/sendmail とか SMTP とかの話だった.最近だと AWS もメール送信 API とかやってるらしい.

ビットコインを5分で試す

ブロックチェーンとは何なのか知れたのでよかった.Docker 出てきてモダンな感じがした.

2017年春のPerl

最近の Perl 事情あまり知らなかったけど,Perl6 だと演算子がめちゃくちゃ自由に作れるのすごい.

Webアプリケーションのキャッシュ戦略とそのパターン

ISUCON でやろうとしてたことだなーと思いながら聞いてた.キャッシュする前の本質的な改善ができるようになりたい.

GUEST: 木本 裕紀

あまり覚えていない.Perl 製の WAF の話だったと思う.

GUEST: スペシャルセッション

dankogai さんのライブコーディング.めちゃくちゃでかつてない感じになっていた.cgi-lib.pl はもう動かないと聞いて残念.

TRUNCATE user;に如何にして立ち向かうか

オペミスによる DB データ消失の対策みたいな話だったと思う.

はてなシステムの考古学

はてなは Perl の企業という印象が強いけど,ある時点での決断によるものだったのだと分かった.最近はいろいろ使ってるみたいだ.

LT

Acme モジュールの話がよかった.

Keynote: 竹迫 良範

60分あってけっこう長かったけど,マインスイーパを自動化するところと,USB の自動再生でマウスを止めるところが一番よかった.

総合

どの話も(ちゃんと聞いてたのは)面白かったと思う.Perl の会だと思って来ているけど,Perl 関係ない話もどんどん出てきて身近な感じがした.休憩時間なしでセッション詰めるスケジュールはけっこう大変そうな感じがした.