もぐてっく

人は1つ歳を取る度、1ビットづつ大きくなれると信じてた。

Ubuntu14.04でもmikutter 3.0が使いたい!

はじめに

Ubuntu14.04収録のmikutter 0.2.2は既に開発が終了しており、現在は3.0.x系がメインストリームになっています。

0.2.2だと日々リリースされるプラグインが使えなかったりして、ちょっとつまんないですね。

幸い、次期バージョン(utopic)のリポジトリには順次最新バージョンが反映されている(2014/08/17時点3.0.3)様なので、今回はこれを借りてくる事にします。


準備

まずはUnityからターミナルを起動します。

sudoの連続は面倒なのでsudo -sでrootなシェルを起動しておきます。

sudo -s

aptの設定ファイルの調整

お好きなviで2つのファイルを新規作成しましょう。

/etc/apt/sources.list.d/utopic.list

utopicのリポジトリを検索対象に加えます。

deb http://ja.archive.ubuntu.com/ubuntu utopic main universe

/etc/apt/preferences.d/utopic

名指しで指定した場合のみutopicのパッケージを採用する様に優先度を調整します。

Package: *
Pin: release n=trusty
Pin-Priority: 990

Package: *
Pin: release n=utopic
Pin-Priority: 90

いつものアレ

apt-getでパッケージのデータベースを更新しておきます。

apt-get update

mikutterのインストール

既にmikutterをインストールしてる場合は、念のため消しておきましょう。

apt-get purge mikutter

それでは、いよいよmikutterのインストールです。
utopic名指しがポイントです。

apt-get install -t utopic mikutter

起動

Unityからmikutterをクリックして起動すれば、面白オカしい3.0.xワールドが始まります!

f:id:moguno:20140817222639p:plain

もろもろ

リポジトリの優先度をコードネームで指定しているので、将来utopic(14.10?)がリリースされた時にアップグレードが上手く動かなくなるかも知れません。
do-release-upgrade前に今回追加したファイルを削除して、apt-get updateしといた方が良いかも知れません。

「おかえりみくったーちゃん」をインストールするとmikutterライフが色々愉快になります。
moguno/mikutter-okaeri · GitHub

Google Tasksと連携するmikutterプラグインを作ったよ

何これ?

mikutterからGoogle Tasksを操作するためのプラグインです。
Googleのサービスの中でも一際地味なサービスなんですが、シンプルで使いやすいですよTasks。

インストール

moguno/mikutter-datasource-google-tasks · GitHub

~/.mikutter/plugin/にmikutter-datasource-google-tasksってディレクトリを作って中身を展開して下さい。

使い方

mikutterを起動すると、認証ウインドウが表示されます。
下記の内容に同意頂けるならば、「承諾する」ボタンを押して下さい。

f:id:moguno:20140817142040p:plain

認証が完了すると、抽出タブにGoogle Tasksのタスクを流し込める様になります。

f:id:moguno:20140817140923p:plain

タスク管理プラグイン書いてる暇があるならちゃっちゃと行って来れば良いと思います。

さて、タスクを右クリックすると「タスクを完了させる」コマンドが増えています。
これを選ぶと、タスクを完了する事が出来ます。

f:id:moguno:20140817141134p:plain

タスクを完了させると、みくったーちゃんが褒めてくれます。

f:id:moguno:20140817141442p:plain

ねぎらいメッセージは数種類内蔵しているので、もぐのの様なデリケートなモチベーションをお持ちの方も、それなりに続けられると思います。

設定

抽出タブ

f:id:moguno:20140817141607p:plain

データソース「Google Tasks」が増えます。

Google Tasks

f:id:moguno:20140817141645p:plain

  • 更新間隔(分)

Google Taskからタスクを取得(ポーリング)する間隔を指定します。速くしすぎるとDoS攻撃と勘違いされたりもなきにしもあらずなので、それなりに間隔を取って下さい。

mikutterコードメモ - 抽出タブ関係のイベント

on_extract_tab_update

抽出タブの設定内容が変更された時に発生する。
抽出タブの設定ウインドウが閉じられた時にも発生する。

on_extract_tab_open_create_dialog

抽出タブ名入力ウインドウを表示する時に発生する。

on_extract_open_edit_dialog

抽出タブの設定変更ウインドウを表示する時に発生する。

on_extract_tab_delete_with_confirm

抽出タブの削除確認メッセージボックスを表示する時に発生する。

filter_extract_tabs_get

抽出タブの一覧を得る。

filter_extract_datasources

データソースの一覧を得る。

on_extract_receive_message

データソースからメッセージが出力された時に発生する。

mikutterコードメモ - Settings,Listenerクラス

Settingsクラス

  • core/plugin/settings/builder.rbに定義されている。
  • 親クラスはGtk::VBox

