« 2015年3月 | トップページ | 2015年5月 »

2015年4月29日 (水)

[本] はじめよう! 要件定義(羽生章洋)

はじめよう! 要件定義 ~ビギナーからベテランまで

あまりにも読みやすい本なので、さらりと読んでしまった。 その分、右から左に流してしまったように思うので、あと2、3回読み返した方がいいような気がする。

この本では、要件定義は後半だけで、それまでのところは準備編となっている。 だから、システムを提供する側は後半だけ参加すればいいかというと、それでは駄目で 準備の段階から絡んでいないと駄目だろうなと思った。

要件定義の仕上げの章は良かった。 要件定義の検証という考え方が新鮮だったし、方法も実践的でわかりやすかった。

小難しい要件定義の本よりも、この本を片手に要件定義を進めた方がいい気がする。

というか、自分が、この本が役に立つ状況にいない無職の身なので、先にそっちをどうにかしないといけないのだった。

| | コメント (0) | トラックバック (0)

2015年4月26日 (日)

[日記] 第6回翻訳ミステリー大賞

第6回翻訳ミステリー大賞決定。


『容疑者』は読んでいないので妥当かどうかわからないけど、他の4作品の投票結果は、順当だと思った。

| | コメント (0) | トラックバック (1)

2015年4月25日 (土)

[JavaScript] React.js

ちょっとだけ触れてみた。

いろいろGoogleで情報を漁ってみたが、一番わかりやすい入門中の入門は 入門 React.js その3 Hello world!してみよう だった。

あと、まだ最初の方をちょびっと読んだだけなので、何とも言えないが Learning React.js がわかりやすそう(英語)。

ただし、react-0.13.2 の場合は、説明の例にある

React.renderComponent(
  ...
)

は、

React.render(
  ...
)

と読み替える必要がある(多分)。

| | コメント (0) | トラックバック (0)

2015年4月21日 (火)

[日記] 電子レンジの買い替え

電子レンジが壊れたので、買い替えた。
10年以上使っていたので、まあ、寿命なんだろうな。
新しいのは、前のより音が小さい。
古い方は廃品回収に。
次、壊れるとしたら、冷蔵庫か。

| | コメント (0) | トラックバック (1)

2015年4月18日 (土)

:[本] 『ビブリア古書堂の事件手帖 (6) ~栞子さんと巡るさだめ~』(三上延)

ビブリア古書堂の事件手帖 (6) ~栞子さんと巡るさだめ~ (メディアワークス文庫)

『栞子さんがすがるような涙目で俺を見上げた。だいぶ追い詰められている。あと可愛い。』

図書館の次は古本屋である。別に意図してそうした訳ではなくて、偶然なんだけど。こちらのシリーズは10年も待つことなく6作目になる。

今回は太宰治。栞子さんを階段から突き落としたあの田中が再登場。太宰治の稀覯本を探すミステリ。脅迫紛いの手紙が登場したり、絶対不可能だと思われているような状況から、稀覯本の盗難事件が登場したり、ミステリとしての道具立てもしっかりしている。

殺人事件が起こらないから、一見して、古本にまつわる日常の謎ミステリのように見えるが騙されてはいけない。

古書を巡るドロドロした人間関係が徐々に明らかになるし、古書に取りつかれてしまった人間の業みたいなものが相変わらず描かれているし、アスキー・メディアワークスの文庫とは思えない。栞子さんのあのキャラを取り去った後に残るのは、結構、ハードなミステリである。 更に、今回は、事件の裏で糸を引く人物がいたり、栞子さんの母親が暗躍したり、意外な人物同士に深い因縁があったり、ありそうだったりして、謀略小説顔負けのプロットだった。

シリーズもいよいよ大詰めに近づいているようで、次も見逃せない。

| | コメント (0) | トラックバック (0)

[本] 『花野に眠る』(森谷明子)

花野に眠る (秋葉図書館の四季)

連作短編風長編ミステリ。図書館を舞台にした日常の謎ミステリ。悲しくも優しいミステリだった。 前作『れんげ野原の真ん中で』から10年。前作を読んで、ぜひ、続編を読みたいなと思ったことだけは覚えているのだが、内容も登場人物もすっかり忘れていた。10年も待たされるとは思わなかった。

連作短編形式で、全体として1つの長編ミステリになっている構成。

図書館を舞台にしているので、短編の中には、本に絡んだ謎解きもある。必ずしもフェアプレイの謎解きとは言えないかも知れないが、司書ならではの豊富な知識を活かして、図書館を訪れる人たちの疑問に応えていくところは読んでいて楽しい。わずかに記憶に残っている昔読んだ本の内容からタイトルを導き出し、「この本ではないですか」と差し出して、どうやって本を特定できたのか種明かしをしてくれるところがミステリっぽい。

それだけでは無くて、山中に埋められた白骨が見つかったり不穏な空気が漂い、白骨に隠された悲しい謎が解き明かされるなど、本格ミステリしている。

作品中に登場する本や作者を知らないことが多いのだが、今回は、違った。学生時代に読んだエッセイや友人と行った絵画展のことなど懐しく思ってしまった。絵本を図書館に借りに行ってみようかな。

どうでもいいことだけど、なぜか、能勢さんが「オレ」というのだけは馴染めないんだよなあ。

| | コメント (0) | トラックバック (0)

2015年4月14日 (火)

[Ruby] rbenv の install コマンド

複数バージョンを指定することはできないのか。


$ rbenv install 2.1.6 2.0.0-p645
Usage: rbenv install [-f] [-kvp] <version>
rbenv install [-f] [-kvp] <definition-file>
... (snip)
$

