Apple Magic Keyboard は多くの環境で有線 USB キーボードとしても使える

いつも MacBook Pro を使っている身としては、全く同じキーボード配列を自宅の Windows 機で使えたら嬉しい。ついでに、たとえば Raspberry Pi の初期設定をするときとかにも使えるのだとしたら家から古いキーボードを一掃できてさらに嬉しい。ネットを見ても、Magic Keyboard がたとえばブート時の操作に使えるのかどうかなどの情報がなかったので人柱になってみたところ、とりあえずいろいろな環境において標準の USB ドライバで使うことができるらしいことが判明した。以下、使えた機種を列挙する。

  • X201s + Windows7 で使用可能。
  • Raspberry Pi 1 Model B+ + Raspbian 8.0 で使用可能。

また、Bluetooth を用いて、

いつも使っている MacBook Pro と全く同じキー配列&かなり近い打鍵感で、iOS にも Win にも Linux にも特別なドライバをインストールせずに接続可能というのは、かなり便利である。HHKB を手放す準備ができた。HHKB, 矢印はないわ Delete の位置は狂ってるわで他との併用には適さなかったからなぁ。

(もちろん、使えると思ったのに使えなかった、みたいな場合でも僕は責任を取りませんのであしからず。)

Fabric の Python 3.x 対応について調べてみた

2015-03-29 時点での情報です。超絶意訳なので正確には原典をあたってください。

まとめ

Fabric 1.x から (Fabric 2.x + Invoke 1.x) の体制に近々移行する予定であり、その過程で Python 3.x 対応はする予定。

参考にした URL

  • Installing - Fabric
    • Fabric の開発では、print のかわりに print() を使ったりと、Python 3.x 対応に向かっている。依存しているモジュールが対応したら、「間違いなく (will definitely)」Python 3.x に移行する。
      • Fabric の依存先は setuptools, Paramiko(とその依存先)で、これらは現在すべて Python 3.x に対応している。
  • Python 3.3 support
    • Fabric 2.x 系で Python 3.x 対応をする、とのメインメンテナの言葉。
  • Split out non-ssh-dependent features into separate lib
    • たとえローカルでしか Fabric を使わないとしても ssh と PyCrypto を導入しなければならない現状はクソだから、Invoke ってプロジェクトを新しく作って ssh 以外のタスク実行はそっちにすべて任せたい(Fabric 2.x + Invoke 1.x でひとまとまりという構成で動くようにしたい)らしい。
    • Invoke がいまだに alpha なのは、Fabric 2 を作る過程で Fabric 1 から機能を移行しているのだが、その際に同時に Invoke のデザインも決定しているから。
    • 2015-01-29 現在、Fabric 2 はメインメンテナが private に作っている。alpha を PyCon 2015 (2015-04-08) に間に合わせたいっぽい。
  • Invoke
    • 新しいタスク実行モジュールとなるべき Invoke は既に Python 3.2+ に対応している。

おすすめの SCP-JP まとめ

以前 The SCP Foundation オススメ記事まとめ を書いたら、「SCP-JP にも面白い SCP が眠っているよ!」とのご意見をいただいたので、読んで好きなものをピックアップしてみました!

SCP についての説明は以前の記事を見ていただくとして、SCP-JP について念のために説明しておくと、これは SCP の日本版を作ろうという試みです(簡潔)。

日本でないとできないネタとかもあって、本家とは一味違った面白さがあります。

ということでオススメの紹介です!

Vim で Markdown 形式のハイパーリンクを Web サイトのタイトルも含め自動生成する

あけましておめでとうございます。今年もよろしくお願いいたします。

Vim に関する記事を読んでいるときに、Emmet.vim を使えば簡単なコマンドで Markdown 形式のリンクが作成でき、しかもタイトルまで自動で取得して入力してくれる、ということを知りました。しかしそのためだけに Emmet.vim をインストールするのはいささかオーバーキルの感があったので、自分が既に利用している Vim script を複数使って同様の機能を実装しました。

具体的な挙動は、カーソル下の URL を取得し(vim-textobj-user, vim-textobj-url に依存)、その URL から HTML の <title> タグを取得し(webapi-vim に依存)、括弧をいい感じに整える(vim-surround に依存)というものです。他人の褌で相撲をとっている感が満々ですが、まぁ車輪の再発明をしなくて済んでいるということにしておきましょう。

