タグ

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

  • Ubuntu 22.04 でメールサーバーを作ったのでメモ - tmtms のメモ

    令和にもなって自分でメールサーバーを作ってみたのでメモ。 OS は Ubuntu 22.04。 パッケージ更新後に自動的に再起動 メールとは関係ないけど apt で再起動が必要な更新があった場合は自動的に再起動するようにした。 /etc/apt/apt.conf.d/50unattended-upgrades: Unattended-Upgrade::Automatic-Reboot "true"; Lets Encrypt TLS 証明書を作るために certbot をインストール。自分はさくらのクラウドのDNSを使ってるのでそれ用のモジュールも追加。 # apt install certbot python3-certbot-dns-sakuracloud https://certbot-dns-sakuracloud.readthedocs.io/en/stable/ に従って /r

    Ubuntu 22.04 でメールサーバーを作ったのでメモ - tmtms のメモ
  • 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 のメモ
  • MySQLと「令和」 - tmtms のメモ

    新元号が「令和」に決まったことなので、MySQLでの扱いについての話を。 普通の文字 「令」も「和」もJIS第一水準に含まれている基的な文字なので普通に日語が使用できるcharsetで使用できます。 mysql> create table t ( utf8mb4 varchar(255) charset utf8mb4, utf8mb3 varchar(255) charset utf8mb3, utf16 varchar(255) charset utf16, utf32 varchar(255) charset utf32, cp932 varchar(255) charset cp932, eucjpms varchar(255) charset eucjpms, sjis varchar(255) charset sjis, ujis varchar(255) charset

    MySQLと「令和」 - tmtms のメモ
  • 本当はこわいMySQLプロトコル - tmtms のメモ

    11/28 に Haskell で MySQL の Xプロトコルを実装したという話が聴ける Club MySQL というイベントがあったので参加してきました。 clubmysql.connpass.com MySQLのプロトコルの話ということで、平日の夜とは言え東京で参加者9人(発表者含む)というマニアックな集まりでした。 自分も1年前に RubyMySQL Xプロトコルを実装していたのですが、このツイートを最後に中断していたのでした。 MySQL X Protocol で Collection の追加はできるようになったが、検索がめんどくさい。条件文字列のパースはクライアントで行う必要があるんだな。— とみたまさひろ💎🐬 (@tmtms) 2017年2月20日 今回話を聞いて、無理に謎条件式文字列をパースするんじゃなくて、処理系で書きやすいように書けばいいんだという方式に目から

    本当はこわいMySQLプロトコル - tmtms のメモ
  • MySQL の max_connections, table_open_cache, open_files_limit の関係 - tmtms のメモ

    昔書いた記事を久々に見てみたら何書いてあるかさっぱりわからなかったので、最新情報で書き直してみます。 tmtms.hatenablog.com 以下は MySQL 5.6, 5.7 について書かれています。 MySQL の max_connectoins, table_open_cache, open_files_limit パラメータは相互に依存して動的に値が設定されます。 パラメータ名 デフォルト値 最小値 最大値 max_connections 151 1 100000 table_open_cache 2000 1 524288 open_files_limit 5000 0 4G わからないと言われたので追記。 my.cnfやコマンドラインオプション等で設定された値(またはデフォルト値)を初期値として、open_files_limit → max_connections → ta

    MySQL の max_connections, table_open_cache, open_files_limit の関係 - tmtms のメモ
  • Ruby製のEmacsライクなテキストエディタTextbringer - tmtms のメモ

    大江戸Ruby会議06で前田さんがRubyEmacsライクなエディタTextbringerを作ったという発表をしていました。 発表資料 https://github.com/shugo/oedo06/blob/master/textbringer.md ブログ https://shugo.net/jit/20170320.html 最初はEmacs上の何かでプレゼンしてたと思ってたのですが、なんとTextbringerでプレゼンしてたとのこと。完成度高い。 Textbringer上で動くMUAを作るのが目標とのことで、Emacs使いで、MUAを作ることがRubyを始めたきっかけの私としては非常に共感しました。 ということで試してみました。 インストール % gem install textbringer 起動 % textbringer ファイル読み込みとか保存とかカーソル移動とか基

    Ruby製のEmacsライクなテキストエディタTextbringer - tmtms のメモ
  • MySQL Shell / X DevAPI / X Protocol - @tmtms のメモ

    MySQL 5.7.12 で突如登場した MySQL Shell とか X DevAPI とか X Protocol とかが面白そうだったので調べてみました。 Document Store とかも同じ文脈で語られてて、それぞれの用語が何を表してるのかややこしかったので、まずその辺から。 X Protocol mysqlx プラグインを使用することで追加されるサーバー/クライアントプロトコル。ポート番号は 33060。 詳細→ https://dev.mysql.com/doc/internals/en/x-protocol.html X DevAPI 各プログラミング言語用の新しいAPI。Document Store用のAPIも含む。今のところ、MySQL Shell JavaScript, MySQL Shell Python, Java, .Net, Node.js 用の API があ

    MySQL Shell / X DevAPI / X Protocol - @tmtms のメモ
  • Crystal に String#scrub と String#valid_encoding? を追加 - @tmtms のメモ

    前に次のような記事を書きました。 tmtms.hatenablog.com Ruby と異なり、エンコーディングを変換したり UTF-8 として正しいバイト列かどうかを判定する方法もありません。つらい。 これを解決するために Crystal に String#scrub と String#valid_encoding? を追加するライブラリを作りました。 github.com これを使えば、UTF-8 かどうか怪しい文字列データを扱う時に実行時エラーを回避することができます。 require "string-scrub" line = File.open("/dev/urandom").gets.to_s p line.valid_encoding? # => false p line.scrub('〓') # => "\u{13}\u{7}u〓^\t〓3\u{15}〓〓\u{0}〓\u{

    Crystal に String#scrub と String#valid_encoding? を追加 - @tmtms のメモ
  • Crystal でバイナリデータを扱う - tmtms のメモ

    前回も書いたように Crystal の String のエンコーディングは UTF-8 固定です。なので Ruby のようにバイナリデータを String オブジェクトで扱うことはできません。 バイナリデータは Pointer, Slice, MemoryIO で扱うことができるようです。 自分でもよくわかってなかったので、自分用のメモとしてまとめておきます。 Pointer 最も低レイヤーのクラスです。C のポインタと同じです。 p = Pointer(UInt8).malloc(10) # 10バイト獲得 p[0] = 0xAAu8 p[1] = 'X'.ord.to_u8 x = 123 p = pointerof(x) # x のアドレス p.value #=> 123 p.value = 456 x #=> 456 獲得したメモリ領域を超えてアクセスできてしまうため、簡単にメモリ

    Crystal でバイナリデータを扱う - 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 のメモ
  • 1