こまメモ

Twitter以上技術ブログ未満

java.net.URLEncoder#encode はスペース(' ')をプラス('+')に変換する

URLエンコーディングでスペースは何に変換されるか

URLエンコーディングでは、スペース(' ')はプラス('+')に変換されるパターンと '%20' に変換されるパターンの2つがある。

Depending on the context, the character ' ' is translated to a '+' (like in the percent-encoding version used in an application/x-www-form-urlencoded message), or in '%20' like on URLs.

developer.mozilla.org

Javaの場合

Javaの標準APIにある java.net.URLEncoder#encode では、application/x-www-form-urlencoded形式を採用しており、'+'に変換される。

Translates a string into application/x-www-form-urlencoded format using a specific encoding scheme.

docs.oracle.com

もし、'%20' に変換してほしいのであれば、 encode をしたあとで、 replace("+", "%20") するのが手っ取り早い。

.NETの場合

.NET だと %20 に直接変換してくれるメソッドが用意されている模様。

You can encode a URL using with the UrlEncode method or the UrlPathEncode method. However, the methods return different results. The UrlEncode method converts each space character to a plus character (+). The UrlPathEncode method converts each space character into the string "%20", which represents a space in hexadecimal notation. Use the UrlPathEncode method when you encode the path portion of a URL in order to guarantee a consistent decoded URL, regardless of which platform or browser performs the decoding.

learn.microsoft.com

DatadogのMonitorのSlackへの投稿に個別のユーザーへのメンションを追加したい

動機

DatadogのMonitorでは、Slack Integrationを使ってSlackの特定のチャンネルにアラートが投稿されるように設定できます。

このアラートの投稿に、個別のユーザーへのメンションを追加したい場合にどうすればよいかを紹介します。

追記

公式ドキュメントの関連する記述を見つけたので紹介しておきます。

Wrap the @username in < > in your monitor’s message template to @-notify the defined user within Slack notifications. For example: @slack-SLACK_CHANNEL <@USERNAME>, or @slack-SLACK_ACCOUNT-SLACK_CHANNEL <@USERNAME>.

If you are having trouble pinging someone, use their Slack username instead of the display name. The username is located in Slack account settings under Username.

Mention @here or @channel by using <!here> or <!channel>, respectively.

For user groups, use <!subteam^GROUP_ID>. To find the GROUP_ID, query the usergroups.list API endpoint of Slack.

https://docs.datadoghq.com/integrations/slack/?tab=applicationforslack#-mentions-in-slack-from-monitor-alert


うまくいかない方法

単純に考えると、 Slackでメンションを飛ばすときと同じく @username という文字列をメッセージの中に組み込めばよさそうですが、それではメンションを飛ばすことはできません。

解決策

User IDを使って、<@U04SFRAKAG0> のように記載してやればよいです。

追記: User Nameでも可能です。

実際のSlackへの投稿では<@U04SFRAKAG0> の部分がメンション(@始まりのハイライトされた文字列)として表示されます。

User ID は、以下のようにプロフィールから取得できるほか、

(無料プランでは見られませんが)ワークスペースごとの https://example.slack.com/stats#members (exampleの部分を使っているワークスペースのものに変更してください)のページから参照できます(User IDの列が表示されない場合は「Edit columns」から追加してください)。

作成済みのPostgreSQLデータベースのエンコーディングを変えたい

EncodingをSQL_ASCIIからUTF8に変えたい

postgres=# \l
                                                      List of databases
            Name             |  Owner   | Encoding  | Collate | Ctype | ICU Locale | Locale Provider |   Access privileges
-----------------------------+----------+-----------+---------+-------+------------+-----------------+-----------------------
 old_db | postgres | SQL_ASCII | C       | C     |            | libc            |
 postgres                    | postgres | SQL_ASCII | C       | C     |            | libc            |
 template0                   | postgres | SQL_ASCII | C       | C     |            | libc            | =c/postgres          +
                             |          |           |         |       |            |                 | postgres=CTc/postgres
 template1                   | postgres | SQL_ASCII | C       | C     |            | libc            | =c/postgres          +
                             |          |           |         |       |            |                 | postgres=CTc/postgres

手順

pg_dump -h X.X.X.X -p XXXX -U xxxx  old_db > db.bak
CREATE DATABASE new_db WITH ENCODING 'UTF8' TEMPLATE template0;
psql -h X.X.X.X -p XXXX -U xxxx new_db < db.bak
DROP DATABASE old_db;
ALTER DATABASE new_db RENAME to old_db;

「言ってない」名言

ヴォルテール「あなたの意見には反対だが、あなたがそれを主張する権利は命をかけて守る」