以下がその Vim script です。ご活用いただければ幸いです。ツッコミなども歓迎いたします。

Create Markdown hyperlink automatically. Usage: t ...

KainokiKaede Advent Calendar 2014 を振り返る

この記事は KainokiKaede Advent Calendar 2014 25日目の記事です(嘘から出たまこと)

最後は自分語りかよって言われるかもしれないけど振り返りもしたかったしまぁ多少はね?

なんでこんな誰も喜ばないようなアドベントカレンダーを始めたかというと、自分の最近の興味の方向性がわかるかなと思ったからです。でも結局雑食性であることがわかっただけっぽいですね。まぁとりあえず振り返ってみましょう。

KainokiKaede Advent Calendar 2014 記事リスト

Date Title
2014-12-25 KainokiKaede Advent Calendar 2014 を振り返る
2014-12-24 Cubase で TouchOSC を使う
2014-12-23 Markdown で書いた文書を LaTeX でリアルタイムでタイプセット(Pandoc と latexmk を利用)
2014-12-22 (MacBook Air + Traktor) + (iPad + TouchOSC) でモバイルワイヤレス DJ 行為
2014-12-21 国際キャッシュカードを作ろう
2014-12-20 静かな待降節ソング
2014-12-19 Git 初心者が詰まったところをメモ
2014-12-18 Google Calendar で複数のカレンダーにまたがる予定をウィジェットとして公開する
2014-12-17 Mac で Adobe Reader を用いて右綴じの本を見開きで表示する
2014-12-16 夜にメールを書いて朝に送る(Gmail を特定時刻に自動で送信する)
2014-12-15 Vim で Evernote を編集するために vim-geeknote を導入する
2014-12-14 Mac OS X Mavericks に Ureka1.4.1 を導入
2014-12-13 TrueCrypt の後継プロジェクトまとめ
2014-12-12 さくらの VPS でスワップが大量発生した原因と対処
2014-12-11 Xcode 6.1.1 に XVim を導入する
2014-12-10 さくらの VPS を使う - 7. CakePHP
2014-12-09 CentOS ログ・ステータスファイルまとめ
2014-12-08 Firefox で、マウスのみを用いて「ブックマークメニュー」にブックマークを登録。
2014-12-07 CentOS サーバー sensors 温度 知る
2014-12-06 Xcode の便利な機能(主にショートカットキー)
2014-12-05 日頃の感謝をこめて寄付したいウェブサイトなど7つ+α!
2014-12-04 flickr にブログ用のスクリーンショットをアップロードする
2014-12-03 冬コミの寒さ対策
2014-12-02 SONY RX100 の設定項目
2014-12-01 project.pbxproj のコンフリクトを解決するために mergepbx を利用する

ぱっとみた感じ Xcode 関係が3つぐらいあって最近 iOS 向けアプリの開発をしているさまが伺えます。

あと Gmail, Google CalendarGoogle のサービスについての記事が2つあって Google に心を売り渡していることが伺えます。

サーバー関係も4つぐらいあってアマチュア鯖管としての苦難が垣間見られます。

Vim 関係が2つしかないのは意外ですがまぁ個人的にはほとんど弄りつくしてしまったからなぁ。でも vim-geeknote は便利ですし(この記事もそれで書いている) XVim 無しで Xcode を使う気にはもうなれません。このへんのツールについてちゃんと調べて導入したという点はこの Advent Calendar をやってよかったと思っている点です。

DTM 関係がかろうじて2つあるかないかなのは問題な気がする。今年は去年よりもうちょっと楽曲制作できるはずだったのだが……。

結句

正直4日目あたりからすでに辛かったのですが書き溜めもけっこうあったせいでどうにか完走できてよかったです。来年はたぶんやりません。毎日ブログをいくつも書いている人は凄いなぁと思いました(小並感)それではみなさん良いお年を。

Cubase で TouchOSC を使う

この記事は KainokiKaede Advent Calendar 2014 24日目の記事です(大嘘)

TouchOSC は iOS 機器を MIDI コントローラとして使うことができるアプリです。これを Cubase で使う方法をまとめました。

セットアップ

まずは 公式 から TouchOSC Bridge をダウンロードし、Cubase を動かすのと同じ PC にインストール。インストールしたら起動。Windows なら右下のタスクバーにアイコンが表示されるはずです。

また、同じく 公式 から TouchOSC Editor をダウンロードしてインストール。自分で TouchOSC のコントローラを編集しない場合でも、レイアウトを iPad (iPhone) に送るために必要です。

