読者です 読者をやめる 読者になる 読者になる

peketaminの日記

その辺のプログラマーです。うーむ…。

?uestlove

Jimmy Fallon の番組に出てる Questlove。

ヒップホップグループ The Rootsのドラマーで、リー・アンドリュースがお父さん。

Taylor Macferrinに続き、チルですこしオールドスクールな感じの。

買おうと思ったらデジタル音源は売ってない…?

マクロスの動画が関連で出てきたけど何か関係あるのかな。

頭から何か飛び出てるのが気になる。アフロヘアーに刺さってるクシ(コーム)らしい。

映画「実芭蕉」を観た

映画

中盤ぐらいまで観てて辛かった。なんか、自分の経験の中にある闇を露わにされたというか。悶える。が、良かった。

多感な時期に女性から「気持ち悪い」ないしその類を言われたことのある男性にはオススメしたい。山本直樹の世界が好きな人にも(本作品自体は山本直樹とは何の関係もないが)。

この作品が合わない人も大勢いると思う。

Twitter情報

coco.to

ここで観た (400円ぐらい)

video.rakuten.co.jp

ネタバレになるので何も書けないけど、18禁のシーンがあります。青春Hシリーズ第30弾だし。しかし (略)

パッケージちゃんと見てなかったけど、今見るとポルノ映画っぽいパッケージだったことに気づいた…。手に取るの少し躊躇いますね。てかこれ、ポルノ映画なのかな。んー。そうだとしてもピンク映画監督時代の相米慎二的なというか、J文学っぽい映画性はあると思う、多分…。

それはそうと、沖田修一の「鷹匠」、オンライン上では見れない? テレビでやってたのを観れたのは誠に僥倖でした、ということでしょうか。。。

www.shortpiece.com

(化けた)

鷹匠」は、お見合いの話。ちょっと前の年代だけど今風の。これを観て婚活しようと思わせられた、そういうきっかけになった短編映画。 (婚活の最初の契機は友人の結婚式だったけど)

iOS10のロック画面から緊急通報する方法

(2016/9/22追記)

指紋認証に登録してない指でホームボタン押せば普通に出てくることに気づきました///


指紋認証がデフォになったようで、パスコード入力画面の下にあった「緊急通報」画面へのリンクが見当たらなくなった。

とりあえず左にスワイブするとウィジェット画面になるので、ここで適当なリンクをタップするとパスコード入力画面になるので、下に通報画面へのリンクが表示される。

ウィジェット画面の上にサーチバーがあるので、ここから適当なアプリを押すなり、適当な言葉「あ」とか入れて検索結果からアプリ立ち上げ導線を出すなりして、タップすればパスコード入力画面に行く。

実装的にも画面設計的にも、緊急通報画面がパスコード入力画面に紐付いてるので直さなかったのか直せなかったのか分からないけど、あまり使われない機能だし、導線遠くなっても問題無いのかもね。

特に日本では。

あと一応、siriで電話を許可してればホーム長押しで音声ダイヤルによっても通報は可能だと思う。

macbookを買い換えようかと悩んだ

今使っている macbook pro が段々性能不足になってきたので、買い替えを検討。

最新だと macbook になると思うのでレビューを見てた。

review.kakaku.com

pro に比べると、

  • iPhoneを繋いで充電してたりするとバッテリの減りが早い (バッテリセルの容量がproに比べて小さいので)
  • CPUがちょっと弱め (ブラウザで重めの操作するとわりとカラーホイール回るらしい)
  • 充電ケーブル接続が magsafe じゃないので引っ掛けたりすると暴れる危険性

安全設計面からするとmagsafeは素晴らしい発明だっただけに、usb-cを差し込む形になったのは残念…!!

「『ジョブズだったら』などと考えるな」とジョブズが最後にAppleを去るときに言い残したらしいが、「製品をとにかくユニバーサルにすべし」というApple初期からの哲学においては、彼の妥協しない点は製品開発にとって大きな強みだったように思うが…故障が多かったとかかななのかなー?

時期的には、うー、proが出たのは去年だし、来年なんか発表ありそうだし…。

いや、欲しい時が買い時ではあるんですが。

もうちょっと悩む。。。

Hotpop.com ドメインを買おうと思ったのだが

Windows95 でネットやってたときは大変お世話になったメールサービスだった。
今はドメインセール中。セール中といっても、 afternic というところに電話で問い合わせなければいけないみたい。

個人が押さえていて、取り引きによって売買するらしい。ううむ。
ということは多分、もともとのサービス運営者さんが押さえているのかな…。

まぁ、でも使ってないし、3, 000円ぐらいなら買おうかな、と思って調べていたら、

