株式会社はてなに入社しました
これで1年ぶり2度目の入社成功です.
明日は4年間放置されていた TODO: を潰します
— うたがわきき🔰💊 (@utgwkk) 2017年3月29日
勝ちました pic.twitter.com/FlnyxJIDcE
— うたがわきき🔰💊 (@utgwkk) 2017年3月28日
sed -re 's/(.+)(.)/\1/g' atapon.txt
こういう文字列置換,初めは慣れなくて perl -mutf8 -nle 's/(.+)(.)/\1/g' -p atapon.txt
とかやっちゃうけど,これぐらいならわざわざ Perl を使うまでもなくて,sed で十分という気づきを得られる.
-r
を付けると拡張正規表現が有効になり,これで我々にとって直感的な後方参照が有効になる.
以下は試行錯誤の過程です.
perl -mutf8 -nle '$_=~s/(.+)(.)/\1/g;print;' atapon.txt
— うたがわきき🔰💊 (@utgwkk) 2017年3月26日
perl -mutf8 -nle 's/(.+)(.)/\1/g;' -p atapon.txt まで短くできる
— うたがわきき🔰💊 (@utgwkk) 2017年3月26日
sed でよくない???
— うたがわきき🔰💊 (@utgwkk) 2017年3月26日
sed でよくない,と思ったけど,等価な置換の書き方が分からない……
— うたがわきき🔰💊 (@utgwkk) 2017年3月26日
sed -re 's/(.+)(.)/\1/g' atapon.txt でよかった
— うたがわきき🔰💊 (@utgwkk) 2017年3月26日
エディタ(vim)の自動保存プラグインを有効にしてコードを書いている.今は 907th/vim-auto-save を使っている.
自動保存は賛否両論あると思うけど,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 が気になっているところです.
ログを残す文化は大事だけど,残し方をもっと気をつける必要があると日々思っている.
『知的生産の技術』に書いてあった気がするし,書いてなかった気もしていて,大昔に読んだので忘れてしまった.
追記: dict の実装で出てくる図が間違っています*1.あとで修正します.
スライドを差し替えました.変更点は次の2点です.
先日 KMC で春合宿があり,そこで Python の処理系に関する講座をしました.
プログラミング言語を実行体系で分類すると,次の2つに分けられるのではなかろうかと思います*2.
また,型付けで分類すると,次の2つに分けられます.
C言語のコンパイラの実装に関する情報は巷に溢れており,また書籍も数多くあります. 一方で Python のインタプリタに関する詳細な情報は,もちろんあるのですが,気にせずに使っている人が大半かと思われます*3.
そこで,Python の処理系がどう実装されており,どう動いているのか,をスライドにまとめ,春合宿の講座として行いました.
要点をまとめると,
になります. バイトコードにコンパイルして仮想機械で実行する,という体系は,最近のプログラミング言語の処理系に多いようです(Java, C#, Ruby など). しかしながら,インタプリタ言語は今でもコードを逐次実行しており,そのために遅いのではないか,と思っている方が少なくないと思います. そんな人にも資料を読んでもらい,実際の実行体型に肉薄してもらえればと思います*4.