ダーウィン「この世に生き残る生物は、激しい変化にいち早く対応できたもの」

gendai.ismedia.jp

MMTについてのメモ

別にMMTは信奉していないし、経済・金融理論について「信奉する」という態度を取るということも多分ない(そこまで強い関心がない)のだけれど、MMTは結構一般の人々の間にも知られるようになってきた(Twitter上の知り合いのソフトウェア開発者の中にも、MMTの入門書を読んでいる人がちらほらいる)ので、自分なりに位置付けておきたいという気持ちがあらためて出てきた。

3年ほど前に経済学・金融論について勉強したときは、ランダル・レイの『MMT 現代貨幣理論入門』の翻訳がちょうど出たころで、「財政支出の制約は財政均衡ではなくインフレだ」という主張くらいまで理解して、「まぁそれはそうかもしれんな」と思った記憶がある。

この分野は、人々が通貨などについてどのように予測するかが現実にも影響を及ぼすものだし、財政・金融当局の「語り」もそういった予測を左右するものでもあるので、理論の「妥当性」というのを考えるのがとても難しいなと感じている。だからこそそこまで突き詰めて考える気にもなりづらく、ある程度まで「ここはおかしい、ここは正当」という評価できたら自分としては満足できるかなと感じる。

というところまでを書いていて、「突き詰めてものを考える能力(あるいは意欲)」が失われているのではないかという自分に対する懸念が湧いてきたのだけれど、そこはこのメモの本題ではない(しかしメモなので自分の感覚を書き留めることにも意味はあるので書き留めておく)ので、深掘りすることはやめて、MMTについての議論を拾い読み程度に眺めてみてのメモを書いておく。

眺めてみたいくつかの記事・書籍

以上のように、MMTの主張を理解することが自分のしたいことではなくて、適切な距離の取り方ができる(一笑に付して終わりにしてしまうにするわけでも、どっぷりと浸かるわけでもなく)ようになりたいので、批判すべきところは批判し、妥当なところはそれを認める、というようなものを読みたいなと思った。この分野に詳しいわけでもないので、適切なものを選べている気はなく、また本格的に調査しているわけでもない(「気になったのでいくつか調べてみた」程度)ので、参考にはしないでほしい。あくまで自分用のメモだ。


toyokeizai.net

岩村充の記事。MMTに反発する「主流派」への批判的な眼差しを持ちつつ、MMTの議論についても批判を加えている。最後に触れられている、財政支出のあり方についての話は、別の論者も指摘していた。

記事中でも紹介しているFTPL(物価水準の財政理論:Fiscal Theory of the Price Level)というのはMMTに関する議論では言及されているのを観測していて(TL調べ)、押さえておくとよい話なのかもしれない。

toyokeizai.net


courrier.jp

ニューヨークタイムズの記者の記事の翻訳。前述の自分が経済・金融について勉強していたのは新型コロナ以前の時期だったのだが、新型コロナ下での米国の政策がMMT論者にとっては自分たちの議論を裏付けるようなものと捉えられ、MMT陣営は盛り上がっていたらしい。その後、米国でのインフレの加速を受けて、やや展開が変わってきているというのが現状ということだ。


元日銀審議委員の原田泰の著作。たまたま本屋で見かけたのでMMTについて何か言っていないかと思って立ち読みしてみた。日銀時代の日記のようなものだが、ケルトンが来日した際の記述で、MMTについて言及している。いわく、MMTの主張は(主唱者の言い分とは異なり)一部分は「主流派」の考えとそう異なるものではないとか、MMTは理論というより社会運動のように見えるとか。

--- その他

weekly-economist.mainichi.jp

過去の自分の言及

自分が接する論者はMMTに対して批判的な人が多かったので批判的な言及の仕方が多い。


木庭顕「信用の基礎理論構築に向けて : プロレゴメナ(上)」への反応。

cir.nii.ac.jp

金融・貨幣理論について論じている中で、MMTに言及している。いかに一例を挙げる。

再生した信用貨幣説の一ウイングは信用貨幣理論でマクロ経済学、特にそれに基づく金融政策を覆そうとするに至った(cf. L. R. Wray, Modern Money Theory: A Primer on Macroeconomics for Sovereign Money, 2ed., 2015)、と見うるように思われる。

(p.76 脚注13)

R.G. Hawtrey, Currency and Credit, 4ed., London, 1949 (1 ed., 1919). 先に触れた1980年代からの信用貨幣理論は、古い系譜を主張するが、以下に述べるHawtreyの厳密さは持たないように思われる。つまりHawtreyは厳密なニュアンスを持ったcommerceという事象にcredit moneyを基礎付け、これも後に述べる政府債務基盤のmoney of accountを峻拒する。これを好んで取り入れ、しかも政策論へ短絡する最近の信用貨幣理論とは遠く隔たる。