これらのソフトが入っているパソコンは iPad (iPhone) と同じ LAN 内にある必要があります。上手くつながらない場合は LAN ルーターの設定を確認しましょう。

必要なファイルを取得

コントローラーのレイアウトを自分で自由に作成できるのが TouchOSC の良い点でもあり悪い点でもあります。位置から自分のレイアウトを作成するのは面倒すぎて発狂しうるので既存のものを使いましょう。次のようなものがあります。

拡張子 touchosc のファイルを iPad (iPhone) に送り、拡張子 xml のファイルを Cubase に読み込ませることになります。

Cubase 側の設定

Cubase 6 での設定方法です。自分のバージョンに適宜読み替えてください。

デバイス->デバイス設定 の左上の+マークをクリックして「一般リモートデバイス」を選択。右のほうにある「読み込み」から上記でダウンロードした xml ファイルを読み込みます。

TouchOSC 側の設定

まずはパソコン側で TouchOSC Editor を開きます。左上の Open で読み込ませたい touchosc ファイルを開き、右上の Sync を押します。ウィンドウが表示されるので表示したままにしておきます。この状態で iPad (iPhone) の TouchOSC から Layout -> Add を選択すると自分のパソコンが表示されているはずです。そこを押すとテンプレートが iPad に送信されます。

完了

あとは iPad (iPhone) 側で操作すれば Cubase の該当箇所が動くはずです。最初は若干の遅延があるかもしれませんが、そのうち良くなります。

Markdown で書いた文書を LaTeX でリアルタイムでタイプセット(Pandoc と latexmk を利用)

この記事は KainokiKaede Advent Calendar 2014 23日目の記事です(大嘘)

Markdown で原稿を書いて、リアルタイムで TeX ファイルに変換・タイプセット ということをやりたかった。

流れ

main.texhoge.md とを作る。 main.tex の中で hoge.tex をインクルードしておく。 hoge.md から Pandoc で hoge.tex を作る。すると latexmk が更新に反応して pdf を作ってくれる。みたいな流れを考えた。

なぜ Pandoc だけで pdf 作成までやらないかというと、テンプレートを書くのがめんどいというのが一つ。章ごとにわけてタイプセットしたいというのが一つ(md ファイルを分割する方法があるのかもしれないけれども調べていない)。

ファイル構造は次のような感じになる。

main.tex (内部で hoge.tex を input)
hoge.md (編集対象)
hoge.tex (自動的に生成される・編集しない)

コード

とりあえず超てけとーだけど、ファイルの更新をチェックして勝手に Pandoc を回すコードを組んだ。select というモジュールを使った。

import select
import argparse
import os

def watchfile(filename):
    outfilename = filename.split('.')[0]+'.tex'
    f = open(filename)
    # when monitoring a directory: f = os.open("foo", os.O_RDONLY)
    kq = select.kqueue()
    ke = select.kevent(f, filter=select.KQ_FILTER_VNODE,
        flags=select.KQ_EV_ADD | select.KQ_EV_ENABLE | select.KQ_EV_CLEAR,
        fflags=select.KQ_NOTE_DELETE | select.KQ_NOTE_WRITE)
    events = kq.control([ke], 0, None)
    while True:
        r_events = kq.control([ke], 1, None)
        for event in r_events:
            print event
            if event.fflags & select.KQ_NOTE_DELETE:
                print "file was deleted!"
            if event.fflags & select.KQ_NOTE_WRITE:
                os.system('pandoc -i {0} -o {1}'.format(filename, outfilename))
                print "file was updated!"
    f.close()


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('filename')
    args = parser.parse_args()

    watchfile(args.filename)
$ python automd2tex.py hoge.md

で、自動的に更新があったら Pandoc を動かして tex にするようにした。 つまり1窓でこれを、もう1窓で latexmk を動かせば md を更新すると pdf が自動生成される。 bashrc のエイリアスを使って、 md2tex hoge.md で同じ効果が得られるようにした。

でもなんつうか、これ auto じゃなくてもよくね。どうせ md とか Vim でしか書かないんだから、quickrun 的な発想で

autocmd FileType markdown nnoremap gpa :<C-u>! pandoc -i "%:p” -o "%:p:r”.tex<CR>

こんなんでできないの?(できた) 一応これで md で tex を書けるようになったけどなんかめんどいですね。