C로 작성된 OSX의 주요 인물의 로그를 시간순으로 표시합니다.

5343 단어 gnuplotMacMacOSXRuby

개요


지난번에 작성한 C로 만든 OSX의 키플레이어. 에 기록된 로그를 시간순으로 표시해 보세요.

로그 형식


마지막으로 만든 키 기록기에서 다음과 같은 출력 시간 스탬프와 눌린 키 코드의 로그를 보여 줍니다.
$ head -n 5 keystrokes.log 
1401328736 124
1401328737 125
1401328737 44
1401328737 44
1401328738 1

Ruby를 눌러 분당 버튼 수 계산하기

Time#strftime에서 분까지 자르고 hasheql?에서 반복적으로 사용하고 가로로 입는다.
keystrokes.rb
require 'date'

class Rank

  attr_reader :time

  def initialize(time)
    @time = time
  end

  def to_s
    @time.strftime("%Y-%m-%d %H:%M")
  end

  def hash
    @hash ||= to_s.hash
  end

  def eql?(other)
    self.hash == other.hash
  end

end

{}.tap{ |ranks|
  ARGF.readlines.each{ |line|
    time = DateTime.strptime(line.split.first, '%s').to_time
    rank = Rank.new(time)
    ranks[rank] ||= 0
    ranks[rank] += 1
  }
}.to_a.sort_by{ |rank|
  rank[0].time
}.each{ |number, rank|
  puts "#{rank.to_s}\t#{number}"
}
실행해 보다.
cat keystrokes.log | ruby keystrokes.rb | head -n 5
5   2014-05-29 10:58
122 2014-05-29 10:59
105 2014-05-29 11:00
60  2014-05-29 11:01
62  2014-05-29 11:02
네.

GNuplot 먹으라고.

plot에서 사용<하면 먹을 수 있다.
keystrokes.plt
set xdata time
set timefmt "%Y-%m-%d %H:%M"
set xtics format "%H"
set xtics 60*60

set grid
set style fill solid
set xlabel "Timeline."
set ylabel "The number of keystrokes."

set terminal png
set output "keystrokes.png"

plot "<cat keystrokse.log | ruby keystrokes.rb" using 2:1:1 with i lc rgb "royalblue" notitle
Gnuplot으로 이거 수행해.
$ gnuplot keystrokes.plt

결과


(´ω・。)<어떻게 됐어?

좋은 웹페이지 즐겨찾기