Skip to content

[ruby] Pry で what_methods をつかう

2012 1月 26
tags: ,
by mg

irb のかわりに Pryを使う。
そしてrubyでアレなんてメソッドだっけ?を解決する what_methods を使ってみた

gem install pry
gem install what_methods

~/.pryrcを作成し

require "what_methods"

使い方

gdansk: ~ ♣  pry
[1] pry(main)> (0..3).what? [0,1,2,3]
[1] pry(#<Range>)> exit
0..3.to_a == [0, 1, 2, 3]
0..3.entries == [0, 1, 2, 3]
0..3.sort == [0, 1, 2, 3]
=> [:to_a, :entries, :sort]
[2] pry(main)> ["a",nil,"b",nil].what? ["a","b"]
[1] pry(#<Array>)> exit
["a", nil, "b", nil].compact == ["a", "b"]
["a", nil, "b", nil].compact! == ["a", "b"]
=> [:compact, :compact!]
[3] pry(main)> " aaa ".what? "aaa"
[1] pry(" aaa ")> exit
" aaa ".strip == "aaa"
" aaa ".strip! == "aaa"
=> [:strip, :strip!]

一度、pry(main) から pry(#<Class>)> となって exit してからでないと結果がでなかったのだけどなにか設定の仕方があるんだろうか?

irb + what_methods だとすぐ結果がでる

ruby-1.9.3-p0 :001 > (0..3).what? [0,1,2,3]
0..3.to_a == [0, 1, 2, 3]
0..3.entries == [0, 1, 2, 3]
0..3.sort == [0, 1, 2, 3]
 => [:to_a, :entries, :sort]

参考にしたところ


[git] forkしたearthquake.gemを本家とmergeしたときのメモ

2012 1月 12
tags:
by mg

ふだん、Twitterクライアントに @jugyo さんのつくられた earthquake.gem というCUIのクライアントをつかっています
勉強にとgithubでforkして、ちょこちょこいじってみているのですが、本家で更新があってmergeしてみたのでそのときのメモ

その前に

普通にインストールすると

  gem install earthquake

で $GEM_HOME にインストールされるのですが、いじるときに面倒だなと思っていたところ、@nbqx さんにgithubからクローンしたリポジトリなどを参照させるやり方を教わりました。
forkしたリポジトリからclone

  git clone git@github.com:milligramme/earthquake.git

/Users/gdansk/Tank/earthquake/ へcloneして
.bashrc や .bash_profileに

  # earthquake
  alias earthquake="/Users/gdansk/Tank/earthquake/bin/earthquake"

などと記述して、alias を任意のリポジトリの bin/earthquake に向ける
これで、好きな場所の earthquake を earthquakeコマンドで起動できる
自分はさらに eqコマンドに短縮してます

ローカルの earthquake リポジトリに本家をマージ

  # リモートブランチ
  gdansk: ~/Tank/earthquake master ♪ git remote -v
  origin	git@github.com:milligramme/earthquake.git (fetch)
  origin	git@github.com:milligramme/earthquake.git (push)

  # remote に本家を追加して、ブランチを切り替え
  gdansk: ~/Tank/earthquake master ♪ git remote add jugyo git://github.com/jugyo/earthquake.git
  gdansk: ~/Tank/earthquake master ♪ git checkout -b jugyo/master
  Switched to a new branch 'jugyo/master'

  # remoteの追加を確認
  gdansk: ~/Tank/earthquake jugyo/master ♪ git remote -v
  jugyo	git://github.com/jugyo/earthquake.git (fetch)
  jugyo	git://github.com/jugyo/earthquake.git (push)
  origin	git@github.com:milligramme/earthquake.git (fetch)
  origin	git@github.com:milligramme/earthquake.git (push)

  # jugyoブランチで本家をpullする
  gdansk: ~/Tank/earthquake jugyo/master ♪ git pull jugyo master
  From git://github.com/jugyo/earthquake
   * branch            master     -> FETCH_HEAD
  Merge made by the 'recursive' strategy.
   lib/earthquake/commands.rb |   10 +++++++++-
   lib/earthquake/output.rb   |   18 ++++++++++++++----
   2 files changed, 23 insertions(+), 5 deletions(-)

  # masterに切り替えてmerge
  gdansk: ~/Tank/earthquake jugyo/master ♪ git checkout master
  Switched to branch 'master'
  gdansk: ~/Tank/earthquake master ♪ git merge -
  Updating 83e1c5d..4ba7cef
  Fast-forward
   lib/earthquake/commands.rb |   10 +++++++++-
   lib/earthquake/output.rb   |   18 ++++++++++++++----
   2 files changed, 23 insertions(+), 5 deletions(-)

これで 本家の :aliasesコマンドが追加されました

⚡ :aliases
{
“:rt” => “:retweet”,
“:fv” => “:favorite”,
“:ufv” => “:unfavorite”
}

あとは自分のリモートリポジトリに push すれば完了


[ScriptUI]パネルの裏に隠れるプログレスバーの回避策

2012 1月 6

長い処理の進捗確認のためのプログレスバーを使っていて、うっかりInDesignなりIllustratorのパネルが出ていると、そのパネルの裏にプログレスバーが隠れてしまって残念だったので、回避する方法考えてみた。
ScriptUIのWindowタイプを “palette”にするとよいみたい。(AdobeのプログレスバーのサンプルスクリプトはWindowタイプが “window”になってる)

Window type = “palette”


パネルの上になる

Window type = “window”


隠れる

Window type = “dialog”(おまけ)

// panels and progressbar z-order-test
#targetengine 'session'
var u;
var type = ["palette", "window", "dialog"];
for (var i=0; i < type.length; i++) {
  var w = new Window(type[i], "z-order-test", u);
  w.orientation = 'column';
  w.preferredSize = [320,100];
  w.alignChildren = ['fill', 'fill'];

  w.add('statictext', u, w.type);
  p = w.add('progressbar', u, 0, 100);
  if (type[i]=='dialog') {
    var btn = w.add('button', u, "Close", {name: "ok"});
    btn.onClick = function() {w.close();};
  };
  p.value = 1;
  w.show();
  $.sleep(5000);
  w.close();
};

[Music]仕事用BGMにあたらしく追加した音楽2011

2011 12月 28
tags:
by mg

今年の年始にかいた 仕事用BGM 2010年追加版

こんどは年末にちゃんと書くべく前回と同様に、iTunesのライブラリに2011年に新たに追加した音源から、新たに知ったアーティストをピックアップしてみました。リンクはiTunesのアーティストリンクで試聴できます。

きらきら系

色彩系とかグラフィック系のしごとをするときとか

ピコピコ、ビヨビヨ系

基本、コーディングはコレ系になります、てんぱるほどにBPMが下げて鎮静します

まったり系

ソースコードよんだり、調べもの中とか、そんなとき

あとは上記の中で、時間制限付きの時に聴く音楽という「追い立てる系」というのがあるのですが、2011はこれをよく聴いていました。

音楽系Webサービス

今回もこの辺のサービスをつかって、音楽の幅をひろげました。

  • The Music Maze音楽の関連性をツリー上に検索してくれる
  • Last.fm似ているアーティスト度を参考に
  • Discogsデータベース
  • SoundTrackingiTunes(米)の試聴と連動して共有できる音楽系SNS

来年もいい音楽に巡り合えますように。


[InDesign]ドキュメントのペーストボードを拡張する

2011 12月 26
by mg

InDesign の処理でペーストボード外のオブジェクトをどうしてもいじらなければならないとき、そのままだ無理やりPB外のフレームに画像配置なんてやろうとするとエラーになるので、ペーストボード領域をひろげる。 pasteboardPreferences.pasteboardMargins を使う。

デフォルトは [-1, 72] ([左右(-1はページ幅), 上下]、単位はポイント)。
mm単位系になっていると [-0.35277777777778, 25.4] になるという素敵な仕様になっているので、単位をつけて設定してあげる。

doc.pasteboardPreferences.pasteboardMargins = ['-1pt','288pt'];

[git] git branch -dと-D のちがいメモ

2011 12月 15
tags:
by mg

Gitでブランチの削除にずっと -D オプションを使っていた。
help によると

$ git branch --help

<前略>
OPTIONS
      -d, --delete
           Delete a branch. The branch must be fully merged in its upstream branch, or in
           HEAD if no upstream was set with --track or --set-upstream.

       -D
           Delete a branch irrespective of its merged status.

-d または –delete はマージされたブランチは削除できる
-D は容赦なく(irrespective)ブランチを削除する

master にマージしてない ‘notyet’ ブランチを -d オプションで削除しようとすると -D を使えと怒られる

$ git checkout master
Switched to branch 'master'

$ git branch -d notyet
error: The branch 'notyet' is not fully merged.
If you are sure you want to delete it, run 'git branch -D notyet'.

おまけ
リモートのブランチ keshitai を消すには

$ git push origin :keshitai

…直感的でない


[git] gitのtagをリモートにpushする

2011 12月 14
tags:
by mg

ローカルでタグをつける

$ git tag v0.9

リモートに反映させる

$ git push origin v0.9

まとめてリモートに反映させる

$ git tag v1.0a
:
:
:
$ git tag v1.0b
:
:
$ git tag v1.0rc

リモートに push してないタグを全て反映させる

$ git push origin --tags

過去に遡ってタグをつける

$ git log --pretty=oneline

bc485f2e49740e7d2ad62e08b785117a3bb958d7 beta
ade7a116ecabd0623ca04ece5f5496c06e3c1c55 preview
e1fec3d88263a28402d70212a06da9a62fd19146 rc

$ git tag v1.0pre ade7a116

なるほど


[bundler] bundle viz コマンド w/GraphViz

2011 12月 13
by mg

bundle viz コマンドをためしてみる

  gdansk: ~/Project/Sakiika master ♪ bundle viz
  #
  Make sure you have the graphviz ruby gem. You can install it with:
  `gem install ruby-graphviz`

ruby-graphviz がないのでインストール

  gdansk: ~/Project/Sakiika master ♪ gem install ruby-graphviz
  Fetching: ruby-graphviz-1.0.0.gem (100%)

  Since version 0.9.2, Ruby/GraphViz can use Open3.popen3 (or not)
  On Windows, you can install 'win32-open3'

  You need to install GraphViz (http://graphviz.org/) to use this Gem.

  For more information about Ruby-Graphviz :
  * Doc : http://rdoc.info/projects/glejeune/Ruby-Graphviz
  * Sources : http://github.com/glejeune/Ruby-Graphviz
  * NEW - Mailing List : http://groups.google.com/group/ruby-graphviz

  /!\ Version 0.9.12 introduce a new solution to connect edges to node ports
  For more information, see http://github.com/glejeune/Ruby-Graphviz/issues/#issue/13
  So if you use node ports, maybe you need to change your code.

  /!\ GraphViz::Node#name has been removed!

  /!\ :o utput and :file options have been removed!

  /!\ The html attribut has been removed!
  You can use the label attribut, as dot do it : :label => '<>'

  /!\ Version 0.9.17 introduce GraphML (http://graphml.graphdrawing.org/) support and
  graph theory !
  Successfully installed ruby-graphviz-1.0.0
  1 gem installed
  Installing ri documentation for ruby-graphviz-1.0.0...
  Installing RDoc documentation for ruby-graphviz-1.0.0...

GraphViz をインストール
Download | Graphviz – Graph Visualization Software

  gdansk: ~/Project/Sakiika master ♪ bundle viz
  /Users/gdansk/.rvm/gems/ruby-1.9.3-p0/gems/ruby-graphviz-1.0.0/lib/graphviz/utils.rb:26: Use RbConfig instead of obsolete and deprecated Config.
  /Users/gdansk/Project/Sakiika/gem_graph.png

プロジェクトのルートで $ bundle viz を実行すると、gem_graph.png を出力、gemの依存関係をビジュアライズドしてくれる


[homebrew] brew depstree => brew deps –tree

2011 11月 2
tags:
by mg

Homebrew の依存関係コマンド
$ man brew にも $ brew help にも書いてなくてわすれるからメモ。
依存関係を階層構造で表示してくれる。

2011-11-30追記
brew-depstree コマンドは削除されて

brew deps --tree

に変わった
#8829: Move `brew depstree` into `brew deps –tree` – Issues – mxcl/homebrew – GitHub

♪ brew depstree ffmpeg
ffmpeg
> yasm
> x264
> > yasm
> faac
> lame
> theora
> > pkg-config
> > libogg
> > libvorbis
> > > pkg-config
> > > libogg
> libvorbis
> > pkg-config
> > libogg
> libogg
> libvpx
> > yasm
> xvid

deps コマンドは $ man brew に書いてある

#第1レベルの依存、アルファベット順
♪ brew deps --1 ffmpeg
faac
lame
libogg
libvorbis
libvpx
theora
x264
xvid
yasm

#第1レベルの依存、トポロジカル順?
♪ brew deps --1 -n ffmpeg
yasm
x264
faac
lame
theora
libvorbis
libogg
libvpx
xvid

#全ての依存、トポロジカル順? depstreeと同じっぽい
♪ brew deps -n ffmpeg
yasm
x264
faac
lame
pkg-config
libogg
libvorbis
theora
libvpx
xvid

もしかして関係ある?

トポロジカルソート – Wikipedia


[TextMate]プロジェクトドロワーのフォントサイズ変更

2011 9月 28
tags: ,
by mg

TextMate 1.5.10 rev1631 (cutting-edge)でプロジェクトドロワーのフォントを変更出来るようになってたのでメモ。

[2011-03-14: REVISION 1631]

[NEW] Drawer font can be changed via defaults (Terminal), e.g.: defaults write com.macromates.textmate OakProjectDrawerFontSize -int 15

フォントサイズを小さくしても、ファイルやフォルダアイコンまで小さくなるわけではないので、表示出来る行数はそんなに変わらないのですが、同じドロワー幅で表示できるファイル名の文字数が増えるのが地味にうれしい。

デフォルトは10ptのところを9ptにしてみる。MBAだと8ptくらいまでならぎりぎりかも。

defaults write com.macromates.textmate OakProjectDrawerFontSize -int 9

デフォルトに戻すには

defaults delete com.macromates.textmate OakProjectDrawerFontSize

設定の確認

defaults read com.macromates.textmate OakProjectDrawerFontSize

他の TextMate 用の defaults

TextMate Manual » エキスパートのための設定