ChangeLog 最新ページ

rubyの勉強 - あかぴのChangeLog by rchalow

after311.rb [rubyの勉強]

2011/3/11からの経過日数を数えるプログラム

#!/usr/bin/env ruby
$KCODE="EUC"

require "date"
d = Date.today
d311 = Date.new(2011, 3 ,11)
d_in = ARGV[0]
d1 = Date.parse(d_in.to_s)

print d311,"からの日数","\n"
print "今日:", d ," ,", d - d311,"日後","\n"
print " :",d1 ," ,", d1 - d311,"日後","\n"

実行結果
$ ./after311.rb 20110312
2011-03-11からの日数
今日:2012-08-04 ,512日後
    :2011-03-12 ,1日後

512日後

tdiaryデータをChangeLog形式に変換 [rubyの勉強]

td2からChangeLog形式に
一部手動で手直しも必要だが、まあ実用の範囲。

td2toclog+narabe.rb 200310.td2 > ~/tmp/200310
  
entry-henkan.rb ~/tmp/200310 > ChangeLog.2003
とりあえず、
http://pub.cozmixng.org/~akapy/rchalow/2003-10.html

td2toclog.rb [rubyの勉強]

tdiaryのdataの中のtd2ファイルをChangeLogに近い形に変換する。
あとは日付でソートしたい、
ディレクトリ内のtd2ファイルを順番に読み込んで処理したい。

#!/usr/bin/env ruby
$KCODE="EUC"
#$/ = "\n"
#$, = ","

require "date"

if ARGV[0] == nil
  STDERR.puts "引数が足りません"
  STDERR.puts "例:$ ./trunk/cl2sigoto-goukei.rb ~/trunk/ChangeLog"
  exit 0
end

entry = {}
#p lioe
goukei = 0

while line = ARGF.gets

### print line
  if /^Title|^Last|^Visi|^Format|^\./ =~ line then
# p line
  elsif /^(Date: (\d{8}))/ =~ line then # 日付をキープ
    d = $2 # = year-month-day
            date = Date.parse(d)
# puts date
            print date," akapy <akapy@coz>"
# p d2

  else

         print line
  end
end


cels2fahr [rubyの勉強][修行]

一番簡単に
cels2fahr-1.rb

def cels2fahr(cels)
  fahr = cels * 9 / 5 + 32
# print("Kashi:",fahr,"\n")
  print("Sesshi:",cels,"\t","Kashi:",fahr,"\n")
end

cels2fahr(3.0)

コマンドラインからデータを入力すると
cels2fahr-2.rb
def cels2fahr(cels)
  fahr = cels * 9 / 5 + 32
  print("Sesshi:",cels,"\t","Kashi:",fahr,"\n")
end

cels = ARGV[0]
p cels
cels2fahr(cels.to_f)

解答はhttp://www.notwork.org/sbcr-ruby/answer/にあるらしい。
4問全部終わったら見てみるか。
どの程度合っていることやら。

今日のruby [rubyの勉強][chalow-rb]

#!/usr/local/bin/ruby
$KCODE="EUC"
# $pat = /#{ARGV.shift}/
while line = ARGF.gets
#   if $_ =~ $pat
#      # マッチした部分の前後にエスケープシーケンスを埋め込む
#      line.gsub! $pat, "#{st}\\&#{en}"
#      line.gsub(/#/,"#")
#      print "\t\t\t\t###",line                               # (TAB)(TAB)(TAB)###各行
#      print "  ",line.sub(/(?:\r|\r\n|\n)\z/, ""),", ,\r\n"   # __(改行文字削除した行),_,改行
#      print line.gsub(/#/,"#")
#      print line.gsub(/,/,"[かんま]")
      print line.gsub(/\t/,"        ")                       # TABを空白8文字に変換
#   end
end

cl2kaimono-itiran-csv.rb [rubyの勉強][chalow]

cl2moneycsv.plを改造して[買物ログ]部分だけをcsv化できた。
これで確定申告に間に合いそうだ。

svn add cl2kaimono-itiran-csv.rb しておいた(笑)
最後は表計算ソフトが必要なんだけどOpenOffice.orgは重過ぎるしな。印刷もしたいし。
Winの123かな。
Linuxな表計算ソフトと、印刷は今後の課題としよう。

cl2kaimonocsv.rb [修行][rubyの勉強][chalow]

