SEO 的に重要なキーワードが前の方にあった方がいいらしいので「【日記】」というのは後ろにもってきてみる。
今日は久しぶり通勤時に冬の土砂降りで、家を出て2分で靴とジーンズがズブズブ。もうこれはどうしようもないレベル。やはり会社に靴と靴下置いておいた方が生産性に寄与する気がする。
あと昼に Plack Handbook を一読。今まで読んでいなかったのでモグリだった。チーム内の持ち回りのプチ勉強会で CGI・PSGI とかの話を担当する予定なんだけれど、Plack の部分はこれ読んでねで終わりな気がする。
あと技術交流的な LT 、交流がメインならトーク + 懇親会に一工夫なにかできないかなと考えたり。トークの後の懇親会でエンジニア同士交流ご自由だけでなくて、何か強制的にグルーピングしちゃうような。とか、名刺交換じゃなくてその場で強制友人申請大会にするとか。自分自身、社交型エンジニアじゃないのでそういう仕組みがあると出会いがあっていいなあと。
Emacs の howm 上で書いたノートなどをさくっと共有したい時に、わざわざ Wiki 上や IRC 上や Google ドライブ上に転記したり更新したりするのが面倒なので、そのまま見られるようにしたいなと。
この間 howm で書く時のフォーマットを Markdown にしたので、howm-directory をそのまま Plack::App::Directory::Markdown で見られるように設定してみた。
完全じゃないけれど今のところこんな感じ。
(setq howm-file-name-format "%Y/%m/%Y-%m-%d-%H%M%S.md") (setq howm-view-title-header "#") (setq howm-view-title-regexp (format "^\\(%s|=\\)\\( +\\(.*\\)\\|\\)$" (regexp-quote howm-view-title-header))) (setq howm-view-title-regexp-pos 3) (setq howm-view-title-regexp-grep (format "^(%s|=) +" (regexp-quote howm-view-title-header)))
非公開用 howm-directory と公開用 howm-directory は
の通り下記のように設定。
(defun my-howm-set-directory (dir &optional keyfile) `(lambda () (interactive) ;; kill current keyword buffer first to avoid the error ;; "howm-get-buffer-for-file: Buffer name ` *howm-keys:*' is in use" (kill-buffer (howm-keyword-buffer)) (setq howm-directory ,dir) (when ,keyfile (setq howm-keyword-file ,keyfile)) (setq howm-menu-next-expiry-time (current-time)) (message "%s" ,dir))) (defun my-howm-switch-directory (dir &optional keyfile) (funcall (my-howm-set-directory dir keyfile)) (howm-menu)) (global-set-key "\C-c,1" (my-howm-set-directory "~/var/howm/" "~/.howm1-keys")) (global-set-key "\C-c,2" (my-howm-set-directory "~/srv/howm/" "~/.howm2-keys"))
cpanm でインストール。簡単に起動するなら付属の pad-markdown.pl で。
#!/bin/sh PAD_MARKDOWN=$HOME/local/perl5/perlbrew/perls/perl-5.18.2/bin/pad-markdown.pl ROOT=$HOME/srv/howm PORT=9119 $PAD_MARKDOWN --root=$ROOT --encoding=utf8 --title='howm' --port=$PORT &
これで後は C-c,2 C-c,c で howm ノートを作って保存すれば http://HOST_NAME:9119/2014/03/2014-03-17-231015.md ですぐ見られるようになる。あるいは ~/srv/howm/ 以下に適当に .md ファイルを作ってもよい。適当に楽ちん。
欲を言うと検索できるようにしたりページ間リンクを簡単に張れるようにしたりとかしたいなあと思うのだけれど、そのまま進むと(フォーマットこそ違えど)この nDiki の DiKicker と同じ機能になってくるので、今はそこまでしなくてもいいかな。その時に他人にシェアしたいのはピンポイントで1ページだけがほとんどだし、自分自身は howm 上で検索できるし。
こう考えてみると「Emacs でプレーンテキスト」で「書いて保存すれば(あるいはそしてリモートに同期すれば) 明示的な変換作業しないで勝手に公開」されて、書く場所は「年月別ディレクトリ」とか「デイリーなノートとは別のページが作れる」とか「検索も grep レベルできる」とか、まあ結局自分が欲しいものは昔から変わらないなあ。
マインドマップで頭を整理するのに久しぶりに iPad 2 を持ち出した。今まで使ったマインドマップソフトの中では iThoughts / iThoughts HD が一番。iPad は今のところこのアプリと YouTube (と FaceTime とチェインクロニクル)のために外せないデバイスである(逆にいうとこれ以外ではそれほど使い道がない)。
iThoughts でマインドマップ書いてて保存・同期したら、すぐ Web ブラウザで見られる/見てもらえるように
という流れを作っておいてあって便利。iThoughts は保存時に PNG ファイルと Markdown ファイル両方自動的に出力するようにできる。なので Dropbox で同期したディレクトリを Plack::App::Directory::Markdown で見られるようにしておけば、そのまま PNG ファイルで見たり他の Markdown ファイルにインラインで埋め込んだり、iThoughts 自身が吐いた Markdown ファイルを HTML 形式で見たりできる。
最近ノートやちょっとしたドキュメントは Markdown で書いて、Plack::App::Directory::Markdown (記事) (に手を入れて grep 検索や recent リストを表示できるようにした) Markdown ビューアで参照したり、関係者に見せたりしている。
重宝しているんだけれど、内部で使っている Text::Markdown Perl モジュールは、テーブルや GitHub Flavored Markdown にある fenced code blocks (``` で挟むやつ) が使えないのでちょっと不便になってきた。
Text::Markdown::Discount Perl モジュールはこの辺の拡張が使えるので、こちらに切り替えることにした。
このモジュールは discount というC言語書かれた Marrkdown 処理コードを使うもので、Text-Markdown-Discount 内に同梱されている。
そのままインストールすると fenced code blocks が有効になっていないので以下のようにしてインストールする。
$ tar zxvf Text-Markdown-Discount-0.11.tar.gz $ cd Text-Markdown-Discount-0.11 ここで Makefile.PL 中の qq{( cd $extdir; CC='cc -fPIC' sh configure.sh; make )\n} を qq{( cd $extdir; CC='cc -fPIC' sh configure.sh --with-fenced-code; make )\n} に変更する。 $ cpanm .
で Text::Markdown::markdown() のかわりに Text::Markdown::Discount::markdown() を使うようにすれば OK。
なお自動リンクをしたい時には
my $html = Text::Markdown::Discount::markdown($markdown_text, Text::Markdown::Discount::MKD_AUTOLINK);
のようにオプションを指定してあげる。
Plack::App::Directory::Markdown をベースにちょっと手を入れた Markdown ビューアを使っている(記事)んだけれど、閲覧要認証なシチュエーションが出てきた。
自分のみ閲覧のものは builder で Plack::Middleware::Auth::Digest を enable にして Digest 認証をかけ、htdigest コマンドでパスワード管理とかで済ませているのだけれど、複数人に閲覧してもらうのにこれは嫌だ。人のパスワード管理はしたくない。
OAuth で Google アカウントとかの認証を使うというのもあるけれどキーとか面倒くさいので、せっかくだし mixi OpenID を使うことにした。Perl モジュールは Net::OpenID::Consumer::Lite を使用。
とりあえずやっつけで以下のような感じ。いきなり mixi OpenID 認証させるしエラー・キャンセル処理もほとんどないし、call の中にネジこんだりしてあるので、まだまだダメダメだけれどとりあえず認証はできた。後で整理する。
$app = builder { enable 'Session', store => 'File'; $app; };
my $session = $env->{'psgix.session'}; my $request = Plack::Request->new($env); unless ($session->{openid}) { unless ($request->parameters->{'openid.mode'}) { my $check_url = Net::OpenID::Consumer::Lite->check_url( 'https://mixi.jp/openid_server.pl', $request->uri); return [302, ['Location' => $check_url], []]; } return Net::OpenID::Consumer::Lite->handle_server_response( $request->parameters => ( not_openid => sub { return [503, [], []]; }, setup_required => sub { my $setup_url = shift; return [302, ['Location' => $setup_url], []]; }, cancelled => sub { return [403, [], []]; }, verified => sub { my $vident = shift; my $identity = $vident->{identity}; # %member に閲覧 OK の OpenID を入れてある。 if (exists $member{$identity}) { $session->{openid} = $identity; return [302, ['Location' => $vident->{return_to}], []]; } else { return [403, [], []]; } }, error => sub { my $err = shift; return [503, [], []]; }, ) ); } # 以下は認証済みの場合の処理を書く。
[ Naney と mixi ]
昨年末に引き続き2014年を日記まとめとして月毎にふりかえり(去年の2013年日記まとめ)。
年初からフリック入力再チャレンジを始めた。これは今年無事マスター。たしかに日本語入力についてはフリック入力が楽なので覚えて損は無いと思う。両親指の付け根が痛くなってスマートフォンが使えない体になってしまうかと思った時もあったのだけれど、これはどうも掃除の時に指を酷使したのが原因だったんじゃないかなということで、ほどなくして治った。
また、正月にデータカードダス アイカツ! を初プレイしたところから、アイカツ! 活動が始まった。家ではプリキュアからアイカツ!にトレンドが移った1年。今年後半からプリパラが始まっているのだけれど果たしてどうなるのかな。
遊びといえば今年から花札もやり始めた。「マンガで覚える 図解 花札の基本」という本も買ってトライ。主にこいこいをやっていた。最初の頃は結構遊んでいたけれど最近はちょっと下火。この年末年始は百人一首が流行っているところ。
ガンダムフロント東京のガンダムも今年初めてみた。結構しっかり作りこまれた印象だった。
タスク管理ツールは今年は Toodledo を復活。公式 Android アプリも出たことで今は Toodledo 1本でタスク管理できている。9月に Toodledo Gold にアップグレードしてアウトライン機能も使ってみているけれども、こちらはおまけレベルかな。Gold だとタスクのノートを永続的に残せるので年に1回やるようなプロジェクトについては過去の知見を生かしていくようにするつもり。
今年出会って良かった製品の1つが「万能Jrくん」。キッチンシンクと、風呂の鏡と握りバーがピカピカになった。もうちょっと安いと嬉しいんだけどな。買う時は何個かまとめて買ってる。
FaceTime 用に Plantronics M55 Bluetooth ヘッドセットを購入。初 Bluetooth ヘッドセット。当初はプライベートの FaceTime で使っていたけれど最近は Skype ミーティングの時に使っている。相手の声が他に漏れずにクリアに聞こえるし持っておくと便利なことがわかった。今だと Plantronics M90 Bluetooth ヘッドセット が後継モデルらしい。
2月からは東京オフィスにエンジニアが転勤してきたので馬肉を食べるなど。一緒にエヴァンゲリオンネタで盛り上がったりしつつ開発している。
第2日曜日にはアイカツ! オフィシャルバインダーを初入手。一時的にオフィシャルバインダーが入手困難な時期で結構確保にやきもきした。
1日から不正ログイン対応で休日出社。また3月20日の内定者アルバイト氏の懇親をかねた飲み会の最中にも発生して、それぞれ別々の場所で飲んでいた部署の人達と LINE グループや IRC などで連絡をしつつ対応したり、その後会社に戻ったりとバタバタしたりしたのも良い思い出ではある。
その日はついでに会社から家まで歩いて帰ってみた。今年はそのあと歩く会に2回参加したりと長距離歩く機会のある年でもあったな。
しかしまあ今年は不正ログインが非常に多い年だった。対策は進んでいるんだけれど、来年はどうなるのかな。
あと3月中旬ぐらいから howm + Markdown + Plack でのビューアー環境を構築し始めた。ちょっとしたコードだけれど、Emacs で書けるし個人的にはかなり重宝している。 Confluence めんどい。
Emacs といえば Org Capture も3月から使い始めたのだけれど、こちらは Slack に座を奪われた。今はぼっちつぶやきは Slack にしている。 その Slack を最初に試しはじめたのもこの3月なんだけれど、今は欠かせないツールになってきている。 IRC 時代に比べて便利になった。
3月から積極的にmixi日記も書くようになった。11月20日から「みんなの日記」というのも追加されオープンな記事も書けるようになったのでいろいろ活用できるようになった感じ。
歩く会に初参加。今回は「都電荒川線沿線」。道中楽しいし、達成感もあるしこれはいい会だ。11月には「渋谷から横浜みなとみらい21まで」歩いた。30km ぐらいがこの会のひとつの目安距離だということがわかった。
4月16日で転職から丸3年経過。いい感じに仕事楽しい。
切腹最中も今年初めて食べることができた。切腹沙汰になったら身代わりになってもらおう。
ついに SKK を止めることにして Google 日本語入力を使い始めた。いや実際には Emacs 上ではまだ SKK を使っていて、思ったより両刀使いできているなと。SKK の辞書登録に慣れてしまうとその点だけ他の IM が不便でしょうがない。
ゴールデンウィークは浅草へ。ほぼ「亀十のどら焼」を食べに行った感じだ。今度はもう少し空いている時に行っていろいろ回ろう。それとNHKスタジオパークにも行ったな。予想以上にコンテンツが充実しているので良いスポット。
仕事面ではゴールデンウィーク明けにチームに新卒エンジニアが配属された。今元気に戦力となってくれていて頼もしい。あ、今から Emacs に乗り替えてもいいんですよ。
今年買ったカメラは、防水・防塵・耐衝撃デジカメ FinePix XP70。東京ディズニーシーや箱根小湧園ユネッサンなどで重宝した。やはり防水デジカメは1台あると便利だな。一度修理に出したけれど気に入っているので愛用している。
今年の健歩大会は東京ディズニーシー。初めての TDS。東京ディズニーランドより居心地が良いね。来年はまた東京ディズニーランドが良いかな。
IDC大塚家具銀座本店で買ったキッチンキャビネットが多分今年一番のお買い物。
いつぶりだろうというぐらいの朝顔の栽培をすることになった。クタッとした状態でやってきた朝顔の復活力には感動した。
例年1人で行っていた渋谷区ふれあい植物センターのホタルの夕べに、今年は家族で行ってみたのだけれど思いのほか長蛇の列だったのでたじろいだ。来年は違うところで見たいな。
そういえばマンボウが流行ったのもこの時期。
引き続き不正ログインはいろいろあって NHK おはよう日本にちょろっと出た。パスワードの使い回しはやめましょう。
多分15年以上ぶりの屋外プール。みんなペロペロしていてびっくりした。
あと会社で「日本人じゃないと思ってました。」って言われた。年末の部署紹介の動画でも良くわかってらっしゃる方が本名じゃなくて NANEY ってスーパーをつけてくれたので、引き続き「誰」感が演出できて嬉しい。
会社のデスクトップ PC が故障してリプレース。最近は仕事ではローカルホスト上にはデータをほとんど置かなくなった。
東京モノレール車両基地見学会があって初めて車両基地に入った。モノレール乗車体験などができて夏休みの良い思い出になった。見学会がある時は1度は行ってみると良いと思う。
あと、8月はヱヴァンゲリヲン新劇場版の DVD を貸していただいたのでエヴァンゲリオンについてプチブーム到来。新劇場版はきちんと観たことが無かったので今回が初。
8月下旬は YAPC::Asia Tokyo 2014。今年は Go・Docker あたりの学びと刺激を得ることができた。Go と Haskell はやっておきたいプログラミング言語。
2014年9月12日から14日の2泊3日で箱根旅行。旅行という形での箱根は多分1995年3月28日29日の時以来なので、19年半ぶり!
関東ITソフトウェア 健康保険組合の保養施設で評判の良い「トスラブ箱根和奏林」の抽選がようやく当たったので嬉しくて、もう準備やら旅行やら帰ってきてからのふりかえりやらで9月は終了。
日本科学未来館の企画展「トイレ? 行っトイレ!~ボクらのうんちと地球のみらい」に行って「うんちのにおい」を嗅いできた。すべり台は楽しかったけれども、期待するほどではなかった。
10月8日は皆既月食だったのだけれど、雲がかかっててほとんど見られず。そのかわりフレアスタックを見ることができた。東京の赤い空の原因の1つはこれか。
仙台初出張では「仙台の人は牛タン食べないし牛タン食べるならねぎし」と教えてもらったのが収穫。
あとはお出掛け的にはふらっと日本郵船氷川丸に乗船しに行ってきた。やっぱり横浜いいわー。
Emacs で anything から helm へ移行したのだけれど、あいかわらず補完がしっくりきていない。
11月は4月に初参加した歩く会に2度目の参加。「渋谷から横浜みなとみらい21まで」歩いた。川崎駅経由で約29km。来年は遠征したい。
あと、11月末からぼっち Slack チームでチャネルをタイムライン型ノートにしはじめた。これはとても便利。日記のネタなんかをいったん突っ込んでおいたりするのに使っている。今年は Slack きたなぁ。
楽園追放が良かった。周囲でも映画館に観にいった率が高く人気だった。今年は映画館で観た映画は結局この1本だけだったな。
年末はレゴを買ったり「エルマーのぼうけん」を買ったりしてエンジョイ。
まとめは後半時間が尽きたというか力尽きたというか。今年のキーワード「アイカツ!」「不正ログイン」「Slack」「歩く会」「箱根旅行」あたりだったかな。
去年「プライベートや仕事での出来事や思いなど、Web 日記には載せないことをどう書き留めていくか最近考えている」と書いて意識できたせいか、今年は非公開な日記やマイミク向けの日記も書けたのは良かったなと思っている。
なにはともあれ今年一年も良い年でした。ありがとうございました。
ノート/メモははライティングアプリ Ulysses を使い Markdown で書いていて、検索・閲覧・整理も Ulysses で基本済ませています。ただいくつかの良く参照するファイルはブックマークやハイパーリンクから Web ブラウザでさっと表示させたかったりします。なので以前は Plack::App::Directory::Markdown を使った自作 PSGI アプリケーションを使ってました。
が、セットアップしたり保守したりという手間を今とれないなと思って、 Markdown ビューアを探してみたところ MkDocs が良さそうなので試してみました。
MacBook Pro に Homebrew で入れて動かしてみます。
$brew install MkDocs $mkdir -p ~/var/mkdocs $cd ~/var/mkdocs $mkdocs new local $cd local $mkdocs serve
で Web サーバが立ち上がるので http://127.0.0.1:8000/ にアクセスすると ~/var/mkdocs/local/docs/index.md の内容を HTML に変換したものが表示されます。お手軽! 設定変更は ~/var/mkdocs/local/mkdocs.yml できます。
あとは docs の下に Markdown ファイルを置いておけば Web ブラウザで閲覧できます。docs の下に既存の Markdown ファイルノートディレクトリへシンボリックリンクを作ればそれらも辿って表示されます。
試していてブラウザでのレンダリング表示が重いなと思って HTML ソースを見たら同じ JavaScript ファイルを何十回も読み込んでいて何か変ぽかったので Homebrew のをやめて pip で入れなおしました。どちらも現在 mkdocs 0.17.2 ですが pip で入れた方は問題なかったのでこちらを使うことにします。
$brew uninstall mkdocs $brew install python $pip2 install mkdocs
MkDown は静的サイトジェネレータで、プレビューサーバは補助的機能ですがまずまず使えそうです。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。
#nNote タグがついている記事は他の記事に比べて、より断片的・未整理・不完全なちょっとしたノートです。まだ結論に至っていない考えなども含まれます。頻繁/大幅に更新したり削除したりすることがあります。
ナレッジベースアプリケーション Obsidian で書いているノートの一部を notes.naney.org で 公開しています。
※内容は個人的見解であり所属組織とは関係ありません。