以前妻からまわってきた「天窓のある家」(ISBN4-408-53445-5)を読み始める。
過去の 3月1日より。
他のプロジェクトでも使用していて「WiKicker でも使いたいのだけれど、これ以上依存するモジュールを増やすのものぁ」というものの一つであった Log::Log4perl をやはり採用する事に。
Perl 5.005_03 でもギリギリOKのようである。
Debugログおよび、アクセスログ等もすべてこの上にのせていくつもり。
定期検診の後半。歯のクリーニング。 ビッグワンガムについてくるガムのような風味がした。 前回「あるかも」と言われていた虫歯は結局無しということで、一安心。
通っている歯医者では PMTC(プロフェッショナル・メカニカル・トゥース・クリーニング)を始めたとのことでリーフレットを渡された。 保険適用外だけれど、より綺麗にステイン除去などができるらしい。
リナメルというのがちょっと気になる。
次回4カ月後。
情報カードベースでソフトウェアかんばん(ストーリーカード + タスクカード)を作っている開発プロジェクトがあるのだが作ったっきりあまり活用されていないので、今回は試験的に WiKicker による Wiki 上でかんばんを作ることにした。
まだ荒削りだけれども、まずはとにかく以下のルールで始めてみる。
基本的には 1カード毎に WikiPage を作るようにする。 ページ名はストーリーカードを表す SC と 状態 (TODO / DOING / DONE) を含む名前にする。
タスク名も同様に作る。
カードの内容は XP で扱っている内容で。 新規作成が楽なようにテンプレートページを作っておき、これをコピーして作れるようにしておく。
TODO -> DOING -> DONE という状態変化にあわせて、WikiPage 名を変更してページを移動させる。
例: TC/TODO/名前をつけて保存メニューを追加 | V TC/DOING/名前をつけて保存メニューを追加 | V TC/DONE/名前をつけて保存メニューを追加
SC/TODO、SC/DOING、SC/DONE、TC/TODO、TC/DOING、TC/DONE ページを作りそれぞれに、子階層の一覧を表示させる (WiKicker の [[index:child]] を使用)。
タスクカードからは「SC/<ストーリー名>」という名前で、ストーリーカードへリンクさせる。
WiKicker では「SC/<ストーリー名>」というページない場合、「SC/*/<ストーリー名>」というページを探してリンクしてくれる。この機能のおかげで、状態にあわせてページ名を変更してもリンクはそのままで追従してくれる。
担当者が割り当てられて実行中のタスクカードには [[DOING:担当者名]] という文字列を記述しておく。
「DOING:担当者名」で検索することで、各担当者が何を実行中なのかリストアップすることができる。また DOING: を「DOING:担当者名」を検索する Wiki 自身への InterWiki として定義しておくことで、この記述自体を検索結果へのリンクとすることができる。
「が」や「は」など頻出する文字の WikiPage を作ってしまった場合、それらに対して自動リンクが働いてしまうと大変なことになるので、WiKicker では2文字以上のみ対象とするようにしていた。
しかし nDiki を書いていて、1文字のキーワードも自動リンクしたいという風に思えてきていた。 誰でも書ける Wiki の場合には危険で制約が必要だけれど、全てのキーワードが著者のコントロール化にある DiKicker では1文字のキーワードに対して自動リンクが働いても問題ないだろう。
ということで自動リンクが働く最低文字列長をプロパティで設定できるようにした。 2004年ぐらいからほとんど手をつけていなかった、AutomaticLink 処理モジュールを久しぶりにメンテナンス。 もともと2文字以上を前提でコーディングしてあったので、trie 部分などが1文字できちんと動くか確認した上で、文字列長チェックを可変に修正。 WiKicker、DiKicker 両方で設定で変えられるようにした。
またあわせて、英単語の部分文字列に対して自動リンクしないようにする処理も改善。 今までは `downloaded' に対して `loaded' はマッチしないようにしていたものの、'download' はマッチしてしまっていた。 このあたりを改善。
数日前から Dropbox の Web サイトにログインすると
Earn extra space - You can get up to 3GB of extra space free just for referring your friends to Dropbox. Learn more.
というメッセージが表示されるようになっている。 紹介 URL を通して Dropbox に新規登録して使い始めると、紹介した人・された人両方に 250MB ずつボーナスとして容量を増やしてくれるとのことだ。 紹介する側は最大12人 3GB までプラスされる(有料プランユーザなら 500MB ずつ、最大6GB まで)。 フリーアカウントの 2GB だとちょっともの足りなくなりそうだけれど、有料プランの 50GB はいらないと思っていたのでこれは願ってもない。
ということで競争が激しくなる前に、それとなく Twitter で URL つきで呟いてみた。 最初が 2月26日 15:03。 それから2月28日までに4回で、合計5回。 2月28日頃には、他にもリンク付き紹介メッセージを流す人が増えてきていた。 そして3月1日には 3GB GET してめでたく 5GB に。
あわせて Web サイトにも URL を貼ってみたんだけれど、登録してもらった時刻を見ると Twitter 告知からがほとんどではないかと思われる。 12人のうち1人は他の手段による紹介であるから、まあだいたい3日強の間の5回のメッセージで10人前後登録してもらったことになる。
1メッセージでコンバージョン2件って結構すごいよ、コレ。
オンラインストレージサービスという「インターネットヘビユーザ向きな内容」で「無料」で「特典がつく」という内容だったとはいえ、既に Dropbox を使っている follower も多いと考えられるので、このコンバージョン数は驚き。
ちなみにこの時点での follower 数は 870人台。 Twitter-er としては平凡な数だ。 もちろん既に非アクティブになったアカウントや spam アカウントや bot などが相応数いるはずだ。
いちおうコンバージョン他のために考慮した点は以下。
Twitter の影響力恐るべし。
1月19日にサインアップ、2月2日チェックインし始めた。Twitter の follow リストから foursquare ユーザを探してまとめてフレンド申請する機能があって、当たり前の用に最初利用。その後いただいたフレンド申請を受けてきた。 しかし1カ月近く使ってみて違和感が出始めてきた。
フレンド自体の問題ではなくて、サービスの性格や機能によるところが大きいかな。 Twitter みたい増やしても面白さや自分にとっての情報量が増えるわけではないことを実感。
ということで最初は首都圏以外の人を外しはじめたんだけれど、最終的にはがっつり外して絞ってしまった。
私的 foursquare フレンドの利用としては
ぐらいがいいのかなと。 Twitter とは違って、幅広く見ても見られてもハッピーじゃないなという結論。
やっぱり Perl スクリプトは perltidy をかけておかないと気持ち悪いよね。 Emacs からは perltidy を呼べるように設定済み。
基本 Perl スクリプトを書く時は Emacs なのだが、Windows 上でさくっと書く時もある。最近は Windows 上のテキストエディタは Notepad++ を使っているので、同様に Notepad++ からも呼べるように設定しておこう。
以下 Notepad++ v5.8.7 (UNICODE)、[全般設定] で言語に日本語を指定してある状態での設定手順。Perl は Strawberry Perl で cpanm が入った状態。
以下のコマンドで perltidy をインストールする。
cpanm Perl::Tidy
Notepad++ v5.8.7 に 外部コマンドを実行する NppExec プラグインが入っていなかったのでインストール。
NppExec_041_dll_Unicode.zip をダウンロードしてきて展開し c:\Program Files\Notepad++\plugins に NppExec.dll をコピーする。
Notepad++ を起動し以下の設定を行う。途中 Notepad を再起動するように指定されたら指示に従って起動しなおす。
c:\strawberry\perl\bin\wperl.exe -x -S perltidy --quiet --preserve-line-endings --backup-and-modify-in-place "$(FULL_CURRENT_PATH)"
これで [マクロ]-[perltidy] と指定できるようになる。
お気に入りの .perltidyrc (perltidy.ini でも OK)を
perltidy -dpro
で表示されるディレクトリのどこかに置くか、置き場所を PERLTIDY 環境変数に設定しておくか、コマンドラインオプションに -pro=filename という形で指定しておく。
適当に Perl スクリプトファイルを開いて [マクロ]-[perltidy] を実行。ウィンドウの下部に Console 出力が表示される。 処理が終わったら [ファイル]-[開き直す]をすると整形された Perl スクリプトが表示される。
上記の手順を Notepad++ マクロ化しようとしたんだけれど、これは失敗。
perltidy の設定ファイル .perltidyrc は以前に載せた後 --vertical-tightness-closing を 2 に変えたあといじってなかった。 こんな感じ。
# Basic Options --maximum-line-length=78 # default is 80 --indent-columns=2 # (!= perlstyle) default is 4 --preserve-line-endings # Code Indentation Control --line-up-parentheses # --nooutdent-long-lines # default is --outdent-long-lines # Whitespace Control --paren-tightness=2 # default is 1 --square-bracket-tightness=2 # default is 1 --brace-tightness=2 # default is 1 --nospace-for-semicolon # default is --space-for-semicolon # Line Break Control --vertical-tightness=2 # default is 0 --vertical-tightness-closing=2 # default is 0 --want-break-before="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x=" # default is ". << >> -> && ||" # HTML Options -nnn --nohtml-entities
その後新しいオプションが増えているのでチェックしなくては。
訳がちょっと固くて読みにくいところがあるけれど、もしかしたら原文自体がそういう書きっぷりなのかもしれない。
フレッドという実在する郵便配達員の仕事ぶりに感銘した著者が、仕事からさらにはその生き方について掘り下げて述べた本である。
人と人との関係を大切に。他人のために絶えず価値を生みだそう。そういった精神が、好感のあるサービスを生み出す。邦題は「仕事で……」とあるが、フレッド・ファクターは仕事に限定されず社会で生きていく上で大切なことであるといえよう。
他愛の精神を持つフレッドが完全主義者の側面を持っているという点が、そういえば自分にはとてもひっかかる点であった。この完全主義は、宗教的な気高さからくるのかもしれない。
本質としてはやはり
「一番大事なことは、他者に対する愛である。」 -- フレッドが教えてくれた 仕事でいちばん大切なこと p.150
ということなのであろう。
[ 読書ノート ]
Windows 上で作成・更新したファイルをサクッと Linux 上に反映させるのに、やっぱり Unison File Synchronizer を使うことにした。Windows 上の Unison から SSH 経由で Linux 上と同期させる構成ってしたことなかったな。ちょっと調べつつ設定。
Unison-2.40.102.zip をダウンロードしてきて C:\Uers\Naney\local\Unison-2.40.102 として展開。テキスト版(CLI 版)を使いやすいように unison.exe という名前に変える。
SSH 経由の接続については PuTTY についている Plink を使うことにした。OpenSSH とはちょっと違うので下記のようにバッチファイル C:\Uers\Naney\local\Unison-2.40.102\plinkunison.bat を作る。
@c:\Users\Naney\local\PuTTY\plink.exe -l naney -ssh remote.example.com unison -server
同期先のホスト remote.example.com にアカウント naney で SSH 接続して unison をサーバとして起動するというバッチファイル。
次に Unison 同期設定を書いたプロファイルファイル c:\Users\Naney\.unison\test.prf を作る(テスト用)。内容は以下。
root = c:\Users\Naney\unisontest root = ssh://naney@remote.example.com/home/naney/unisontest sshcmd=c:\Users\Naney\local\Unison-2.40.102\plinkunison.bat times = true fastcheck = yes
双方の unisontest ディレクトリを同期する設定になってる。
最新の OCaml (Unison のビルドに必要)と Unison を取ってくる。
wget http://caml.inria.fr/pub/distrib/ocaml-4.00/ocaml-4.00.1.tar.gz wget http://www.seas.upenn.edu/~bcpierce/unison//download/releases/stable/unison-2.40.102.tar.gz
あとは以前の インストール手順 と同じ流れでインストール。
Windows のコマンドプロンプトから
unison test
で同期できることを確認。
あとは実際の同期したいディレクトリのペアにあったプロファイルファイルを作っていけば OK。
ちょっとした Web サーバが欲しくなったんだけれど Apache 面倒だなと思って、初めて nginx 触ってみた。
tarball ダウンロードして適当に configure、make install して conf で port 番号変えて起動。ドキュメントほとんど読む必要無くて10分かからなかった。
wget http://nginx.org/download/nginx-1.2.7.tar.gz tar zxvf nginx-1.2.7.tar.gz cd nginx-1.2.7 ./configure --prefix=$HOME/local/nginx-1.2.7 make make install emacs $HOME/local/nginx-1.2.7/conf/nginx.conf # http {} の中の server {} の中の listen を 80 から 8000 に変更。 ~/local/nginx-1.2.7/sbin/nginx
で Web ブラウザで 8000 にアクセス。「Welcome to nginx!」ページの表示を確認。
お手軽。
お祭り IRC チャネルを家でチェックするのに PC に張りついているのもアレだ。 Xperia GX にインストールしてある Android IRC + ConnectBot でもチェックできるのだけれどこちらはバッテリ的に常時つけておくのもアレ。ということで iPod touch 5th にも IRC クライアントを入れておいて、こちらでモニタしておこうかなと。
IRC クライアントアプリは Twitter と Facebook で LimeChat を薦められたのでこちらをチョイス。Tiarra に接続した時の送られる過去ログもきちんとさばけた。
iOS だと IRC クライアントアプリとは別に SSH アプリを実行し続けておくのが難しいようなので、iOS デバイス上で SSH port forwarding するのはやめておいて、 PC 側で SSH port forwarding をゲートウェイとして立ち上げておいてそこを経由することにした。
PC 側では以下のような設定を ~/.ssh/config に追加。GatewayPorts を yes にしておくことで port forwarding を開いた PC 以外の端末からもポートにつなげられるようになる。
Host ircgateway HostName <踏み台 SSH サーバ名> User <踏み台 SSH ユーザ名> Port <踏み台 SSH ポート番号> LocalForward 6668 <踏み台の向こうの IRC サーバ名>:6667 GatewayPorts yes
PC 上で ssh -F -N ircgateway とすれば踏み台のむこうの IRC サーバ(あるいは Tiarra)にトンネルができるので、 <PC のアドレス>:6668 に iPod touch 5th 上の LimeChat から接続すれば OK。
タスク管理ツールを Toodledo から Todoist に乗り換え中。Todoist はサブプロジェクト・サブタスクがそれぞれ4階層まで作れるので、プロジェクトを分解していきやすくて良い。ということでまずは GTD で言うところのプロジェクトを順次 Todoist へ移していった。
ルーチンワークを入れる前の状態のタスク管理ツールは、タスクを消すと達成感があって気持ちが良い。ルーチンワークを入れていくとどうしても「消化」している感が強くなるので混ぜるのがちょっと惜しい。
なので、「開始日」や「due on」などを指定できて繰り返しタスクに強い Toodledo にルーチンワーク系を残して、 Todoist には実現・達成系だけにした方が良いかなとも思ったりもした。けど、複数にやることが分かれているのはやはり落ちつかないので結局 Todoist へ繰り返しタスクも移しちゃうことにした。
(画像は http://doist.io/press/ より)
いつでも持ち歩けることを重視して、1.0型センサーをもつコンパクトデジタルカメラの中で最小クラスの PowerShot G9 X Mark II をチョイスしたので、やはりケースもかさばらないものにしたい。そう思って探したところ“GRAPH GEAR”デジタルカメラケース[Lサイズ] DGBK-059 シリーズを見つけました。
PowerShot G9 X Mark II を入れてみたところ縦横サイズはまだ若干余裕がある感じ。奥行き方向は伸縮素材が少しのびながらファスナーが閉まるぐらいのフィット感です。G9 X Mark II にはちょうどいい感じでした。
ファスナー当たりを防ぐよう内側をきちんと盛り上がらせてあって安心して収納できそうです。
ケースをしたまま首から下げられるように穴が開いていますがここは仕上げがちょっとチープ。ケースをしたまま首から下げることは個人的には無いので、自分としてはいらない工夫点です。
メーカーのサイトでは販売終了(カラーによっては在庫限定)となっているので、必要なら早めに買っておいた方が良さそうです。
渋谷ヒカリエ ShinQs での「にぽぽ」期間限定出店は昨日まででした。結局ぷーとんが気になってしかたなかったので、最終日に買いにいってしまいました。
けっこう作りが雑なんですが、まあかわいいので許せます。
RICOH GR III 注文済みなので各種アクセサリを準備中。ハンドストラップの方が軽快だけれど、自分の場合バッグから出す一手間が面倒で撮らずじまいになることがあるのでネックストラップの方が合っているのだと思う。
PowerShot G9 X Mark II で便利に使っているハクバ テーパードストラップ15も候補だけれど、せっかく GR だし最初は RICOH のを使ってみようかな。 本革製の GS-3 が GR ロゴ入りで満足度高そうではあるけれど、ナイロンので十分かなということで ST-2 にした。昨日注文 & 到着。超細身のテーパードストラップ15よりは数ミリ幅があるけれど、かさばるのを気にするほどでは無さそう。RICOH ロゴは薄い紫で落ち着いた感じであとは余計な色もなく、 GR にマッチする落ち着いた雰囲気のストラップだ。
[ 製品レポート ]
MacBook Pro (Retina, 15-inch, Mid 2014) から MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports) にリプレース。
今はデータをほぼ Google ドライブや Dropbox に置いているので、やるのは macOS の設定と Mac アプリケーションのインストール & 設定がほとんど。今は自分でビルドしていれているものもほとんど無いので楽だ。
Mac アプリケーションは先に入れた方が捗るもの (Google Chrome・Google 日本語入力・Dropbox・Google ドライブや Karabiner-Eements・Alfred など)があるので、入れたい順序のグラフを Graphviz で書きながら進めていった。
プリンタと Chrome 拡張機能の個別設定以外は概ね移行完了。数日に分けてやる感じかなと思っていたけれど、夕方に仕事の気分切り替え的に始めたら一気にやってしまった。
あ Emacs まだ入れてないなー。
$ cd ~/local $ git clone https://github.com/tpope/rumember.git $ GEM_HOME=$HOME/local/rumember gem install launchy
~/.rtm.yml は前のものをコピー。
妻がパスワード管理に困り始めていたのでパスワード管理ツールを勧めたところ、使いたいとのこと。今日使い方を説明しながら環境を整えてみた。選択したのは自分も長年使っている KeePass ファミリで、 MacBook Pro では KeePassXC を、スマートフォンでは Keepass2Android を使ってもらうことにした。
使い勝手を考えると 1Password や Bitwarden などが良いのかもしれないけれど、クラウド型のものは自分に何かあったあとに使い続けるのが難しくなる可能性がある(アカウント管理や支払いついて理解して対応するコストがかかるとか、サービス終了のリスクがあるとか)ので避けた。
パスワードデータベースファイルの同期は Google ドライブで。念の為自分の Google アカウントにも共有しておいてもらい、自分の MacBook Pro (の Time Machine) にもバックアップが取られるようにした。
自分1人だけで管理している家族にかかわるアカウントを共有したいと常々思っていた。今回妻が KeePass を使えるようになったので、家族関連パスワードデータベースファイルを作って今後共有していこうと考えている。
そうすると扱うパスワードデータベースファイルが複数になるので個別にアンロックが必要になり手間が増える。なにか便利な機能がないかなと思って調べたところ KeePassXC と Keepass2Android どちらも子データベースを自動的に開く機能が用意されていた。本家 KeePass 用プラグイン KeeAutoExec 互換機能っぽい。
メインのパスワードデータベースファイルの中に AutoOpen グループを作成しその中に「URL に子データベースのパス」「パスワードに子データベースのパスワード」をそれぞれ入力したエントリを作っておくと、そのデータベースファイルを開いた際に自動的に子データベースファイルもアンロックして開いてくれるのだ。これは便利!
今まで自分は Dropbox にパスワードデータベースファイルを置いていたけれど、これを機に Google ドライブに変更。同じストレージサービスにしておいた方がパスワードデータベースファイル間の相対パスがシンプルになるからというのがその理由。
Google ドライブなら「選択したアイテムを別のフォルダに追加 (Shift+Z)」を使って1つのフォルダにパスワードデータベースファイルを集めることができるので、全部ファイル名指定だけで済ませられて良いのだ。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。
#nNote タグがついている記事は他の記事に比べて、より断片的・未整理・不完全なちょっとしたノートです。まだ結論に至っていない考えなども含まれます。頻繁/大幅に更新したり削除したりすることがあります。 それとは別に nNote にもちょっとしたノートがあります。
※内容は個人的見解であり所属組織とは関係ありません。