(p.77 の脚注14)

全体的に、MMTに対しては批判的である。木庭の理解によると、マクロ経済学主流は金融・財政政策面ではMMTとは対立する側面を有するものの、貨幣理論についてindifferentで折衷的な立場を取っているため、(MMTがその一つの極みであるような)貨幣理論とは必ずしも対立していないという(「潜在的な対立と奇妙な同居関係の存在」)。

なお、ホートレーについては、2012年に『R. G. ホートレーの経済学』を著している古川顕が上記の木庭論文の出た少し後に『貨幣論の革新者たち』という書籍を出すというので、図書館だか書店だかで手に取った記憶があるが、あまり自分の関心には刺さらずに通読はしなかった。


神野直彦『財政学 第二版』への反応。第三版がこの後でているので、そこでMMTについても言及があったのだろうかと思ったが、Amazonレビューによると特に言及がない模様。


藤谷武史「ポストコロナの財政(下) 執行後の検証・統制 強化を」への言及。租税法学者の立場からの批判。

「租税が貨幣を駆動する」という教義からすれば、インフレになれば直ちに非裁量的に増税されることで、実物経済供給力と貨幣量(購買力)のバランスが調整されるというのが前提のはずだ。だがこれは国会が増税のタイミングを決定する権限を自ら放棄することにほかならない。

その他メモ

相手の要望を一歩掘り下げることはソフトウェアを作るとき以外でも大事

「顧客は自分の欲しいものを本当にわかってはいない」という常套句がある。ソフトウェア開発をするときに、「こういう機能が欲しいんですよ」という顧客の要望をそのまま実装するのではダメで、「顧客が解決したい課題は何か?」「顧客は何に困っているのか?」などと掘り下げることが大事だ、ということは、ソフトウェア開発の分野ではしばしば主張される。

以上のようなことは、だいぶ体に染み付いてきて、これから何か作ろうというときに、一足飛びに機能を考えてしまうというのは減ってきている気がするのだけれど、ひとたびソフトウェア作りというところから離れると、他人の言っている要望(「こうしてほしい」「これはやめてほしい」)を「はい、わかりました」と素直に受け取り過ぎていることがあるなと思う。

要望を伝え合うということは、仕事上でのコラボレーションでは常に起きていることで、もちろん最初からクリアに伝えられることもあるのだけれど、お互いの背景をあまり把握せずに話をしていると、防御的なラインの引き方をしてしまって、本当はもっと別の解決策があり得た場面で、お互いにとって不満が残る結果になってしまうことがある。

自分が何かを提供する立場にある場合、それを要求してくる人(広い意味での顧客)からの要望を聞き取るときには、背景まで含めて理解するという習慣は(ソフトウェア開発の延長線上で)持ちやすいが、何かを提供してもらう側のときに、それを提供する側の都合を理解するというのもまだ大事なのだと思う。

ACM会員になるとO'Reilly Online Learningが利用できるやつが終わるらしい

普通に契約すると年間499ドルかかるO'Reilly Online Learning(オライリーのサブスク、技術書読み放題)がACM会員(年会費99ドル)になると利用できるという知る人ぞ知る技があったのですが、こちらは2022年7月1日からは利用できなくなるようです。

以下のメールを2022年4月6日に受信しました(抜粋)。オライリー側が継続を望まなかったということですね。

As of July 1, 2022, you will no longer have to access the O’Reilly Learning platform as a benefit of your ACM membership. Despite our best efforts, O’Reilly Media is unwilling to continue to license their content to ACM for members. Please finish your reading/training by 11:59 PM ET on June 30, 2022. If you wish to continue accessing O’Reilly Learning past this date, you will have to contact O’Reilly and purchase a license directly.   We regret that O’Reilly is not willing to continue providing this service to ACM Members and hope that you will continue to enjoy other benefits of ACM membership, such as our Skillsoft collection (with thousands of online books and courses from publishers such as Manning Publications and No Starch Press), as well as ACM TechTalks, the ACM ByteCast series, and more. All of these can be found in the ACM Learning Center.

便利に使っていたので残念です。会社の福利厚生に頼ろうと思います(宣伝)。

2022/04/14 追記

オライリーの方でログインしたところ、以下のようなメッセージが表示されました。

ACM会員だった人がO'Reilly Online Learningに加入する場合、最初の1年は100ドルOFFの年間399ドルで契約できるようです。

f:id:ky_yk_d:20220414231126p:plain