Rubyスクリプトでパスワード入力

io/consolerquireしてからIO#getpassを使う。

$ ri IO#getpass
= IO#getpass

(from ruby core)
------------------------------------------------------------------------
  io.getpass(prompt=nil)       -> string

------------------------------------------------------------------------

Reads and returns a line without echo back. Prints prompt unless it is
nil.

You must require 'io/console' to use this method.

Rubyの文字列検索いろいろ

単純な文字列検索ならString#include?が速い。 正規表現なら余分なMatchDataを生成しないRegexp#match?が速い。 MatchDataが生成されると遅くなる。 String#~は何らかの最適化が入っているようで、検索後にMatchDataにアクセスしなければRegexp#match?の次に速い。

通常はString#~を使って、速度が気になるときはRegexp#match?が使えるか検討するとよいかな。

ベンチマークスクリプト:

#!/usr/local/bin/ruby
# -*- coding: utf-8; frozen_string_literal: true -*-

require 'benchmark'

s = '12345 foo 67890'

puts 'String#include?'
p(s.include? 'foo')

puts 'Regexp#match?'
p(/foo/.match? s)

puts 'Regexp#match'
p(/foo/.match s)

puts 'String#=~'
p(s =~ /foo/)

Benchmark.bm(35) do |x|
  num_trial = 1_000_000
  x.report('empty') {
    num_trial.times do
      # nothing to do.
    end
  }
  x.report('[match] String#include?') {
    num_trial.times do
      s.include? 'foo'
    end
  }
  x.report('[match] Regexp#match?') {
    num_trial.times do
      /foo/.match? s
    end
  }
  x.report('[match] Regexp#match') {
    num_trial.times do
      /foo/.match s
    end
  }
  x.report('[match] String#=~') {
    num_trial.times do
      s =~ /foo/
    end
  }
  x.report("[match] String#=~; $`; $&; $'") {
    num_trial.times do
      s =~ /foo/; $`; $&; $'
    end
  }
  x.report('[match] String#=~; $~') {
    num_trial.times do
      s =~ /foo/; $~
    end
  }
  x.report('[no match] String#include?') {
    num_trial.times do
      s.include? 'bar'
    end
  }
  x.report('[no match] Regexp#match?') {
    num_trial.times do
      /bar/.match? s
    end
  }
  x.report('[no match] Regexp#match') {
    num_trial.times do
      /bar/.match s
    end
  }
  x.report('[no match] String#=~') {
    num_trial.times do
      s =~ /bar/
    end
  }
  x.report("[no match] String#=~; $`; $&; $'") {
    num_trial.times do
      s =~ /bar/; $`; $&; $'
    end
  }
  x.report('[no match] String#=~; $~') {
    num_trial.times do
      s =~ /bar/; $~
    end
  }
end

実行結果:

String#include?
true
Regexp#match?
true
Regexp#match
#<MatchData "foo">
String#=~
6
                                          user     system      total        real
empty                                 0.109375   0.000000   0.109375 (  0.109012)
[match] String#include?               0.250000   0.000000   0.250000 (  0.256767)
[match] Regexp#match?                 0.312500   0.000000   0.312500 (  0.301961)
[match] Regexp#match                  0.890625   0.000000   0.890625 (  0.897493)
[match] String#=~                     0.421875   0.000000   0.421875 (  0.423258)
[match] String#=~; $`; $&; $'         0.531250   0.000000   0.531250 (  0.550842)
[match] String#=~; $~                 0.921875   0.000000   0.921875 (  0.933610)
[no match] String#include?            0.187500   0.000000   0.187500 (  0.183050)
[no match] Regexp#match?              0.265625   0.000000   0.265625 (  0.279306)
[no match] Regexp#match               0.406250   0.000000   0.406250 (  0.413185)
[no match] String#=~                  0.328125   0.000000   0.328125 (  0.324284)
[no match] String#=~; $`; $&; $'      0.359375   0.000000   0.359375 (  0.357800)
[no match] String#=~; $~              0.343750   0.000000   0.343750 (  0.371355)

5月に読んだ本やマンガ

5月の読書メーター
読んだ本の数:51
読んだページ数:9700
ナイス数:3

スライム倒して300年、知らないうちにレベルMAXになってました(4) (ガンガンコミックスONLINE)スライム倒して300年、知らないうちにレベルMAXになってました(4) (ガンガンコミックスONLINE)
読了日:05月02日 著者:森田 季節,シバユウスケ
きっと愛され女子になる!(2) (まんがタイムコミックス)きっと愛され女子になる!(2) (まんがタイムコミックス)
読了日:05月02日 著者:瀬戸口みづき
異世界おじさん 1 (MFC)異世界おじさん 1 (MFC)
読了日:05月02日 著者:殆ど死んでいる
異世界おじさん 2 (MFC)異世界おじさん 2 (MFC)
読了日:05月02日 著者:殆ど死んでいる
我が愛しのヲタ彼女(1) (エッジスタコミックス)我が愛しのヲタ彼女(1) (エッジスタコミックス)
読了日:05月02日 著者:粒々 辛苦,咲良
我が愛しのヲタ彼女(2) (エッジスタコミックス)我が愛しのヲタ彼女(2) (エッジスタコミックス)
読了日:05月02日 著者:粒々辛苦,咲良
我が愛しのヲタ彼女(3) (エッジスタコミックス)我が愛しのヲタ彼女(3) (エッジスタコミックス)
読了日:05月02日 著者:粒々辛苦,咲良
WEB+DB PRESS Vol.110WEB+DB PRESS Vol.110
読了日:05月02日 著者:藤村 大介,森田 リーナ,渡邉 祐一,市原 創,板倉 広明,高橋 征義,笹田 耕一,大原 壯太,新倉 涼太,末永 恭正,久保田 祐史,牧 大輔,東 邦之,星 北斗,池田 拓司,竹馬 光太郎,はまちや2,竹原,八谷 賢
ディーふらぐ! 1 (MFコミックス アライブシリーズ)ディーふらぐ! 1 (MFコミックス アライブシリーズ)
読了日:05月02日 著者:春野 友矢
おしかけツインテール (1) (まんがタイムコミックス)おしかけツインテール (1) (まんがタイムコミックス)
読了日:05月02日 著者:高津 ケイタ
おしかけツインテール(2) (まんがタイムコミックス)おしかけツインテール(2) (まんがタイムコミックス)
読了日:05月02日 著者:高津 ケイタ
おしかけツインテール(3) (まんがタイムコミックス)おしかけツインテール(3) (まんがタイムコミックス)
読了日:05月02日 著者:高津ケイタ
おしかけツインテール (4) (まんがタイムコミックス)おしかけツインテール (4) (まんがタイムコミックス)
読了日:05月02日 著者:高津ケイタ
キン肉マン 67 (ジャンプコミックス)キン肉マン 67 (ジャンプコミックス)
読了日:05月02日 著者:ゆでたまご
ワンパンマン 19 (ジャンプコミックス)ワンパンマン 19 (ジャンプコミックス)
読了日:05月02日 著者:村田 雄介
東洋的な見方 (角川ソフィア文庫)東洋的な見方 (角川ソフィア文庫)
読了日:05月02日 著者:鈴木 大拙
甲冑武闘 (ハルタコミックス)甲冑武闘 (ハルタコミックス)
読了日:05月08日 著者:久慈 光久
宇宙と宇宙をつなぐ数学 IUT理論の衝撃宇宙と宇宙をつなぐ数学 IUT理論の衝撃
読了日:05月08日 著者:加藤 文元
大進化どうぶつデスゲーム (ハヤカワ文庫JA)大進化どうぶつデスゲーム (ハヤカワ文庫JA)感想
Dゲームかな?

投げっぱなしの伏線が気になる。峡谷の巨大な巨頭肉食ダチョウの化石はなんだったのだろう。

話の尺とくらべて登場人物の人数が多いので、続編があるのか、もしくはもともともっと長編の構想だったのを削ったのだろうか。
読了日:05月08日 著者:草野 原々
MASTERグレープ (7) (ゲッサン少年サンデーコミックス)MASTERグレープ (7) (ゲッサン少年サンデーコミックス)
読了日:05月14日 著者:
銀狼ブラッドボーン (10) (裏少年サンデーコミックス)銀狼ブラッドボーン (10) (裏少年サンデーコミックス)
読了日:05月14日 著者:
持たざる経営の虚実 日本企業の存亡を分ける正しい外部化・内部化とは?持たざる経営の虚実 日本企業の存亡を分ける正しい外部化・内部化とは?
読了日:05月14日 著者:松岡 真宏
白熱日本酒教室 1 (星海社COMICS)白熱日本酒教室 1 (星海社COMICS)
読了日:05月19日 著者:アザミ ユウコ
白熱日本酒教室 2 (星海社COMICS)白熱日本酒教室 2 (星海社COMICS)
読了日:05月19日 著者:アザミ ユウコ
日本沈没 1 地下の竜巻 (ビッグコミックス)日本沈没 1 地下の竜巻 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 2 日本海溝 (ビッグコミックス)日本沈没 2 日本海溝 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 3 D計画 (ビッグコミックス)日本沈没 3 D計画 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 4 古都消失 (ビッグコミックス)日本沈没 4 古都消失 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 5 推論、帰結ス。 (ビッグコミックス)日本沈没 5 推論、帰結ス。 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 6 記憶喪失の国、記憶喪失の首都。 (ビッグコミックス)日本沈没 6 記憶喪失の国、記憶喪失の首都。 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 7 阿部玲子 (ビッグコミックス)日本沈没 7 阿部玲子 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 8 冥府、火の国 (ビッグコミックス)日本沈没 8 冥府、火の国 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 9 日本沈没阻止計画 (ビッグコミックス)日本沈没 9 日本沈没阻止計画 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 10 奇跡の価値・奇跡の代償 (ビッグコミックス)日本沈没 10 奇跡の価値・奇跡の代償 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 11 すばらしい日々 (ビッグコミックス)日本沈没 11 すばらしい日々 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 12 彼等の日々 (ビッグコミックス)日本沈没 12 彼等の日々 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 13 やまぬ雨の中で (ビッグコミックス)日本沈没 13 やまぬ雨の中で (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 14 沈み行く国 (ビッグコミックス)日本沈没 14 沈み行く国 (ビッグコミックス)
読了日:05月19日 著者:小松 左京,一色 登希彦
日本沈没 15 (ビッグコミックス)日本沈没 15 (ビッグコミックス)
読了日:05月19日 著者:一色 登希彦
きょーだん! 1 (アルファポリスCOMICS)きょーだん! 1 (アルファポリスCOMICS)
読了日:05月22日 著者:
きょーだん! 2 (アルファポリスCOMICS)きょーだん! 2 (アルファポリスCOMICS)
読了日:05月22日 著者:
ふたりソロキャンプ(1) (イブニングKC)ふたりソロキャンプ(1) (イブニングKC)
読了日:05月22日 著者:出端 祐大
あせびと空世界の冒険者 10 (リュウコミックス)あせびと空世界の冒険者 10 (リュウコミックス)
読了日:05月22日 著者:梅木泰祐
ふたりソロキャンプ(2) (イブニングKC)ふたりソロキャンプ(2) (イブニングKC)
読了日:05月24日 著者:出端 祐大
宵闇眩燈草紙 (1)  Dengeki comics EX宵闇眩燈草紙 (1) Dengeki comics EX
読了日:05月25日 著者:八房 龍之助
宵闇眩燈草紙 (2)  Dengeki comics EX宵闇眩燈草紙 (2) Dengeki comics EX
読了日:05月25日 著者:八房 龍之助
宵闇眩燈草紙 (3)  Dengeki comics EX宵闇眩燈草紙 (3) Dengeki comics EX
読了日:05月25日 著者:八房 龍之助
宵闇眩燈草紙 (4)  Dengeki comics EX宵闇眩燈草紙 (4) Dengeki comics EX
読了日:05月25日 著者:八房 龍之助
宵闇眩燈草紙 (5) Dengeki comics EX宵闇眩燈草紙 (5) Dengeki comics EX
読了日:05月25日 著者:八房 龍之助
宵闇眩燈草紙 (6) Dengeki comics EX宵闇眩燈草紙 (6) Dengeki comics EX
読了日:05月25日 著者:八房 龍之助
宵闇眩燈草紙 (7) (Dengeki comics EX)宵闇眩燈草紙 (7) (Dengeki comics EX)
読了日:05月25日 著者:八房 龍之助

読書メーター

4月に読んだ本やマンガ

4月の読書メーター
読んだ本の数:19
読んだページ数:2728
ナイス数:0

うわばみ乙女ずかん 1 (ヤングアニマルコミックス)うわばみ乙女ずかん 1 (ヤングアニマルコミックス)
読了日:04月01日 著者:後藤羽矢子
雀荘のサエコさん 4 (近代麻雀コミックス)雀荘のサエコさん 4 (近代麻雀コミックス)
読了日:04月01日 著者:重野 なおき
まほろばきっさ 1 (バンブーコミックス)まほろばきっさ 1 (バンブーコミックス)
読了日:04月02日 著者:tugeneko
まほろばきっさ 2 (バンブーコミックス)まほろばきっさ 2 (バンブーコミックス)
読了日:04月03日 著者:tugeneko
まほろばきっさ 3 完結 (バンブーコミックス)まほろばきっさ 3 完結 (バンブーコミックス)
読了日:04月03日 著者:tugeneko
ちっこいんちょ (1) (まんがタイムコミックス)ちっこいんちょ (1) (まんがタイムコミックス)
読了日:04月03日 著者:トイシキ
師匠と弟子(上) (ぶんか社コミックス)師匠と弟子(上) (ぶんか社コミックス)
読了日:04月03日 著者:高橋葉介
師匠と弟子(下) (ぶんか社コミックス)師匠と弟子(下) (ぶんか社コミックス)
読了日:04月04日 著者:高橋葉介
も~っと集まれ! ファルコム学園1 (ファルコムBOOKS)も~っと集まれ! ファルコム学園1 (ファルコムBOOKS)
読了日:04月09日 著者:新久保 だいすけ
人形の国(4) (シリウスKC)人形の国(4) (シリウスKC)
読了日:04月09日 著者:弐瓶 勉
怪物王女ナイトメア(4) (シリウスKC)怪物王女ナイトメア(4) (シリウスKC)
読了日:04月09日 著者:光永 康則
ちっこいんちょ (2) (まんがタイムコミックス)ちっこいんちょ (2) (まんがタイムコミックス)
読了日:04月12日 著者:トイシキ
ちっこいんちょ (3) (まんがタイムコミックス)ちっこいんちょ (3) (まんがタイムコミックス)
読了日:04月12日 著者:トイシキ
でっかいんちょ (1) (まんがタイムコミックス)でっかいんちょ (1) (まんがタイムコミックス)
読了日:04月12日 著者:トイシキ
残酷すぎる成功法則  9割まちがえる「その常識」を科学する残酷すぎる成功法則 9割まちがえる「その常識」を科学する
読了日:04月16日 著者:エリック・バーカー
衛府の七忍(7) (チャンピオンREDコミックス)衛府の七忍(7) (チャンピオンREDコミックス)
読了日:04月25日 著者:山口貴由
いとしのムーコ(14) (イブニングKC)いとしのムーコ(14) (イブニングKC)
読了日:04月25日 著者:みずしな 孝之
The Art of UNIX ProgrammingThe Art of UNIX Programming
読了日:04月26日 著者:Eric S.Raymond
達人伝-9万里を風に乗り-(11) (アクションコミックス)達人伝-9万里を風に乗り-(11) (アクションコミックス)
読了日:04月26日 著者:王 欣太

読書メーター

MMCXケーブル購入

LDAC対応Bluetoothレシーバで使っていたイヤホンのケーブルが断線したので、新しくリケーブル用のケーブルを購入した。 こんなこともあろうかとMMCX対応のイヤホンにしていたのだった。

https://www.amazon.co.jp/オヤイデ-HPC-26T-MMCX用-イヤホンケーブル-0-8m/dp/B072PQ9VDH/

指定した長さでMMCXケーブルを作成してくれる。 既存のケーブル長だとやたら長すぎるものが多いので、ちょうどよい長さを指定できるのがよい。 現品が届いたけどかなり調子よさそう。

AnsibleでDocker APIにアクセスするときのTLSバージョンを指定する

環境変数DOCKER_SSL_VERSIONで設定する。

export DOCKER_SSL_VERSION=TLSv1_2

設定値はPythonssl.PROTOCOL_...に対応している。以下の設定値が使えるようだ。