なので、Settingsで定義した画面は設定画面に限らず任意のGTKコンテナに格納可能。
逆にSettingsの子に任意のGTKウィジェットが格納可能。
超汎用的!

  • 値はListenerクラスを介して取得・設定する。

Symbol)を指定する。
実は、シンボルの代わりにListenerクラスのインスタンスを渡す事が出来る。

これを利用すると設定の保存先をUserConfig以外にすることも可能。汎用的。

Listenerクラス

  • core/plugin/settings/listener.rbに定義されている。

RSSをデータソースに出来るmikutterプラグインを作ったよ。

何これ?

RSSフィードを抽出タブのデータソースに追加します。

mikutterの抽出タブを使うとTLやメンションなどのデータソースを束ねたり、必要なメッセージのみを抽出したりして独自のTLを作る事が出来ます。

mikutterの今後のバージョンでは「保存された検索」や「リスト」がデータソースとして再実装される可能性があり、より自分好みのTLが構築出来る様になりそうです。

Twitter外のサービスをサポートする場合も、独自のタブを作るよりこの流れに乗っかった方がアツいなと思って、手始めにRSSをデータソースにしてみました。

インストール

moguno/mikutter-datasource-rss · GitHub

~/.mikutter/plugin/にmikutter-datasource-rssってディレクトリを作って中身を展開して下さい。

使い方

こんな感じで抽出タブにRSSフィードを流し込める様になります。

f:id:moguno:20140810163730p:plain

設定

抽出タブ

f:id:moguno:20140810163918p:plain

データソースが11個増えます。

RSSフィード1〜10を纏めたものです。

RSSで設定したRSSフィードです。

RSS

f:id:moguno:20140810164225p:plain

  • URL

RSSフィードのURLを指定します。

  • アイコンの色

エントリーに表示されるRSSアイコンの色を指定します。

  • RSS取得間隔(秒)

WebサイトからRSSを取得(ポーリング)する間隔を指定します。速くしすぎるとDoS攻撃と勘違いされたりもなきにしもあらずなので、それなりに間隔を取って下さい。

  • メッセージ出力間隔(秒)

RSSのエントリは一定間隔で抽出タブに出力されます。その間隔を指定します。

  • 一定期間より前のフィードは流さない(日)

指定したより古いエントリを表示しない様にします。

  • 新しい記事を優先する

チェックするとエントリの日付が新しい順に出力します。

  • ループさせる

チェックすると、RSSフィードのエントリを全て表示し終わった後にまた始めから表示を始めます。

ユーザーにメモを書き込めるmikutterプラグインを作ったよ

何これ?

今回、年に一回行けるか行けないかのオープンソースカンファレンスに参加しまして、オンラインで拝見してた方々と実際に会話を交わす事が出来て嬉しかったなと。

でも何しろ年に一回行けるか行けないかの会なので、次お会いする時には一週間フレンズ状態(顔から何から一切忘れる)は必至。

なので、色々メモしとこうと思った次第です。

インストール

moguno/mikutter-user-memo · GitHub

いつもの様に~/.mikutter/plugin/にmikutter-user-memoってディレクトリを作って中身をぶちまけて下さい。

使い方

プロフィールを開くと、ワー○パッドみたいなアイコンが増えています。

そこに会った場所とか話した内容とか特徴とか初めてのキスの味とか好きに書いて下さい。

f:id:moguno:20140806184729p:plain


おまけで、メッセージにメモの内容が表示される様になります。

f:id:moguno:20140806184950p:plain

変な二つ名とかを入れておくと毎回笑けて健康に良いです。

設定

f:id:moguno:20140806185005p:plain

  • TLにメモを表示する

二つ名表示機能の有効・無効を切り替えます。

  • フォント

二つ名表示機能のフォントと色を設定します。

その他

メモのデータは~/.mikutter/settings/memo.yamlに保存されます。

大事なデータと思いますので、定期的なバックアップをお勧めします。

WindowsにcapstanをインストールしてOSvを起動してみた

はじめに

オープンソースカンファレンス2014 Kansai@KyotoでOSvの何たるかをご教示頂きました。
(ざっくり、JVMの動作に必要なLinux APIをエミュレーションする超軽量なOSとのこと。)

調べるとWindowsVirtualBoxと言う我が家のクラウド環境(?)もサポートされてるみたいなので、インストールしてみることにしました。

最終的にはマイクラサーバが動けば良いなと。

WindowsでOSvを動かしてみよう

あらかじめインストールしてあったもの

  • Windows 7 Pro 64bit(OSv自体が64bitのみサポートみたいなので、32bit OSはアウトと思います。)
  • SourceTree(内部gitを有効にしたもの) 1.5.2.0
  • VirtualBox 4.3.12

Go言語をインストールする。

capstanはGoogle謹製のGo言語で書かれているため、http://golang.org/dlから、Windows版を入手します。