ということで、多分、無理…?
ログイン出来なくなった古い Yahoo Japan のアカウントのログイン情報をメール経由で取得したかったのが動機。
[アカウント]@yahoo.co.jp にメールをなげてもエラーメールが返ってきてしまう。

表口から再有効化してやるしかなかったぽいのだが、ここまでか…。

過去にバックアップしたハードディスクのデータを洗ってみたけど、当時の登録情報はなかった。コマンドはこんな感じ。

ag -l -0 yahoo.co.jp | xargs -0 ag [アカウント名]

いやー別にもうメインアカウントはそっちじゃないからいいんですけどね。いいんですけど。惜しい。

celery-once の retry タスクにおける注意点

celery Python

Celery を使った開発をしていて、重複した task がキューイングされると困る、というケースがある。

重複したtaskがキューイング、というのは、つまり、キューがワーカー上で実行されたタイミングで、(複数)ワーカー上の複数のプロセス上で同じ処理が同時に走ったりするケース。

なんど処理してもべき等な結果が得られる処理ならデータの整合性的には問題はないが、処理負荷が問題になるケースが有る。

例えば、

celery beat を使っていて、周期的にtaskのキューイングを行っている場合、ワーカーが想定時間でキューを消費していくのであれば問題ない。 しかし、何らかの不具合で長時間ワーカーが停止していて、ブローカーは動いていた場合、同じタスクのキューが溜まる。

この状態で、ワーカーが再スタートしたとき、堰を切ったようにキューが各ワーカーにsubscribeされ、いっきに複数の同じ処理が走ったりする。

これを防ぐために、タスクが処理中の場合、同じシグネチャのキューを入れないライブラリとして、celery_onceが便利なのですが、

github.com

のプルリクを見ると、エラー時にリトライするようなタスクだと、after_returnされない→タスクのステータスが RETRY のまま…? (FAILURE にもなってくれない) ということで、

READMEに書いてある github.com の通り、

unlock_before_run
---------------------

By default, the lock is removed after the task has executed (using celery's `after_return <https://celery.readthedocs.org/en/latest/reference/celery.app.task.html#celery.app.task.Task.after_return>`_). This behaviour can be changed setting the task's option ``unlock_before_run``. When set to ``True``, the lock will be removed just before executing the task.

**Caveat**: any retry of the task won't re-enable the lock!

.. code:: python

    @celery.task(base=QueueOnce, once={'unlock_before_run': True})
    def slow_task():
        sleep(30)
        return "Done!"

unlock_before_run オプションを入れなければならない。


Celery を 3.1.23 へアップデートした

タスクの順次実行を行う、 chord を使っていたときに

[2016-09-17 16:27:46,495: ERROR/Worker-3] Chord 'd260afd3-ee61-4968-a3e4-b4f741ad1dbe' raised: "RuntimeError('OrderedDict mutated during iteration',)"
Traceback (most recent call last):
  File "/Users/peketamin/.pyenv/versions/fuji_crawler/lib/python3.5/site-packages/celery/backends/base.py", line 566, in on_chord_part_return
    ret = j(timeout=3.0, propagate=propagate)
  File "/Users/peketamin/.pyenv/versions/3.5.1/lib/python3.5/contextlib.py", line 77, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/peketamin/.pyenv/versions/fuji_crawler/lib/python3.5/site-packages/celery/result.py", line 53, in allow_join_result
    yield
  File "/Users/peketamin/.pyenv/versions/fuji_crawler/lib/python3.5/site-packages/celery/backends/base.py", line 566, in on_chord_part_return
    ret = j(timeout=3.0, propagate=propagate)
  File "/Users/peketamin/.pyenv/versions/fuji_crawler/lib/python3.5/site-packages/celery/result.py", line 688, in join_native
    for task_id, meta in self.iter_native(timeout, interval, no_ack):
  File "/Users/peketamin/.pyenv/versions/fuji_crawler/lib/python3.5/site-packages/celery/backends/base.py", line 475, in get_many
    cache.update(r)
  File "/Users/peketamin/.pyenv/versions/fuji_crawler/lib/python3.5/site-packages/celery/utils/functional.py", line 68, in update
    for item in islice(iter(data), len(data) - limit):
RuntimeError: OrderedDict mutated during iteration

というエラーが出たので。

この対応かな?

Fix LRUCache.update for Python 3.5 by brakhane · Pull Request #2898 · celery/celery · GitHub


っていうかアレだ、Celery をちゃんと運用したいなら broker は Redis じゃなくて、 RabbitMQ 使ったほうが一番ちゃんと運用できそう…