Hatena::ブログ(Diary)

マイノート

2015-02-28

FIBA タスクフォース「JAPAN 2024 TASKFORCE」

http://www.japan2024.jp/

今後の動きとスケジュール

JAPAN 2024 TASKFORCE」は、2015年6月までに以下の3つの大きな課題について関係者間での合意形成を目指します。

http://www.japan2024.jp/img/chart.png

主に上記の1〜3それぞれのA〜Cを議論し、その経過を公開してまいります。

http://www.japan2024.jp/img/schedule.png


林修の金曜言葉塾〜梅

http://www.tv-asahi.co.jp/onair/info.php?b=yajiplus&id=5677

東風吹かば 匂ひおこせよ 梅の花 あるじなしとて 春を(な)忘れそ

それから 「松竹梅」 という言葉、これも中国から来ています。

      

寒さの中 花を咲かせる梅と、寒くても緑を保つ 松 と 竹、中国では 「歳寒三友」 と呼ばれました。厳しい時にも離れることのない三人の友という意味で、ですからそもそも 「松竹梅」 には、上下の隔てはありませんでした。

グローバル変数

関数の中でグローバル変数をいじるプログラムは寒気がする。

AWKでは、関数定義のなかの引数は局所的(local)で、その他のすべての変数は大域的(global)らしい。。


(list fmt.awk)

#!/usr/bin/awk -f

/./  { for (i=1; i<=NF; i++) addword($i) }
/^$/ { printline(); print "" }
END  { printline() }

function addword(w){
  if (length(line) + length(w) > 60)
    printline()
  line = line " " w
}

function printline(){
  if (length(line) > 0){
    print substr(line, 2) #先頭の空白を除去する
    line = ""
  }
}

https://books.google.co.jp/books?id=to6M9_dbjosC&pg=PA229&lpg=PA229&dq=awk+fmt+60&source=bl&ots=3_I2GgqZ_c&sig=3DciodYOJkEw1qvHhbPFGXVcPwY&hl=ja&sa=X&ei=3cLxVN6iG4S1mAXk0IHQBw&ved=0CCsQ6AEwAg#v=onepage&q=awk%20fmt%2060&f=false


上のプログラムを書き直してみる。

(list fmt2.awk)

#!/usr/bin/awk -f

/./ {
      for(i=1; i<=NF; i++) {
        if( length(line) + length($i) > 60){
          print substr(line,2)
          line = " " $i
        }else{
          line = line " " $i
        }
      }
    }
/^$/{
      print substr(line,2)
      print ""
      line = ""
    }
END {
      print substr(line,2)
    }

なんともいえない微妙なできばえ。。。



(list fmt3.awk)

#!/usr/bin/awk -f

BEGIN { line = "" }
/./ {
      for(i=1; i<=NF; i++){
        line = addword(line, $i)
      }
    }
/^$/{
      line = printline(line)
      print ""
    }
END {
      printline(line)
    }

function addword(line, w){
  if( length(line) + length(w) > 60 ){
    printline(line)
    return " " w
  }else{
    return line " " w
  }
}

function printline(line){
  if (length(line) > 0){
    print substr(line,2)
  }
  return ""
}

実行してみる。

$ more sample.txt
AWK is an interpreted programming language designed for text processing and typically used as a data extraction and reporting tool. It is a standard feature of most Unix-like operating systems.

AWK was created at Bell Labs in the 1970s,[2] and its name is derived from the family names of its authors  Alfred Aho, Peter Weinberger, and Brian Kernighan.
$ ./fmt.awk sample.txt
AWK is an interpreted programming language designed for text
processing and typically used as a data extraction and
reporting tool. It is a standard feature of most Unix-like
operating systems.

AWK was created at Bell Labs in the 1970s,[2] and its name
is derived from the family names of its authors Alfred Aho,
Peter Weinberger, and Brian Kernighan.

$ ./fmt2.awk sample.txt
AWK is an interpreted programming language designed for text
processing and typically used as a data extraction and
reporting tool. It is a standard feature of most Unix-like
operating systems.

AWK was created at Bell Labs in the 1970s,[2] and its name
is derived from the family names of its authors Alfred Aho,
Peter Weinberger, and Brian Kernighan.

プロセス置換機能を使って結果を比較する

$ diff <(./fmt.awk sample.txt ) <(./fmt3.awk sample.txt )

http://d.hatena.ne.jp/tigerii/20120826/1345952762

2015-02-23

銀座線全面リニューアル

http://www.tokyometro.jp/ginza/#


銀座線渋谷駅を130m動かす

http://kenplatz.nikkeibp.co.jp/article/const/news/20130626/621731/

同時に進む駅ビル建て替えや駅前広場整備などの事業と調整しながら、10年度の着工から10年以上をかけた一大移設プロジェクトだ。その間、銀座線の営業は止めない。

「工程や作業スペースなど各事業者間の調整だけで、1年以上かかった」

2015-02-21

2015-02-18

2015-02-16

2015-02-13

2015-02-08

2015-02-05

リファレンス(perl)

http://gihyo.jp/dev/serial/01/perl-hackers-hub/002001


ブレースを使ったデリファレンス

変数$arefに入っているリファレンス配列としてデリファレンスするには,「@{$aref}」と書きます。


無名配列

$aref = [1, 2, 3, 4, 5];

http://image.gihyo.co.jp/assets/images/dev/serial/01/perl-hackers-hub/0020/004.jpg


How to reference a split expression in Perl?

http://stackoverflow.com/questions/8444661/how-to-reference-a-split-expression-in-perl


(リスト:test_ref.pl)

#!/usr/bin/env perl

while(<>){
  chomp();
  push(@records,[split(/\s+/)]);
}

@sorted = sort { @$a[1] <=> @$b[1] ||
                 @$b[0] <=> @$a[0] } @records;

foreach $r (@sorted){
  print @$r,"\n";
}

$ cat sample.txt 
4 3 2 1
3 3 2 1
2 2 4 2
1 2 3 4

$ ./test_ref.pl sample.txt 
2242
1234
4321
3321

2015-02-02

2015-01-30

2015-01-25

2015-01-21

2015-01-18

2015-01-15

2015-01-12