2014年7月12日土曜日

Ruby で Terminal の文字を1秒ごとに flush して、 count down する


Rubyでカウントダウン。
ターミナルの文字を1秒毎にフラッシュする。
RubyでTerminalの文字を1秒ごとにflushして、count down する

ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-darwin13.1.0]


#!/usr/bin/env ruby
# -*- encoding: utf-8 -*-

#
def move_left
  print "\e[1D"
end

#
def del_char
  print "\e[1D"
  print " "
end

#
def del_line(n)
  #print "\e[1D"
  n.times do |x|
      del_char
      move_left
  end
end

#
def count_down(num)
  num.times do |x|
    print num - x
    sleep(1)
    n = num.to_s.length
    del_line(n)
  end
end

if __FILE__ == $0
  
  num = 15
  count_down(num)
  print "\a"
end

__END__

=begin
\e[1A <- up
\e[1B <- down
\e[1C <- right
\e[1D <- left
\a    <- beep
=end

Rubyで Stringで指定された名前の、instanceをdynamicに生成する

#文字列を指定して、動的にインスタンスを生成できるか?
#指定したStringで、instanceをdynamicに生成する
#インスタンス変数を動的に作成する

ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-darwin13.1.0]


#!/usr/bin/env ruby
# -*- encoding: utf-8 -*-

class Cat
    def initialize(name)
        @name = name
    end
    attr_accessor :name
    #attr_reader :name
    def say
        puts "hello i'm #{@name}."
    end
end

if __FILE__ == $0

  class_name = "Cat"
  name_of_cat = "chibi"
  res = eval "@#{name_of_cat} = #{class_name}.new('#{name_of_cat}')"
  p res
  @chibi.say

  puts "----"
  puts
  
  cat_name_list =["tama", "mike", "kuro"]
  cat_name_list.each do | cat_name|
    eval "@#{cat_name} = #{class_name}.new('#{cat_name}')"
  end
  
  cat_name_list.each do | cat_name |
    eval "@#{cat_name}.say"
  end
  
  
end

__END__

2014年7月11日金曜日

Mac の Terminal から、file を、GUI アプリで open する。


Mac の Terminal から、file を、GUI アプリで open する。

テキストファイルをコマンドラインから開く
open -a TextEdit sample.text
open -a CotEditor sample.text
open -a /Applications/TextWrangler.app sample.text

画像ファイルをコマンドラインから開く
open -a /Applications/Preview.app ~/Pictures/sample.jpg

動画ファイルをコマンドラインから開く
open -a /Applications/MPlayerX.app ~/Movies/sample.mp4

フォルダをファインダーで開く
open 'file://localhost/Volumes/Macintosh HD/Applications/'

URLを既定のブラウザで開く
open http://www.apple.com/

2014年6月4日水曜日

Mac OS X の Terminal で wav ファイルを m4a ファイルに 変換する


コマンドラインでwavファイルをm4aファイルに変換する


sayコマンドでwavを作る
$ say -v kyoko "こんにちは" -o ~/Music/hi.wav --data-format=LEF32@8000
出力フォーマットを指定しない場合は、aiffになる

wavファイルを mp4 audioファイルに変換する
$ afconvert ~/Music/hi.wav -f 'mp4f' -d 'aac' ~/Music/hi.m4a

コマンドラインで、変換済みのファイルを再生する
$ afplay ~/Music/hi.m4a &

コマンドラインで mp3 に変換する

brew install lame してある場合
$ /usr/local/bin/lame --alt-preset cbr 128 ~/Music/say_talk.wav

brew install ffmpegしてある場合
$ /usr/local/bin/ffmpeg -i ~/Music/hi.wav  -f mp3 -acodec libmp3lame ~/Music/hi.mp3

Mac OS X の command line で spotlight


command line で spotlight

コマンドラインで spotlight

rubyという単語を含むファイルを探す
$ mdfind "ruby"

rubyとrailstを含むファイルを探す
$ mdfind "ruby && rails "
mdfind "ruby  rails "

rubyとrailstまたはpythonとdjangoを含むファイルを探す
$ mdfind "(ruby && rails)||(python && django) "

rubyという単語を含み、かつ、pythonまたはperlという単語を含まないファイルを探す
$ mdfind "ruby -python -perl"


rubyという文字を含んだファイル名、かつ、pdfファイルを探す
$ mdfind "(kMDItemDisplayName = *ruby*) && (kMDItemContentType = com.adobe.pdf)"


mdls コマンドで、ファイルやフォルダのメタデータ属性の詳細を確認できる。


kMDItemKind = "Portable Document Format(PDF)"
kMDItemContentType = "com.adobe.pdf"
kMDItemNumberOfPages = 40
kMDItemFSSize = 840659
kMDItemLogicalSize = 840659
kMDItemFSName = "scheme-in-ruby.pdf"
kMDItemDisplayName = "scheme-in-ruby.pdf"

kMDItemKind = "電子出版物(ePub)"
kMDItemContentType = "org.idpf.epub-container"

kMDItemKind = "Video Media"
kMDItemContentType = "public.mpeg-4"
kMDItemDurationSeconds = 343.3983333333333
kMDItemPixelHeight = 720
kMDItemPixelWidth = 1280


kMDItemFSCreationDate = 2013-04-16 07:46:24 +0000
kMDItemContentCreationDate = 2013-04-16 07:46:24 +0000
kMDItemContentModificationDate = 2013-04-16 07:46:24 +0000


kMDItemKind = "Apple MPEG-4 オーディオ"
kMDItemContentType = "com.apple.m4a-audio"

kMDItemKind = "MP3 オーディオ"
kMDItemContentType = "public.mp3"
kMDItemAudioBitRate = 266000
kMDItemAudioChannelCount = 2
kMDItemAudioSampleRate = 44100
kMDItemDurationSeconds = 341.0808163265306


kMDItemKind = "JPEG イメージ"
kMDItemContentType = "public.jpeg"
kMDItemProfileName = "sRGB IEC61966-2.1"
kMDItemPixelHeight = 1244
kMDItemPixelWidth = 2122
kMDItemResolutionHeightDPI = 72
kMDItemResolutionWidthDPI = 72
kMDItemCreator = "Adobe Photoshop CS2 Windows"

kMDItemKind = "PNG イメージ"
kMDItemContentType = "public.png"
kMDItemResolutionHeightDPI = 300
kMDItemResolutionWidthDPI = 300
kMDItemCreator = "Adobe ImageReady"

kMDItemKind = "RAR Archive"
kMDItemContentType = "com.rarlab.rar-archive"

kMDItemKind = "ZIP アーカイブ"
kMDItemContentType = "public.zip-archive"