あひるの勉強部屋

つらつらつら~と不定期にカキコするブログ

macOS に cargo-tree いれた

cargo-tree はプロジェクトの依存クレーをツリー表示してくれるやつらしい。
今回依存関係を調べたくて入れてみたので覚書。

インストール手順

環境

name version
macOS 10.12.5
homebrew 1.2.4-61-g4ca2efb
rustc rustc 1.20.0-nightly
cargo cargo 0.21.0-nightly

前提条件

バージョンは前述を参考に

  • homebrew インストール済み
  • rust の nightly がインストール済み

手順

  • cmake を homebrew からインストールしておく
$ brew install cmake
$ cmake --version
cmake version 3.8.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ cargo install cargo-tree
$ cargo tree --version
cargo-tree 0.13.0

途中で起きた問題

  • cargo-tree のインストール中に依存関係のビルドに必要な cmake がねぇよって怒られた
error: failed to run custom build command for `libgit2-sys v0.6.12`
process didn't exit successfully: `/var/folders/80/fmp4sy_d2jq8q_gv5q6gy42w0000gn/T/cargo-install.8xN8YVpcZ19O/release/build/libgit2-sys-edfed1ba91536559/build-script-build` (exit code: 101)
--- stdout
running: "cmake" "/Users/ahiru/.cargo/registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.6.12/libgit2" "-DBUILD_SHARED_LIBS=OFF" "-DBUILD_CLAR=OFF" "-DCMAKE_INSTALL_PREFIX=/var/folders/80/fmp4sy_d2jq8q_gv5q6gy42w0000gn/T/cargo-install.8xN8YVpcZ19O/release/build/libgit2-sys-f696556cc2dc8abe/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/gcc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/usr/bin/c++" "-DCMAKE_BUILD_TYPE=Release"

--- stderr
fatal: Not a git repository (or any of the parent directories): .git
thread 'main' panicked at '
failed to execute command: No such file or directory (os error 2)
is `cmake` not installed?

build script failed, must exit now', /Users/ahiru/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.24/src/lib.rs:593:4
note: Run with `RUST_BACKTRACE=1` for a backtrace.

warning: build failed, waiting for other jobs to finish...
error: failed to compile `cargo-tree v0.13.0`, intermediate artifacts can be found at `/var/folders/80/fmp4sy_d2jq8q_gv5q6gy42w0000gn/T/cargo-install.8xN8YVpcZ19O`

Caused by:
  build failed

homebrew で cmake インストールしてリトライしたら成功した。

  • 依存関係の petgraph のコンパイル中に必ず以下のワーニングが出る
   Compiling petgraph v0.4.5
warning[E0122]: trait bounds are not (yet) enforced in type definitions
   --> /Users/ahiru/.cargo/registry/src/github.com-1ecc6299db9ec823/petgraph-0.4.5/src/algo/mod.rs:169:1
    |
169 | type DfsSpaceType<G> where G: Visitable = DfsSpace<G::NodeId, G::Map>;
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

出ても先に進むしビルドに成功してしまう。
気が向いたらなんか情報出てないか調べよう。

Slack-Eject

これは Eject Advent Calendar 2016 24日目の記事です。

はじめに

(☝ ՞ਊ ՞)☝ういーん
Eject AC 始まってから、なかなか記事書く時間が取れず残念な感じでしたが、24日目にギリギリ間に合いました。
今回はEject工作におけるクライアントとしてSlackのbotを作成したので、それの紹介をしたいと思います。 ネタ的には今年のOSC名古屋で出してました。

きっかけ

Ejectコマンド工作において、一番面倒なのはクライアントの用意です。
外部からアクセスできるようにして、適当にUI作ってetc…
また、工作ごとに作っていては埒があきません。(専用で作った方がいい場合も多々ありますが)
そこで、簡単に楽にを目標にSlackをクライアントを使ったBotを作成してみました。

Slack-Eject

とりあえずソースはこちら↓ github.com

これはSlackでBotに対して特定のワードを打ち込むと反応するというものです。 今回は eject /dev/cdrom というワードに反応するようにしました。
ワードに引っかかったら、子プロセスで実際にejectコマンドを実行するようにしました。 展示用にワードを設定しているので、かなり面倒なワードですが、実際に使う時はもっと短いといいでしょう。

一応上記機能と同様の実装で、デバイスの検索やドライブの開閉状態の確認なども実装しています。

使用言語はnode.jsで、botkitというライブラリを使って作りました。
実装はいたって簡単で、 controller.hears() の第一引数で反応するワードを正規表現で書き、 第二引数で反応するメッセージタイプを設定します。 あとは function(bot, msg) 内で実行したい処理を書いてあげればクライアントの完成です。