f:id:moguno:20140803214923p:plain

なんとなくお勧めされた64bit版をチョイス。
インストール先はデフォルトのc:\go\にしました。

SourceTreeでcapstanのリポジトリをクローンする。

https://github.com/cloudius-systems/capstanをクローンします。

f:id:moguno:20140803193841p:plain

8/3時点のHEADは、0.1.2 + 2014/7/29 4:38までのコミットでした。

作業用コマンドプロンプト起動用バッチファイルを作る。

capstanをインストール or 実行するためには、下記のプログラムにパスを通す必要があります。

  • go.exe
  • git.exe
  • VBoxManage.exe

加えて、GOPATHにgo言語のルートになるフォルダを設定する必要があります。

毎回設定するのは面倒なのでバッチファイルにします。

・capstan_cmd.bat

set PATH=%PATH%;c:\go\bin
set PATH=%PATH%;c:\Users\desktop\AppData\Local\Atlassian\SourceTree\git_local\bin
set PATH=%PATH%;"c:\Program Files\Oracle\VirtualBox"
set GOPATH=c:\go\

cmd

capstanのインストール

さて、ここからはコマンドプロンプトでの作業です。
さっきのバッチファイルからコマンドプロンプトを起動し、install.batを実行します。

c:\>cd \Users\desktop\Documents\capstan ←capstanをクローンしたフォルダ

c:\Users\desktop\Documents\capstan>install

c:\Users\desktop\Documents\capstan>set package=github.com/cloudius-systems/capst
an

c:\Users\desktop\Documents\capstan>for /F %i in ('git describe --tags ') do set
version=%i

c:\Users\desktop\Documents\capstan>set version=v0.1.2-4-gdb6eb7e

c:\Users\desktop\Documents\capstan>go get github.com/cloudius-systems/capstan
# github.com/cloudius-systems/capstan
c:\go\src\github.com\cloudius-systems\capstan\capstan.go:64: too few values in struct initializer
c:\go\src\github.com\cloudius-systems\capstan\capstan.go:95: too few values in struct initializer

・・・(同様のエラーが続く)

あらら、エラーです。

cliのバージョンダウン

エラーの原因はcapstanが使っているcliと言うパッケージでした。
StringFlag()メソッドに渡す引数の数が足りていない様です。

調べると、cliパッケージが8/3(今日やん・・・)にバージョンアップ(1.2.0)しており、その際にメソッドの仕様が変わったようです。

1.1.0にバージョンダウンして何とかします。

c:\Users\desktop\Documents\capstan>cd \go\src\github.com\codegangsta\cli\

c:\Go\src\github.com\codegangsta\cli>git checkout 1.1.0
Note: checking out '1.1.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 27ecc97... Merge pull request #112 from AudriusButkevicius/swap

再度capstanのインストール

c:\Users\desktop\Documents\capstan>install

c:\Users\desktop\Documents\capstan>set package=github.com/cloudius-systems/capst
an

c:\Users\desktop\Documents\capstan>for /F %i in ('git describe --tags ') do set
version=%i

c:\Users\desktop\Documents\capstan>set version=v0.1.2-4-gdb6eb7e

c:\Users\desktop\Documents\capstan>go get github.com/cloudius-systems/capstan

c:\Users\desktop\Documents\capstan>go install -ldflags "-X main.VERSION v0.1.2-4
-gdb6eb7e " github.com/cloudius-systems/capstan

c:\Users\desktop\Documents\capstan>

うまくいきました。

OSvの起動

引き続きコマンドプロンプトからOSvを起動します。
コマンド一発で仮想HDDイメージのダウンロードから起動までやってくれます。楽ちん。

VirtualBoxマネージャーのウインドウを開いておくと動的にVMがセットアップされていくのが見えて楽しいです。

C:\Users\desktop\Documents\capstan>capstan run -f 8000:8000 cloudius/osv
Downloading cloudius/osv/index.yaml...
126 B / 126 B [=====================================================] 100.00 %
Downloading cloudius/osv/osv.vbox.gz...
73.09 MB / 73.09 MB [===============================================] 100.00 %
Created instance: cloudius-osv
OSv v0.11
eth0: 10.0.2.15

[/]% ←OSvのプロンプト

Webインターフェースを起動する

ホストマシンからhttp://localhost:8000にアクセスするとめでたくWebインターフェースが表示されます。
f:id:moguno:20140803204302p:plain

今日はここまで。

うまく行ってないところ

VMが終了できない。

WebインターフェースからshutdownしたりVirtualBoxマネージャーからACPIシャットダウンしてもOSvが終了しません。
コンソールにはこんなメッセージ。

exception nested too deeply
[backtrace]

例外が死ぬほど出てる感じ?

ブリッジモードで起動できない

capstanから-bオプションを使ってブリッジモードで起動しようとしてもVMが起動しませんでした。