| | コメント (0) | トラックバック (0)

2015年4月13日 (月)

[Java][Ruby] 配列の偶数番目の要素を抜き出す

配列の偶数番目の要素だけを抜き出すシンプルな書き方ってどんな書き方なんだろうか?

import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
import java.util.stream.IntStream;
public class Even {
    public static void main(String ... args) {
        List<String> ary = new ArrayList<String>(Arrays.asList("a","b","c","d","e"));
        IntStream.range(0, ary.size())
            .filter(e -> e % 2 == 1)
            .mapToObj(e -> ary.get(e))
            .forEach(e -> System.out.println(e));
    }
}

Ruby で書くと

ary = ["a", "b", "c", "d", "e"]
ary = 1.step(ary.size - 1, 2).map{|e|
  ary[e]
}
puts ary

Ruby だと、with_index を使う方法がネットで見つかった。

ary = ["a", "b", "c", "d", "e"]
ary = ary.select.with_index{|e, i|
  i % 2 == 1
}
puts ary

| | コメント (0) | トラックバック (0)

2015年4月12日 (日)

[プログラミング] CodeIQ や paiza の問題とRuby

Ruby には、Array#map, Array#uniq, Array#group_by, Array#sort, Array#reduce, Array#permutation などなど
便利なメソッドがいろいろあるので、CodeIQ や paiza の問題を解きやすい。
だが、組み合わせが何通りあるかをカウントするような問題は、メソッドだけを素直に(何も考えずに)組み合わせても駄目なときがある。
ちゃんと考えてプログラミングしないと時間内に処理が終わらない。
まあ、それでもRubyで書く方が楽だと思うのだけど。

| | コメント (0) | トラックバック (0)

2015年4月11日 (土)

[Java] stream のソート

List をソートするときに stream() を使うと sorted()。
使わない場合は、sort()。
紛らわしい。


import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
public class Stream {
public static void main(String ... args) {
List<Integer> ary = new ArrayList<Integer>(Arrays.<Integer>asList(3,1,4,2));
/*
ary.sort((x,y) -> y - x);
for (int i : ary) {
System.out.println(i);
}
*/
ary.stream()
.sorted((x, y) -> y - x) // not sort()
.forEach((x) -> System.out.println(x));
}
}

| | コメント (0) | トラックバック (0)

2015年4月10日 (金)

[Java] ドット(.)区切りの文字列の分割

Javaでドット(.)区切りの文字列を分割しようとしてはまった。

public class Split {
    public static void main(String...args) {
        String[] ary;
        String s1 = "a.b.c";
        ary = s1.split(".");
        System.out.println(ary.length);
        for(String s : ary) {
            System.out.println(s);
        }
    }
}

これをコンパイルして実行するとこうなる。

$ java Split
0

Rubyだと

s1 = "a.b.c"
ary = s1.split(".")
puts ary.size
ary.each{|s|
 puts s
}

を実行するとこうなる。

$ ruby split.rb
3
a
b
c

Java の String.split の引数は文字列ではなく正規表現として解釈される。 ドット(.)は正規表現では任意の文字を指すのでドット(.)として扱うためにはエスケープしないといけない。

public class Split {
    public static void main(String...args) {
        String[] ary;
        String s1 = "a.b.c";
        ary = s1.split("\\.");
        System.out.println(ary.length);
        for(String s : ary) {
            System.out.println(s);
        }
    }
}

これを実行すれば、

$ java Split
3
a
b
c

| | コメント (0) | トラックバック (0)

2015年4月 9日 (木)

[Ruby] Date の差分

Date の差分が Rational オブジェクトになることを知らなかった。

$ cat datediff.rb
require 'date'
d = Date.new(2015, 4, 9) - Date.new(2014, 4, 9)
p d
p d.class
$ ruby -v datediff.rb
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
(365/1)
Rational

てっきり Fixnum オブジェクトだと思い込んでいた。

ChangeLog-1.8.0 に

fix at changing Date module ( Date is changed Fixnum to Rational )

とあるから、この頃(2002年頃)に変わったのか...。

2002年頃から自分の Ruby に対する知識が進歩していないのかと思うとかなりショック。

| | コメント (0) | トラックバック (0)

2015年4月 7日 (火)

[Linux] Windowsで使ったusbメモリをマウントするときのファイル名の文字化け対策

mount するときに iocharset=utf8 を指定すると問題なさそう。

$ sudo mount -o iocharset=utf8 /dev/sdb1 /mnt/usbhd/

| | コメント (0) | トラックバック (0)

[日記] LibreOffice の Calc

Excel みたいなルビを振る機能がないっぽい。惜しい。 

| | コメント (0) | トラックバック (0)

2015年4月 2日 (木)

[Ruby] Array#select と Array#take_while

Array#select と Array#take_while の結果が同じになる場合、Array#take_whileを使った方が処理が速い。

$ cat ary.rb
ary = (0..1000000).to_a
t0 = Time.now
ary.select{|i| i < 50}
t1 = Time.now
ary.take_while{|i| i < 50}
t2 = Time.now
p t1 - t0
p t2 - t1
$ ruby -v ary.rb
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
0.043408633
0.000618273

Array#select は

Returns a new array containing all elements of ary for which the given block
returns a true value.

なので、必ず配列の全部の要素にアクセスする。

Array#take_while は

Passes elements to the block until the block returns nil or false, then stops
iterating and returns an array of all prior elements.

なので、配列の要素を使ったブロックの評価がnil かfalseになった時点で 中断し、それ以降の要素にはアクセスしない。

| | コメント (0) | トラックバック (0)

« 2015年3月 | トップページ | 2015年5月 »