タグ

2016年8月5日のブックマーク (2件)

  • 自分のIPアドレスを得る - Okiraku Programming

    ネットワーク通信を行う場合、プロトコルによっては自分のIPアドレスを相手に通知してあげる必要がある場合がある。 こういうときに、IPアドレスを得るためにgethostname()が返した名前でgethostbyname()を呼ぶ、という方法がとられているのを散見するが、これはダメだ。localhostや自分が設定した名前が帰ってきて、「127.0.0.1」になってしまうことがあるから。 また、特定のホストと通信する場合に、自分の側で使われるIPアドレスを知りたいという場合には使えない(listenするインターフェースを特定する時など)。 自力でルーティングしてたら何のためのネットワークスタックか分からないので、いい方法はないかなあ…と探していたら、見つかったのがこの投稿。 要約すると、ダミーのUDPソケットを作り、それを相手ホストにconnect()し、getsockname()で自分のア

    自分のIPアドレスを得る - Okiraku Programming
  • Go 言語と Unicode 正規化

    今回は少し目先を変えて「Unicode 正規化(normalization)」のお話。 2羽の「ペンギン」 まず「ペンギン」という文字列を思い浮かべてみる。 この文字列を Unicode のコードポイントで表すと以下のようになる。 ペ:U+30DA ン:U+30F3 ギ:U+30AE ン:U+30F3 ところでペンギンの「ペ」と「ギ」は半濁点および濁点を含む。 Unicode は「ペ」と「ギ」をそれぞれ2つの要素に分解できる。 ペ:U+30D8 + U+309A ン:U+30F3 ギ:U+30AD + U+3099 ン:U+30F3 U+309A および U+3099 はそれぞれ半濁点と濁点を表す「結合文字(combining character)」である。 「ヘ」や「キ」のような「基底文字(base character)」に結合文字を1つ以上1 付加した文字を「合成列(composite

    Go 言語と Unicode 正規化