Slack に API 経由でメッセージを投稿する

  • トークンを取得する
    • https://api.slack.com/web でページ下部の Authentication セクション にある Create token ボタンをクリックする
  • メッセージを投稿する (chat.postMessage)
    • gist4304955cdc60e16c6975

      # coding: utf-8
      
      import urllib
      import urllib2
      
      token = ''
      ch_id = ''
      
      api_url = 'https://slack.com/api/'
      method  = 'chat.postMessage'
      
      param = {
          'token'    : token,
          'channel'  : ch_id,
          'text'     : 'てすと'
      }
      
      get_url = api_url + method + '?' + urllib.urlencode(param)
      
      res = urllib2.urlopen(get_url)
      
      print res.read()
      
    • API のエントリー URL は https://slack.com/api/

    • chat.postMessage メソッドを GET で投げる。必須パラメータは token (先に取得したトークン)、text (投稿するメッセージ内容)、channel (投稿するチャンネルの ID、チャンネル名ではない) の三つ。
    • チャンネル ID を取得するには API を使うか、チャンネルのメニューにある “Add service integration…” で開く URL (https://hoge.slack.com/services/new?channel_id=CXXXXXXXX) から調べる。
    • username が未指定だと bot という名前でメッセージが投稿される。既存のユーザと重複する名前を指定した場合、hoge (bot) となる。
  • API のメソッド一覧: API Methods | Slack

lxc 覚え書き

基本操作

  • コンテナの作成

    # lxc-create -t <コンテナのテンプレート> -n <コンテナ名>
    
    • -t でコンテナのテンプレートを指定する。使えるテンプレートは /usr/lib/lxc/templates/ を参照すること。
  • コンテナの起動

    # lxc-start -n <コンテナ名> -d
    
    • -d で、コンテナをデーモンとして起動する。
  • コンテナのコンソールを開く

    # lxc-console -n <コンテナ名>
    
    • コンソールから抜けるには Ctrl-a q
  • コンテナの一覧をみる

    # lxc-ls
    
    • --active で現在実行中のコンテナだけが表示される。
    • --fancy で全コンテナの稼動状態や IP アドレスなどの情報がテーブルで出力される。
  • コンテナの情報表示

    # lxc-info -n <コンテナ名>
    
  • コンテナの停止

    # lxc-stop -n <コンテナ名>
    
  • コンテナのスナップショットを取る

    # lxc-snapshot -n <コンテナ名>
    
    • スナップショットの一覧表示は lxc-snapshot -n <コンテナ名> -L -C
  • コンテナのクローン

    # lxc-clone -o <クローン元コンテナ> -n <新規コンテナ名>
    
  • コンテナの削除

    # lxc-destroy -n <コンテナ名>
    

ネットワーク

デフォルトで lxcbr0 というブリッジ (仮想スイッチ) が作成され、ホストの NIC (eth0) と NAT で接続されている。コンテナの仮想 NIC は仮想ネットワークインターフェース (veth*) 経由で lxcbr0 とつながっている。

+-----------------------------------------------------+
| Host                                  +-----------+ |
|                                       | Container | |
|                                       |           | |
+------+         +--------+  +-------+  +------+    | |
| eth0 |--(NAT)--| lxcbr0 |--| veth* |--| eth0 |    | |
+------+         +--------+  +-------+  +------+    | |
|                                       |           | |
|                                       +-----------+ |
+-----------------------------------------------------+

ブリッジの作成、設定

ホスト側でブリッジ (br0) を作り、コンテナをブリッジに接続する。

  • /etc/network/interfaces

    auto br0
    iface br0 inet dhcp
      bridge_ports eth0
      bridge_stp off
    
  • /var/lib/lxc/<コンテナ名>/config

    • lxc.network.link = br0
  • 現在有効なブリッジの確認は `brctl show'

MacPorts のアンインストール

Ref. 2.4. Uninstall

$ sudo port -fp uninstall installed
$ sudo rm -rf \
       /opt/local \
       /Applications/DarwinPorts \
       /Applications/MacPorts \
       /Library/LaunchDaemons/org.macports.* \
       /Library/Receipts/DarwinPorts*.pkg \
       /Library/Receipts/MacPorts*.pkg \
       /Library/StartupItems/DarwinPortsStartup \
       /Library/Tcl/darwinports1.0 \
       /Library/Tcl/macports1.0 \
       ~/.macports

文献管理を Papers2 から Mendeley に移行した

これまで文献 (論文) 管理に Papers2 を用いてきたが、やはりクロスプラットフォームなソフトで管理したい & 自分の文献 DB を web から参照したいので、これからは Mendelely で管理することにし、移行作業を行なった。繁忙期特有の逃避的作業ぽい。

作業

  • 文献情報の移行
    • Papers2 で文献データを BibTex でエクスポート
      • [File] --> [Export] --> [BibTex Library]
    • Mendeley Desktop に文献データをインポート
      • [File] --> [Import] --> [BibTex (*.bib)] で、Papers2 の吐いた BibTex ファイルを選択する。
  • PDF ファイルの移行
    • Mendeley Desktop の [File] --> [Add Folder] で Papers2 の PDF ファイルを置いてあるフォルダを指定する (デフォルトだと ~/Papers2)。
    • Mendeley が PDF ファイルをてきとうに解析してそれなりに文献情報を抽出し、先にインポートした文献とマッチしたときには自動でマージしてくれる。
    • 情報抽出がうまくいかなかったファイルの文献情報は "Needs Review" というライブラリに入れられている。
      • うちでは PDF ファイル約 900 個のうち、Needs Review 行きが約 340 件だった。
    • 抽出失敗したファイルの文献情報は、手動で修正 & 既存の文献とマージ。
      • DOI は取れている文献もある。そういう場合は、DOI で検索すると (DOI の横にある虫眼鏡アイコンをクリック) 文献情報が自動入力される。
    • PDF ファイルの管理 (指定ディレクトリへのコピーやリネーム) は、お好みに応じて [Preferences] --> [File Organizer] で設定する。

異なる PC 間での同期

Mendeley Desktop で登録した文献情報は、Mendeley のサーバと適宜同期されるので、特にすることなく PC 間で同期される (当然 web でも見れる)。文献情報に加えて、各文献の PDF ファイルを (Mendeley が提供する web space を使わずに) 同期させるには、PDF フォルダを置いてあるフォルダと Mendeley Desktop の DB を Dropbox などでまるごと共有、というのが定石ぽい *1。しかし、Mendeley が PDF ファイルをフルパスで管理しているようなので、PDF フォルダへのパスが各 PC で異なっていると、文献に関連付けられたファイルを参照できず、上述の環境まるごと同期はうまくいかない。うちだとラボ機と MacBook Pro や自宅機でユーザ名が違うので、/Users にシムリンク張ったりしないといけないし、そもそも異なる OS 間で同期させようとするとだるいことになる。

というわけで、PDF ファイルの同期はあきらめる。とりあえず PDF ファイルの管理は母艦 (ラボの Mac) でのみ行なうことにして、他の PC では Mendeley のファイル管理 ([File Organizer] --> [Organize my files]) を切っておく。PDF フォルダは別途同期しておき、PDF ファイルを見るときは各 PC のファイラから参照することにする。めんどうだが、人間可読なファイル名にしてあるし、なんとかなるでしょう。