ちなみに実行方法は token=BOTのトークン node app.js です。

簡単でしょう?
これでクライアントのことを気にせずにEject工作が捗るぞ〜(☝ ՞ਊ ՞)☝

終わり

東洋軒

これはwhywaita Advent Calendar 2016の14日目の記事です。

はじめに

whywaita ACってなんなんだ…(哲学)
whywaita AC何書けばいいのかわからんって言ってたら、その日の飯でもいいとのこと。
ならば適当に飯屋の情報でも書いとくか。

東洋軒

名古屋の栄で一番好きな店。
本店は三重県らしいね。>>東洋軒
ちなみに栄店は名古屋三越の9階にある。
洋食屋でおそらく一番人気なのはブラックカレーだろうか
ブラックカレーパンとかはお持ち帰りもできるのでオススメ。

最近東洋軒で食べたもんの写真はこんな感じ。 f:id:ahiruZ:20161030131944j:plain f:id:ahiruZ:20161030134328j:plain たしかメニューは東洋軒ランチかなんかだったような(うろ覚え)
写真のはメインのハンバーグステーキとデザートのキャラメルのババロア

以上、人権飯情報でした。

最近見つけた便利機能

これは mikutter Advent Calendar 2016 の3日目の記事です。

はじめに

こんにちは、あひる焼きです。
この記事は mikutter AC の記事の中では珍しくておくれてないタイプの記事です。

本題

本当はプラグインとか作って投稿したかったのですが、なかなかすぐにはできそうになかったので代わりのネタです。(ておくれてない)
ちなみに前提条件として、display_requirement プラグインを導入済みということで進めます。
みなさん、mikutterのショートカット機能はご存知だと思います。 f:id:ahiruZ:20161203200208p:plain 上のスクショの様に設定画面から様々なショートカットを登録できます。

では、ショートカットのキーバインドでダブルクリックやトリプルクリックが設定できるのはご存知でしょうか?
そんなもん使ってどうすんねんと思うかもしれませんが、結構便利です。
f:id:ahiruZ:20161203200613p:plain

ダブルクリックとトリプルクリックの動作

トリプルクリックを実行すると、実行中にダブルクリックの判定が行われダブルクリックとトリプルクリックの両方が実行される仕様です。 当たり前かもしれませんが、ダブルクリックが優先して実行されます。 つまり、ダブルクリックにクリック対象からフォーカスが外れるような操作(ユーザー画面を開く等)を設定していた場合、トリプルクリックの判定がされなくなってしまうので注意が必要です。

ふぁぼってRT

この仕様を使うことで、mikutterには標準搭載されていない ふぁぼってRT が実行できる様になります。
Button 1 Double Click にふぁぼを割り当て Button 1 Triple Click にRTを割り当てると、トリプルクリック実行時にふぁぼとRTが実行されるといった具合です。
最初はプラグインを作ってしまおうかなと思っていましたが、ショートカットを設定するだけで実現できるのは楽です。
おわり


明日は最近ひよわ焼きで絶賛炎上中(語弊の塊)の 京橋 ひよわさん です!

炎上中

これは d250g2 Advent Calendar 2日目の記事です。

はじめに

こんにちは
最近毎日燃えてるあひるです。
炎上という点で親近感を感じたので、本ACに投稿させていただきます。

本題

  • 12/2 00:15 頃
    本投稿に関するネタの調整をしようと、yakuna.ahiru3.net にアクセスしました。 普段そこではあひる焼きのSVGを配布しているわけですが、若干バージョンが低いSVGだったのでこの機会に新しくしようと思った次第です。
    特に理由はないのですが、Concrete5を使って公開しています。 ただ、あまり使い慣れておらず、適当にいじってたらトップページで以下のエラーが出る様になってしまいました。
An image could not be created from the given input

どうやらconcrete5が使ってるモジュールのバグを踏んだっぽいです。

  • 12/2 00:20 頃
    あまり時間もないし、リブートしたら直ってくれということで一旦リブートしてみることに。
    リブート後
    f:id:ahiruZ:20161202004004p:plain ( ՞ਊ ՞)…

  • 12/2 00:30 頃
    どうしようもなくなる

  • 執筆現在
    .  ☝
            ՞
     _人人人人人人_
     > (     ) <  ☞
      ̄YYYYYY

 ՞
      ਊ

最後に

まさか執筆ネタを作ろうとしたら、サイトが炎上するとは思いませんでした。
炎上の地はこちらになります >> yakuna.ahiru3.net

今日も1日焼かれたぞい…

.     ∞
     ∫
  ,';:☜;.`,ਊ,,;';,;☞,.՞
  ՞
         お わ り

明日はておくれの総本山にして御本尊の @toshi_a 氏です