タグ

ブックマーク / blog.tmtms.net (19)

  • MySQL 8.0.22 DNS SRV レコードサポート - tmtms のメモ

    MySQL 8.0.22 の新機能で DNS SRV レコードのサポートというのがあったので試してみた。 https://dev.mysql.com/doc/refman/8.0/en/connecting-using-dns-srv.html MySQLサーバー3台 (a.example.com, b.example.com, c.example.com)とそれに接続するためのクライアントの計4台を docker-compose で作成する。 Dockerfile FROM ubuntu RUN apt update RUN apt install -y mysql-client libmysqlclient-dev gcc unbound bind9-dnsutils RUN rm -f /etc/unbound/unbound.conf.d/root-auto-trust-ancho

    MySQL 8.0.22 DNS SRV レコードサポート - tmtms のメモ
    n2s
    n2s 2020/11/03
    後ろにSRVレコードの解説
  • Ruby 2.7 の変更点 - 「...」で全引数渡し - tmtms のメモ

    Ruby 2.7 アドベントカレンダーの9日目の記事です。 qiita.com 「...」で全引数渡し メソッド内から別のメソッドを呼び出す際に、... で今のメソッドに渡された引数そのまま渡すことができるようになりました。 ブロックも含めてすべて渡されます。 def hoge(...) fuga(...) end def fuga(a, b=0, key: 123, &block) p [a, b, key, block] end hoge(1) #=> [1, 0, 123, nil] hoge(1, 2, key: 789) #=> [1, 2, 789, nil] hoge(1) { nil } #=> [1, 0, 123, #<Proc:0x0000559166565430 test.rb:11>] 括弧なしの super みたいな感じですね。 なお、... はそのままでは R

    Ruby 2.7 の変更点 - 「...」で全引数渡し - tmtms のメモ
    n2s
    n2s 2020/02/21
    JavaScriptのスプレッド構文に寄せて単項*の別表現てことにしても良かったかもしれないが、それともまた違う文法になるのか…
  • Ruby 2.7 の変更点 - 復活したものや入りそうで入らなかったもの - tmtms のメモ

    Ruby 2.7 アドベントカレンダーの1日目の記事です。 qiita.com Ruby は毎年クリスマスにバージョンが上がります。 今年も順調にいけば 12/25 に Ruby 2.7 がリリースされる予定です。 2.7 がリリースされるまで毎日少しずつ変更点を見ていきます。 ソースは NEWS(とか git log とか)です。 Ruby 2.7 までに復活したもの キーワード引数のハッシュのシンボルでないキー flip-flop 構文 Ruby 2.7 で入りそうだったけど入らなかったもの パイプライン演算子 メソッド参照演算子 Ruby 2.7 までに復活したもの キーワード引数のハッシュのシンボルでないキー Ruby 2.6.0 で キーワード引数のハッシュのキーがシンボルでない場合はエラーになったんですが、2.6.2 でその挙動が取り消されてエラーにならなくなりました。 2.7

    Ruby 2.7 の変更点 - 復活したものや入りそうで入らなかったもの - tmtms のメモ
  • Ubuntu で Postfix の SMTP AUTH を設定して fail2ban で認証に失敗したIPアドレスをブロックする - tmtms のメモ

    Ubuntu 18.04 の Postfix で次のようにして SMTP AUTH を有効にしました。 /etc/postfix/master.cf submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject /etc/postfix/main.cf smtpd_sasl_local_domain = $myhostname broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous /et

    Ubuntu で Postfix の SMTP AUTH を設定して fail2ban で認証に失敗したIPアドレスをブロックする - tmtms のメモ
  • Ruby2.6 カテゴリーの記事一覧 - @tmtms のメモ

    Ruby2.6アドベントカレンダーの24日目の記事です。 qiita.com Coverage Coverage.start に :oneshot_lines キーワード引数追加 Coverage.result に :stop, :clear キーワード引数追加 Coverage.line_stub 追加 Coverage https://bugs.ruby-lang.org/issues/1…

    Ruby2.6 カテゴリーの記事一覧 - @tmtms のメモ
  • Ruby 2.6 の変更点 - Array - tmtms のメモ

    Ruby2.6アドベントカレンダーの3日目の記事です。 qiita.com Array Array#union 追加 Array#difference 追加 Array#filter, Array#filter! 追加 Array#to_h にブロックを渡すとキーと値を変換できる Array Array#union 追加 https://bugs.ruby-lang.org/issues/14097 引数に指定した配列を結合した新しい配列オブジェクトを返します。重複した要素は削除されます。 ary1 = [1, 2, 3] ary2 = ary1.union([2, 3, 4, 5]) ary1 #=> [1, 2, 3] ary2 #=> [1, 2, 3, 4, 5] 複数の配列を指定できること以外は Array#| と同じ。 Array#difference 追加 https://b

    Ruby 2.6 の変更点 - Array - tmtms のメモ
    n2s
    n2s 2018/12/05
  • MIMEヘッダエンコーディングは複雑すぎてつらい - tmtms のメモ

    これは NSEG Advent Calender の7日目の記事です(内容は NSEG とも長野とも関係ありませんが…)。 www.adventar.org メールの送信者(From)や件名(Subject)は来ASCII(の一部の文字)しか書くことができないんですが、MIME(RFC2047)の登場によって日語等の非ASCII文字を記述することができるようになりました。 とは言ってもメールアプリから見て日語が表示できているだけで、内部的にはASCII文字にエンコードされています。MIMEヘッダエンコーディングと呼ばれています。 たとえば、「日語」という文字列は =?utf-8?b?5pel5pys6Kqe?= や =?iso-2022-jp?b?GyRCRnxLXDhsGyhC?= に変換されています。 この処理が実は非常に複雑で、正しくエンコードされてない場合がかなりあります。

    MIMEヘッダエンコーディングは複雑すぎてつらい - tmtms のメモ
    n2s
    n2s 2018/12/05
  • 文字化け - tmtms のメモ

    こんなツイートを見かけたので文字化けを直してみました。 譁�ュ怜喧縺代@縺。繧�▲縺溘ヤ繧、繝シ繝医@縺ヲ縺ソ縺溘¢縺ゥ縲√≧縺昴□繧医��√▲縺ヲ縺薙�譁�ュ怜喧縺題ァ」隱ュ縺励※縺上l繧倶ココ縺�k縺ョ縺九↑縲ゅ>縺溘i諢滓ソ縲ゅ%繧瑚ェュ繧薙□繧医�縺」縺ヲ莠コ縲碁ィ吶&繧後↑縺九▲縺溘崎ソ比ソ。縺雁セ�■縺励※繧九— LINE RECORDS (@LINE_RECORDS_JP) July 26, 2018 見た感じ、UTF-8をシフトJISとして表示したときのようなので、ツイートをコピペしたファイルをシフトJISに変換してみます。 % ruby -e 'p File.read("mojibake.txt").encode("cp932", undef: :replace).force_encoding("utf-8")' "\xE6\x96?\xAD\x97化けしち\xE3\x8

    文字化け - tmtms のメモ
    n2s
    n2s 2018/07/29
    すごい、全部復元できたとは。
  • PostfixDaemon - Ruby で Postfix のデーモンを書くライブラリ - tmtms のメモ

    この前、まつもとりーさんに自分でも忘れていたpostfix-mrubyというのを発掘されて、 Postfix-mruby最高!— 松 亮介 / まつもとりー (@matsumotory) 2018年2月22日 これによって、前に作ろうと思ってそのまま忘れてたものを思い出したので、作ってみました。 github.com こんなプログラムを /usr/lib/postfix/sbin に置いておいて、 require 'postfix_daemon' PostfixDaemon.start do |socket, addr| while s = socket.gets socket.puts s.update end end Postfix の master.cf にテキトーに書くと、ポートにアクセスがあると Postfix の master(8) に起動してもらえます。 まあ master

    PostfixDaemon - Ruby で Postfix のデーモンを書くライブラリ - tmtms のメモ
  • Ruby 2.5 - tmtms のメモ

    この記事は Ruby 2.5.0 preview1 時点のものです。Ruby 2.5 リリース版については http://tmtms.hatenablog.com/entry/2017/12/30/ruby25 を見てください。 Rubyは毎年クリスマスにバージョンアップされます。 今年も問題なければ12/25にRuby 2.5が出ると思います。 https://docs.ruby-lang.org/en/trunk/NEWS.html を元に変更内容を調べてみました。 言語仕様 トップレベル定数参照 rescue/else/ensure 節 文字列内式のRefinement Unicode バージョン 10.0.0 組み込みライブラリ Array#append, #prepend 追加 Dir.children, Dir.each_child 追加 Dir.glob :base オプショ

    Ruby 2.5 - tmtms のメモ
    n2s
    n2s 2017/12/04
    ああ、そういう時期か。
  • Gitでコメントを無視して差分を見る - tmtms のメモ

    古いRubyのコードのコメントを独自のRDoc形式からYARD形式に変換して、さらにその後にプログラムを変更したんですが、その後に差分を見ると大量のコメントの差分が表示されて、実際のコードの差分が何かわからなくなったりしたので、コメントを無視して差分を取る方法を調べてみました。 普通にgit diffするとこんな感じ: diff --git a/hoge.rb b/hoge.rb index 8fa6659..0561977 100644 --- a/hoge.rb +++ b/hoge.rb @@ -1,8 +1,8 @@ -# == ほげクラス +# ほげクラス class Hoge - # === ほげ - # +str+ 何か + # ほげ + # @param str [String] 何か def hoge(str) - 123 + 456 end end プログラムとしての変

    Gitでコメントを無視して差分を見る - tmtms のメモ
    n2s
    n2s 2017/11/21
  • Rubyおもしろい - tmtms のメモ

    Rubyは括弧をつけなくてもメソッドを呼び出せます。メソッド名は普通は英小文字で始まります。ローカル変数も英小文字で始まります。 こんなRubyプログラムを実行すると(ifの条件部で代入しているのはtypoではありません)、 def hoge 123 end p hoge x = 456 if hoge = x p hoge end p hoge こういう出力が得られます。 123 456 456 途中でhogeがメソッド呼び出しから変数参照に変わったのがわかります。 変数宣言後は括弧「()」をつけない場合はメソッド呼び出しではなく変数参照になります。 def hoge 123 end p hoge # hogeメソッド呼び出しなので123 x = 456 if hoge = x # hogeにx(456)を代入。その結果は真なのでif内を実行 p hoge # ここでのhogeはローカル

    Rubyおもしろい - tmtms のメモ
    n2s
    n2s 2017/10/17
  • Ruby の Enumerable#sum - tmtms のメモ

    「最近のruby-core (2016年7月)」に次のような記述がありました。 Enumerable#sum というメソッドが追加されており、特定の場合(浮動小数点数の配列とか)には誤差が累積しないアルゴリズムが採用されています。 Ruby 2.4 に Enumerable#sum が追加されたのは知ってましたが、「誤差が累積しない」というのは知りませんでした。 というか、元々誤差が累積しない加算の目的で追加されたものだったのですね(最近のruby-core (2016年3月))。単純に 「#inject(:+)」にわかりやすい名前をつけただけなのかと思ってました。 簡単に試してみます。浮動小数点演算で、0.1を10個足すと1.0にならないというのはよく知られていますね。 > 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1 => 0.999999999999

    Ruby の Enumerable#sum - tmtms のメモ
    n2s
    n2s 2016/10/02
  • Postfix 3.1 の新機能 / JSON形式キュー表示と配送流量制御 - tmtms のメモ

    Postfix 3.1 がリリースされました。 個人的に気になった新機能は JSON-format Postfix queue listing. Destination-independent delivery rate delay の2つです。 JSON形式キュー表示 今までは mailq や postqueue -p コマンドで次のような表示がされていました。 ~% postqueue -p -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 8A9AE6EF 275 Sun Mar 6 23:47:06 sender@example.com (deferred transport) rcpt1@example.net rcpt2@example.net 94AC010A! 298 Sun Mar 6 23

    Postfix 3.1 の新機能 / JSON形式キュー表示と配送流量制御 - tmtms のメモ
    n2s
    n2s 2016/03/08
  • Git に対する Subversion の利点 - tmtms のメモ

    気がついたら Git を初めて触ってからもう5年近くになってました。 それまで使ってた Subversion はもう全然使ってなくて、もう svn のサブコマンドは ls, log, co くらいしか使えません。Subversion のリポジトリを見ないといけないときは、とりあえず git svn で Git リポジトリに変換してから見たりしてます。 SCCS, RCS, CVS はもう全然わからないので、Subversion はまだ覚えてる方ですけど…。 Subversion に対する Git の利点はあちこちで述べられているので今更何も書くことはありませんが、Git よりも Subversion の方が良いこともあるので、忘れないうちに書いときます。 リポジトリ全体をコピーしなくても編集できる リポジトリの歴史が長い場合や、頻繁に更新されるバイナリデータがあるとリポジトリが大きくなりま

    Git に対する Subversion の利点 - tmtms のメモ
  • MySQL の SQL エスケープ - tmtms のメモ

    この記事は MySQL Casual Advent Calendar 2013 の15日目の記事です。 今、空前の SQL エスケープブームみたいなので、このビッグウェーブに乗っかってみます。 でも面倒なのでセキュリティについての話はしません。カジュアル! 文字列リテラルとエスケープ MySQL では SQL 中の文字列リテラルは次のように表現します。 'abc' -- シングルクォートで括る "abc" -- ダブルクォートで括る 0x616263 -- 16進数 x'616263' -- 16進数 0b011000010110001001100011 -- 2進数 b'011000010110001001100011' -- 2進数 各表記で charset を指定することができます _utf8 'abc' _utf8 "abc" _utf8 0x616263 _utf8 x'6162

    MySQL の SQL エスケープ - tmtms のメモ
    n2s
    n2s 2014/01/26
  • Rubyのエンコーディングその2 - tmtms のメモ

    この前「Rubyのエンコーディング」という記事を書いたのですが、それをネタに 8/25 の NSEG で発表しました。 Rubyのエンコーディング from Masahiro Tomita この中で、エンコーディングが原因で予期しないところで落ちてしまうことが結構あるという話もしたんですが、今回はプログラムが落ちないようにするにはどうすればいいかを考えてみます。 エンコーディングが原因で落ちてしまうのは大体次のパターンのようです。 文字列や正規表現のエンコーディングが異なる 文字列中に不正な文字が含まれている 文字列や正規表現のエンコーディングが異なる 正規表現をリテラルで生成していれば、エンコーディングは敢えて指定しない限りは普通はスクリプトエンコーディングになってると思うので、問題は文字列の方です。 特にファイルから読み込んだ文字列のエンコーディングが何になっているかに注意しましょう。

    Rubyのエンコーディングその2 - tmtms のメモ
    n2s
    n2s 2012/09/03
  • Rubyのエンコーディング - tmtms のメモ

    Ruby 1.9 から文字列や正規表現オブジェクトはそれぞれエンコーディング(いわゆる文字コード)を保持するようになりました。 たとえば 0xB1 0xB2 という2バイトは EUC-JP エンコーディングでは「渦」、SHIFT_JIS エンコーディングでは「アイ」という文字になります。つまり同じバイト列でもエンコーディングが異なれば異なる文字として解釈されます。 1.8 では文字列はただのバイト列でした。なので、それがどのような文字を表しているのか、つまりエンコーディングが何なのかはプログラムが知っている必要がありました。 1.9 では文字列オブジェクト自身が自分が何のエンコーディングかを知っています。同じ 0xB1 0xB2 というバイト列でも、それが EUC-JP の「渦」なのか SHIFT_JIS の「アイ」なのかは、文字列自身が知っています。 スクリプトエンコーディング スクリプ

    Rubyのエンコーディング - tmtms のメモ
    n2s
    n2s 2012/09/03
  • Gitでリモートリポジトリを巻き戻す - tmtms のメモ

    Gitで間違ったコミットをリモートリポジトリに push してしまった後に、それを無かったことにするには、リモート側での作業が必要だと思っていたのですが、ローカルからの操作でもできることがわかったので備忘録的に書いておきます。 次の状態にあるとします。アルファベットはコミットだと思ってください。 リモート: A-B-C master ローカル: A-B-C-D masterローカルで変更を加えてDの状態になっています。 git push すると次のようになるのですが、 リモート: A-B-C-D master ローカル: A-B-C-D masterここで、D は間違いだったと気づきました。 リモートリポジトリの master のバックアップ用のブランチを作ります。これは必須ではありませんが、念のため。 % git push origin master:master_bakこれで次の状態に

    Gitでリモートリポジトリを巻き戻す - tmtms のメモ
    n2s
    n2s 2011/01/04
  • 1