[src]
#!/usr/bin/env ruby
$KCODE="EUC"
#
##!/usr/bin/env perl
# $Id: ChangeLog 1250 2007-06-05 14:58:37Z akapy $
# ChangeLog メモで家計簿!
# ref. <http://nais.to/~yto/doc/zb/0016.html#kakeibo>
#
# ■フォーマット
#買a物ログ:
# ^\t[費目][スペース][コメント][金額]$
# - スペースは半角でも全角でも良い。
# - 金額は半角数字。桁カンマは入れてはいけない。
#
# ■注意
# - 日本語コードは EUC を仮定
# - Excel に読み込ませる前に文字コードを Shift-JIS に変換する必要あり
#
# ■記述例&実行例
#
# $ cat ChangeLog
# 2003-08-02 YAMASHITA Tatsuo <yto@example.com>
#
# * できごと: だらだらしてた。
#
# * p:買a物ログ:
# 食 スーパー 1050
# 本 コンビニで雑誌 380
#
# 2003-08-01 YAMASHITA Tatsuo <yto@example.com>
#
# * できごと: 川崎で映画。
#
# * p:買a物ログ:
# 外 ファーストフード 525
# 遊 映画 2000
# 交 川崎往復 420
# 食 スーパー 780
#
# 2003-07-31 YAMASHITA Tatsuo <yto@example.com>
#
# * できごと: 渋谷に出掛けた。
#
# * p:買a物ログ:
# 外 レストラン 3000
# 交 渋谷往復 640
# 雑 ペンとメモ帳 550
#
# $ cl2moneycsv.pl ChangeLog
# , 外, 食, 交, 遊, 本, 音, 雑, 衣, 他
# 2003.07.31,3000, 0, 640, 0, 0, 0, 550, 0, 0
# 2003.08.01, 525, 780, 420,2000, 0, 0, 0, 0, 0
# 2003.08.02, 0,1050, 0, 0, 380, 0, 0, 0, 0
# $ cl2moneycsv.pl -m ChangeLog (←月毎に集計)
# , 外, 食, 交, 遊, 本, 音, 雑, 衣, 他
# 2003-07,3000, 0, 640, 0, 0, 0, 550, 0, 0
# 2003-08, 525,1830, 420,2000, 380, 0, 0, 0, 0
# $ cl2moneycsv.pl -m ChangeLog | nkf -s > kaimono.csv

# use strict;

# 費目 an item of expendidure
#my @lioe = ('外', '食', '交', '遊', '本', '音', '雑', '衣', '他')
lioe = ["外","食","交","遊","本","音","雑","衣","他"]
#lioe = %w(外 食 交 )

inside_flag = 0

entry = {}
p lioe

#while (<>) {
#while <>
while line = ARGF.gets
    if /^((\d{4}-\d\d)-\d\d)/ =~ line then # 日付をキープ
    date = $1 # = year-month-day
# $date =~ s|-|.|g # for Excel
# p date
    elsif /買a物ログ:/ =~ line then # 家計簿データ記述ブロックの始まり
inside_flag = 1
    elsif inside_flag == 1 then # ブロック内
if /^\s*$/ =~ line and inside_flag == 1 then # ブロックの終わり
    inside_flag = 0
else # /^\t(.+?)(\s|\xa1\xa1).*(\s|\xa1\xa1)(\d+)$/
  kamoku = $1
  naiyou = $2
  kingaku = $3
  p date,line.chomp.split(nil)
# p date,kamoku,naiyou,kingaku
  # $1,$2,$3,$4,$5
       end
    end
end

=begin
85,89,92
#print " " x 10, ", ", join(', ', @lioe), "\n"
p " " x 10, ", ", join(', ', lioe), "\n"

#foreach date (sort keys entry) {
# print "$date,"
# print join(',', map {sprintf "%4d", $entry{$date}{$_}} @lioe), "\n"
#}
date.times
   p date ;
end

=end
[src]


euc変換 [rubyの勉強]

work/euc_changelog.sh

#!/bin/bash
./to_euc_changelog.rb ~/trunk/ChangeLog
<<
work/to_euc_changelog.rb
>>
#!/usr/local/bin/ruby -i.bak
require "kconv"
while line = ARGF.gets
   print Kconv.toeuc(line)
end

最終更新時間: 2012-08-07 05:58