過去の日記

2019-06-30 [長年日記]

天冥の標 [novel]

正味1週間ぐらいで5冊読み進めちゃって、しばらく飽和状態になってた。
道中はめちゃくちゃ面白くて一気に突き進んだのだ。

天冥の標IX PART1──ヒトであるヒトとないヒトと (ハヤカワ文庫)

  • 作者: 小川 一水
  • 出版社/メーカー: 早川書房
  • 発売: 2015-12-18
  • ASIN: 4150312133
  • メディア: 文庫
  • amazon.co.jp詳細へ

天冥の標IX PART2 ヒトであるヒトとないヒトと(ハヤカワ文庫JA)

  • 作者: 小川 一水
  • 出版社/メーカー: 早川書房
  • 発売: 2016-10-21
  • ASIN: 4150312311
  • メディア: 文庫
  • amazon.co.jp詳細へ

天冥の標X 青葉よ、豊かなれ PART1 (ハヤカワ文庫JA)

  • 作者: 小川 一水
  • 出版社/メーカー: 早川書房
  • 発売: 2018-12-19
  • ASIN: 4150313555
  • メディア: 文庫
  • amazon.co.jp詳細へ

天冥の標Ⅹ 青葉よ、豊かなれ PART2 (ハヤカワ文庫JA)

  • 作者: 小川 一水
  • 出版社/メーカー: 早川書房
  • 発売: 2019-01-22
  • ASIN: 4150313598
  • メディア: 文庫
  • amazon.co.jp詳細へ

天冥の標X 青葉よ、豊かなれ PART3 (ハヤカワ文庫JA)

  • 作者: 小川 一水
  • 出版社/メーカー: 早川書房
  • 発売: 2019-02-20
  • ASIN: 4150313628
  • メディア: 文庫
  • amazon.co.jp詳細へ


前の巻を読んでいる時「ダダーのノルルスカイン」で、ダダーが種族名でノルルスカインが個体名というような言説にわざわざ強調すること? と思ってたけど、あーそういうことかー、みたいな気になった。

ちりばめられた要素が収斂して幕引きに向かう過程というのは実はあまり好きじゃないのが自覚されたりした。
ミステリィの好きなところはその過程が瞬時に起きることが多いことなのかも。

虚構推理 スリーピング・マーダー [novel]

琴子嬢も意地が悪い、などと思ったりもしたが、読了後はそうかそうじゃないのかー、と思い直すなど。

虚構推理 スリーピング・マーダー (講談社タイガ)

  • 作者: 城平 京
  • 出版社/メーカー: 講談社
  • 発売: 2019-06-21
  • ASIN: 4065161576
  • メディア: 文庫
  • amazon.co.jp詳細へ

2019-05-20 [長年日記]

Linuxでファイル大量移動 [tech]

とかで検索すると

find FROM_PATH -type f  | xargs -I {} mv {} TO_PATH

みたいなのが検索結果の上の方にヒットするけど、
いやいや -I を指定したら -L 1 が自動的に適用されて、ファイルの個数分 mv コマンドが実行されるからめちゃくちゃ効率悪いよね??
という気持ちになる。

mv コマンドが、移動先を先頭にとればいいのだから……と調べてみたら、-t オプションがあった。

  • t, --target-directory=DIRECTORY

全ての SOURCE 引数を DIRECTORY に移動する

ということで、

find FROM_PATH -type f  | xargs -n 1000 mv -t TO_PATH

とかした方が、ファイル1000個につき mv コマンドが1回になって効率がよい。
私に限って言えばこちらの方が都合がよいことが多い。

ただしファイル名やディレクトリ名に空白が入っていない場合に限る。
一般論として、様々な条件下でも十分に動くコマンドとしては -I{} を使う方法を紹介するのはリーズナブルで、「間違い」とか「そんなもの紹介しちゃだめ」ということでは決してない。


2019-05-17 [長年日記]

指定必須なキーワード引数 [Python]

def foo(a, b, *, c):
    print(a)
    print(b)
    print(c)

と定義すると、

>>> foo(1, 2, 3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: foo() takes 2 positional arguments but 3 were given

foo() takes 2 positional arguments but 3 were given
>>> foo(1, 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: foo() missing 1 required keyword-only argument: 'c'

foo() missing 1 required keyword-only argument: 'c'

となって、キーワード引数なしで呼び出せなくなる。


>>> foo(1, 2, c=3)
1
2
3

という呼び出し方をする必要がある。


つまり、c は"キーワードで指定することが必須"でかつ"デフォルトの値を持たない"引数になったわけ。


2019-04-02 [長年日記]

天になき星々の群れ [novel]

昔のジュニア小説の愉しさ、懐かしさ。

天になき星々の群れ フリーダの世界 (角川スニーカー文庫)

  • 作者: 長谷 敏司
  • 出版社/メーカー: KADOKAWA / 角川書店
  • 発売: 2013-10-01
  • ASIN: B00FZH3N52
  • メディア: Kindle版
  • amazon.co.jp詳細へ

大事なところで描写が荒い感じもしたけど、よかった。

それはそうと「あなたのための物語」がまだ読めてないのだが……。


2019-03-26 [長年日記]

objectのインスタンスには属性をセットできません [Python]

>>> x = object()

>>> x.foo = 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'foo'

'object' object has no attribute 'foo'

なんで? と思った。

例えばobjectを継承しつつも一切なにもしないクラスを作って

>>> class Foo: pass

>>> x = Foo()

>>> x.foo = 1

とするのはなにも問題ない。

なぜobjectに属性を作る機能がないのか?
なぜobjectを継承しつつ特に何も動作を変えないクラスには属性を作る機能があるのか?
などということに長いこと引っかかっていたのだが、ドキュメントを読んでいて見つけてしまった。

注釈
object は __dict__ を 持たない ので、 object クラスのインスタンスに任意の属性を代入することはできません。
https://docs.python.org/ja/3.6/library/functions.html#object

しっかり明記してあった。

考えると、objectはすべてのクラスの親クラスなので、objectが__dict__を持っていたりすると

>>> a = int(100000000)

>>> b = int(100000000)

>>> a is b
False

>>> a.x = 'なんとか'; b.x = 'かんとか'  # これは実際にはエラーになる

だとか

>>> x = 1

>>> x.hoge = 'なんとか'  # これも実際にはエラーになる

だとか、組み込み型のあらゆる値に勝手に属性を差し込めることになってしまうので確かによくなさそう、と考え直したのだった。