棚からパルチャギ

日々の雑記、ニュース拾いとか

2013. 07. 18

シュレディンガーの進捗報告

「実装は完了しました。動作確認はこれからです。」

みたいな進捗報告をよく聞く。
箱の中には、実装が完了したコードと動作確認のされていないコードが重なりあって存在しているのだろう。

フタを開けるまで動いているのかは分からない、と書くとよくある言い回しになる。

テストを書け。

MS Word文書もvimで開きたい
$ brew install antiword $ vi ~/.vimrc autocmd BufReadPre *.doc set readonly autocmd BufReadPost *.doc silent %!/usr/local/bin/antiword -m UTF-8.txt '%'
参考: View and diff MS Word files

2013. 05. 17

tern_for_vim導入の話

tern.vimでvimでjavascriptの補完など(vim advent calendar2012, 155日目) - kozo2's blog

リポジトリ独立してから、vimプラグインにternのパッケージ定義が追加されて個別にternをインストールする必要はなくなったので、少し古い感じもする。 自分が導入した時のメモ書きを残しておくなど。

i. インストール

NeoBundleを使っている場合、.vimrcに以下のような記述を追加して :NeoBundleInstall すればよい。 そうでない場合には、~/.vim/bundle/tern_for_vim で npm install を手動実行する。

NeoBundle 'marijnh/tern_for_vim', { \ 'build': { \ 'others': 'npm install' \}}

tern_for_vimはjavascriptのftpluginとして読み込まれて、内部で(勝手に) omnifunc=tern#Complete が実行される。 neocomplcacheでomni補完が無効化されていなければ、特に気にすることなく使えるはず。 サーバは裏で勝手に起動してくれる。

悲しいことに補完周りはjscomplete-vimと競合してしまう。 jscomplete-vimは高速で実用的な補完を実現してくれるので、まだ捨て難い気がしている。

ii. 設定ファイル

.tern-project というファイルを生成すると、そのファイルを含む階層以下でternの設定を変更することができる。 設定の詳細については公式のドキュメントに記載があるけれど、だいたい下記のような感じ。

{ "libs": [ "browser", "ecma5", "jquery" ], "loadEagerly": [ "importantfile.js" ], "plugins": { "node": {}, "requirejs": { "baseURL": "./", "paths": {} } } }

libsは追加で読み込む補完定義を指定する。 デフォルトではbrowser/ecma5/jqueryが用意されていて、browserは console.log() だったりブラウザで拡張されているオブジェクトなどへの対応、ecma5はECMAScript5で追加された要素、jqueryは $("#hoge").click() なんかでも補完できるようになる。

プロジェクトルート(.tern-projectの配置されたディレクトリ)下にlibsディレクトリを作成して、自分で用意した補完定義を読みこませることもできる。

loadEagerlyは指定したファイルを事前に読み込み済みにしておいてくれるようだけど、補完が効くようになるわけでもなく挙動はいまいち分かっていない。。

pluginsはnodeとrequirejsが用意されている。 いずれも指定すると、読み込み先モジュールの補完が効くようになってこれは非常に便利だった。素敵。 libs同様にpluginsディレクトリ下に自前のプラグインを設置できる。

2013. 05. 03

リモート接続先のscreenエスケープキーを変更する

dotfilesはgithubに置いていて結構いろいろな環境で使いまわしているのだけど、ローカル環境とリモートの接続先で同じ設定のscreenが動作している場合なんかに、 エスケープキーがローカルに取られて困ることがあるので、ssh接続時にはリモート側の設定を変更するようにした。

.zshrcにssh接続かどうかの判定を追加して、起動時オプション -e でキーを変更。 Emacs使っていないので普段はデフォルトのCtrl+aのままだけど、リモート接続時にはCtrl+tを使うように設定してる。 ssh接続かどうかの判定は、環境変数$SSH_CONNECTIONに値があるかどうかを見ればよい。

if [ -z "${SSH_CONNECTION}" ] ; then [ ${STY} ] || screen -D -RR -U else setopt nonomatch; screen -UxRR -e^Tt fi

一度変更すると既存のscreenセッションにも影響してしまうので、本当はdetach時に元に戻したりできるとよいなあ。とか。 接続先はだいたいサーバ用途で端末ない想定だし、おとなしくscreenrcを個別に用意するのが普通に簡単という気もする。

2013. 03. 04

MacとWindowsで共有ディレクトリパスをよしなにする

仕事用PCをMacに変えてもらってから、IRCやメールのやり取りで共有ディレクトリパスの扱いに気を使うようになった。 開発者以外はほぼWindowsユーザだし、基本的にはWindowsで扱いやすいパス記述でうまく回せるとよいと思うわけで、 AutomatorでそのあたりをよしなにするServiceを作成した。

最近のAutomatorでは標準でRubyでもスクリプト書けるみたいなので、文字列操作とか簡単で便利。 新規作成でServiceを選択して、ActionsからRun Shell Scriptを選択。Shellを/usr/bin/rubyに設定してスクリプトを書く。 どちらも Service receives seleted text in any application としておく。

選択範囲の共有ディレクトリパス文字列を、Windows/Macそれぞれのパスに変換して出力してくれるようなの。 Output replaces selected text にチェックを入れておく。

選択範囲のディレクトリパス文字列を、形式関係なくFinderで開くようなの。

どちらもテキスト文字列を選択した状態で、右クリックメニュー->Servicesで呼び出せる。 Automatorで保存した名前がそのまま表示されるので、日本語で分かりやすい項目にしたい場合は「共有ディレクトリパスを変換する」とかにしておくとよいのかも。

Finderから共有ディレクトリパスの取得+変換/複製まで同時に処理したいけれど、やり方よく分からない。

2013. 02. 26

BEATがブレーキランプ点きっぱなしになった話

去年の話だけれど、BEATのブレーキランプが消えなくなったのでホンダのお店に持って行ったら、 ブレーキペダルの裏側でランプスイッチを押しているストッパーが破損しているということだったので、 修理部品を発注してもらった。 交換部品が届くまでは、バッテリー上がらないようにブレーキランプのカプラーを外しておいた。

2日後くらいに部品届いて取り付けてくれるのかと思ったら、整備書のコピーをくれて簡単だから自分でやるといいよという話。 取り付けのコツも教えてくれて、大変良心的なお店であるのだなあ。

 

買ったのは、突起のついたプラスチックパーツ。130円。

工場長に教えてもらった手順通りに作業して、だいたい15分くらいだった。

  • ブレーキペダルの付け根にある、ブレーキランプのカプラーを外す
  • ブレーキランプのスイッチを六角レンチで緩めて外す
    • 元々の位置がどの辺だったか覚えておくと、戻した後のブレーキ位置調整が楽になる
  • ブレーキペダルを押しながらペダルストッパーをペダルの穴にあてがってペダルを戻す
    • エンジンかけながら作業するとブースターが効いてブレーキペダルが軽くなるので幸福
    • ペダルストッパーは力で押し込まないで、ブレーキスイッチ付け直して圧力で自然にはまるのを任せるのが吉とのこと
  • ブレーキスイッチを戻してカプラーはめたら、ブレーキ点灯を確認してペダル位置調整したら完了

パーツ壊れたら普通ブレーキランプつかなくなると思っていたけれど、消灯だと不具合に気付きにくいので 壊れたときは点灯しっぱなしになるよう作られているみたい。 仕組みはアナログだったけど、よくできてる。


  [ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 ]