BLOGTIMES
«Prev || 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 ·... | | Next»
2020/12/28

Ruby 3.0.0 がリリースされてた

ruby 

しばらくウォッチしていないうちに Ruby 3.0.0 がリリースされていました。
Ruby 2.7 からの変更がいろいろとある*1ので、時間をとって確認する必要がありそうです。

Ruby 3.0.0 リリース

Ruby 3.0系初のリリースである、Ruby 3.0.0 が公開されました。


at 19:36 |
2020/12/28

大五郎が消毒用アルコール転用のため休売に

covid19 

アサヒの焼酎大五郎の大容量ペットボトルが休売になるとのこと。
コロナウィルス対策で、消毒用アルコールに転用するように政府からの要請があったようです。

大五郎|ブランドサイト|焼酎|アサヒビール

新型コロナウィルス感染症の急速な拡大を受け、政府より原料用アルコールの一部を消毒用アルコール転用の要請があったため、「大五郎」を休売させていただいております。
ご理解とご協力を賜りますよう、宜しくお願い申し上げます。


    at 16:43 |
    2020/12/27

    2021 年の節分は2月2日

    astronomy 

    来年の節分は2月2日になることがニュースになっていたのでメモ。
    節分が2月3日でないのは、124年ぶりとのこと。

    暦に影響をうける春分の日秋分の日については良く取り上げられますが、節分も暦なので国立天文台暦計算室の計算に基づいて年によって変動する可能性があるんですよね。
    祝日でないので全くノーマークでしたが、これは節分に関する商品を扱っている人にとっては死活問題です。

    「節分」来年は”2月2日” 例年より1日早いのは124年ぶり | NHKニュース

    豆まきが行われる「節分」は例年、2月3日ですが、来年2021年は暦のずれの影響で1日早まり、124年ぶりに2月2日となる珍しい年になります。「節分」は「立春」の前日とされていますが、国立天文台暦計算室によりますと、暦のずれの影響で来年は「立春」が2月3日で、「節分」が2月2日になるということです。


      at 17:32 |
      2020/12/27

      date -d "1 month 1 day ago" とやると危ない!

      linux  cli 

      date コマンドは -d オプションを使うと、たとえば今から 30 日前のような相対的な日付を簡単に得ることができます。
      これについては常識みたいなものですが、今更ながら思わぬハマりポイントを見つけてしまったのでメモ。

      $ date --iso-8601=seconds 2020-12-27T16:28:55+09:00 $ date -d '1 month ago' --iso-8601=seconds 2020-11-27T16:28:55+09:00

      まず ago の挙動について、coreutils のマニュアルを確認すると、-1 を掛ける(符号を反転させる)という意味だということが分かります。
      問題は、実はこの効力が unit ごとであるということです。

      つまり1ヶ月と1日前という場合にうっかり -d "1 month 1 day ago" と書いてしまうと、1ヶ月後の1日前になってしまうことになります
      複数の単位を組み合わせる場合には ago は使わずに符号を書いた方が誤解がないですね。

      $ date --iso-8601=seconds 2020-12-27T16:28:55+09:00 $ date -d "1 month 1 day ago" --iso-8601=seconds 2021-01-26T16:28:56+09:00 $ date -d "1 month ago 1 day ago" --iso-8601=seconds 2020-11-26T16:28:56+09:00 $ date -d "-1 month -1 day" --iso-8601=seconds 2020-11-26T16:28:56+09:00

      参考

      Relative items in date strings (GNU Coreutils)

      Following a relative item by the string ‘ago’ is equivalent to preceding the unit by a multiplier with value -1.


        at 17:04 |
        2020/12/26

        運転士のコロナ感染で都営地下鉄大江戸線が通常の7割運行に

        covid19  subways 

        大江戸線の運転士のコロナ感染により、大江戸線は年明けの 1 月 11 日まで通常の 7 割運行になるとのこと。

        運転士は仮眠室や休憩室など、お互いに接触する頻度が高いのでクラスタ化しやすいということでしょうか。
        地下鉄も含めた電車は路線によって車両が違うので、他の路線の運転士から応援をもらうこともできないのでしょうね。

        都営地下鉄大江戸線の運行について | 東京都交通局

        これまで、東京都新型コロナウイルス感染症対策本部報にて報道発表してきました大江戸線清澄乗務区所属職員の新型コロナウイルス感染等の影響により、大江戸線は12月27日(日)から、通常の7割程度で運行することとしましたので、お知らせします。


          at 23:55 |

          Vanguard が今年の ETF で首位に


          Vanguardが今年の ETF の資金流入量でトップになったようなのでメモ。
          全体のシェアとしてはトップの BlackRock にまだ 10% 近く差があるものの、今年は Vanguard が大きく巻き返した年になったようです。

          バンガード、今年のETF資金流入で首位-ブラックロックなど上回る - Bloomberg

          ETFへの資金流入でバンガード・グループは2013年以来初めてブラックロックを上回る見込みだ。ブルームバーグの集計データによると、バンガードには今年これまでに過去最高となる1940億ドルの資金が流入した。


            at 23:40 |
            2020/12/25

            pipenv で作ったプログラムを systemd でデーモン化する

            python  systemmanagemant 

            pipenv を使っで作った Python のプログラムを Systemd でデーモン化してみました。

            基本的には /etc/systemd/system/ ディレクトリに .service ファイルを作って、起動すれば OK ということになりますが、問題は ExecStart の部分をどのようにするかということでしょうか。この部分を書くためには pipenv の場所などを調べる必要があるのですが、いちいちあれこれ悩まなくて済むように、.service ファイルの生成スクリプトを作ってみました。
            daeon.py の部分は自分のスクリプト名に合わせて書き換えてください。

            cat <<EOF >"$(basename $(pwd dirname)).service" [Unit] Description=Python Daemon With Pipenv After=network.target [Service] Type=simple Restart=always WorkingDirectory=`pwd` ExecStart=`pipenv run which pipenv` run python daeon.py User=`whoami` Group=`groups | cut -d ' ' -f 1` [Install] WantedBy=multi-user.target EOF

            あとは .service ファイルにシンボリックリンクを張って、daemon を有効化してやれば OK。
            慣れてくれば init.d と同じように簡単にデーモン化できますね。

            sudo ln -s "$(basename $(pwd dirname)).service" /etc/systemd/system/ sudo sysetmctl daemon-reload sudo sysetmctl enable "$(basename $(pwd dirname)).service" sudo sysetmctl start "$(basename $(pwd dirname)).service" systemctl | grep "$(basename $(pwd dirname)).service"

              at 16:58 |

              Python で非同期の STOMP クライアントを書く

              python 

              以前、Python で非同期の STOMP クライアントを書くために stomp.pythreading を書いてみたことがあったのですが、どうしても安定して動作させることができなくて結局 node.js で実装したことがありましたが、今回は stompest.async という違うライブラリを使って再チャレンジしてみました。

              nikipore/stompest: STOMP client library for Python including both synchronous and Twisted implementations.

              stompest is a full-featured STOMP 1.0, 1.1, and 1.2 implementation for Python 2.7 and Python 3 (versions 3.3 and higher) including both synchronous and asynchronous clients:

              stompest.async は Twisted という Python のイベントドリブンなフレームワークを使って書かれており、動作自体は非常に安定しています。欠点としては async という名前が Python 3.7 から予約語になった*1ので、現在のリリースされているパッケージはそのままでは Python 3.6 でしか動かすことができないということでしょうか。

              今回書いたコードはサンプルほぼそのままですが、 Heart Beat を有効化したかったので、プロトコルを STOMP v1.2 にするために以下のような感じにしました。

              Consumer.py

              # -*- coding: utf-8 -*- import json import logging from twisted.internet import defer, reactor from stompest.config import StompConfig from stompest.protocol import StompSpec from stompest.async import Stomp from stompest.async.listener import SubscriptionListener class Consumer(object): QUEUE = '/queue/testOut' ERROR_QUEUE = '/queue/testConsumerError' def __init__(self, config=None): if config is None: config = StompConfig('tcp://localhost:61613', version=StompSpec.VERSION_1_2) self.config = config self.amq_id = 1 @defer.inlineCallbacks def run(self): client = Stomp(self.config) yield client.connect(heartBeats = (600000, 600000)) headers = { # client-individual mode is necessary for concurrent processing # (requires ActiveMQ >= 5.2) StompSpec.ACK_HEADER: StompSpec.ACK_CLIENT_INDIVIDUAL, StompSpec.ID_HEADER: str(self.amq_id), # the maximal number of messages the broker will let you work on at the same time 'activemq.prefetchSize': '100', } self.amq_id += 1 client.subscribe(self.QUEUE, headers, listener=SubscriptionListener(self.consume, errorDestination=self.ERROR_QUEUE)) def consume(self, client, frame): """ NOTE: you can return a Deferred here """ data = json.loads(frame.body.decode()) print('Received frame with count %d' % data['count']) if __name__ == '__main__': logging.basicConfig(level=logging.DEBUG) Consumer().run() reactor.run()

              at 16:02 |
              2020/12/24

              さくらのクラウド用の CLI ツールがリリースに

              sakura  cli 

              Usacloud というさくらのクラウド用の CLI ツールがリリースされました。

              さくらのクラウド API は REST なので、2013 年くらいからシェルスクリプトでバックアップを自動化するスクリプトを書いたりしていましたが、新しい API を叩こうとするたびにいろいろと仕様やパラメーターを詳細に調べないといけないので面倒という問題がありました。今回の Usacloud はシェル補完も効きますので、さくらのクラウドの自動化がもっと手軽にできるようになりますね。

              さくらのクラウドのCLI操作ツール「Usacloud」v1.0およびChrome機能拡張「UsaCon」をリリースしました | さくらのクラウドニュース

              UsacloudはシェルなどのCLI環境からさくらのクラウド上のリソース操作を行うことができるツールです。usacloudコマンドが持つサブコマンドにより、サーバやアプライアンスの作成/削除など、コントロールパネルと同様の操作をコマンドラインで行うことができます。


                at 20:56 |

                ニトリの珪藻土グッズにアスベストが混入


                ニトリの珪藻土製品にアスベストが混入していて、回収するという騒ぎになっているようです。
                家にはニトリ製ではなく 100 均で買った珪藻土のコースターを使っているのですが、この問題がニトリだけの問題なのかちょっと気がかりです。

                ニトリ けいそう土のバスマットなどにアスベストか 回収へ | NHKニュース

                基準を超えるアスベストが含まれているおそれがあるのは「ニトリホールディングス」が4年前から、ことしまでに販売した、けいそう土のバスマットとコースター、合わせて9種類の製品です。
                削ったり割ったりするとアスベストが飛散するおそれがあるということです。

                追記

                僕の使っている Can★Do 製は問題ないようです。


                  at 08:31 |
                  «Prev || 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 ·... | | Next»