202410

audible ping

  • % ping -a 1.1.1.1
  • % echo '\a'
     -A      Audible.  Output a bell (ASCII 0x07) character when no packet is received
             before the next packet is transmitted.  To cater for round-trip times
             that are longer than the interval between transmissions, further missing
             packets cause a bell only if the maximum number of unreceived packets has
             increased.

     -a      Audible.  Include a bell (ASCII 0x07) character in the output when any
             packet is received.  This option is ignored if other format options are
             present.

aliasで引数を取りたい

  • csh/tcshでいう \!* とか
  • 結局bashもzshも alias hoge='(){echo $@}' とかfunction化するしかないっぽい.

pythonでmainを定義するのはなぜか

def a():
    pass

def main():
    return 0

if __name__ == "__main__":
    sys.exit(main())

というよくあるパターン.この形式にするメリットがいくつかある

  • if __name__ == "__main__": で実行を制御することでimportしても単体として呼び出しても利用できる
    • このブロックなしに生で描くと,importで呼び出されても実行されてしまう
  • def main(): して if __name__ == "__main__": から呼ぶことでvariablesのスコープを明らかにできる
    • if __name__ == "__main__":main() の処理を展開して書いてしまうと,variablesがglobalになってしまうので,def main() して閉じ込められるメリットがある
  • 上記のような機能的な部分もありつつ,単に"見やすい"などの理由で採用されることもしばしば.

IAM permissions reference | IAM Documentation | Google Cloud

  • GCPの権限とロールの組み合わせを検索できる.

appolicationでlistenさせるIPでなにが変わるのかの再整理

  • 0.0.0.0/0, localhost, 127.0.0.1, 10.0.0.1(interface address) など様々な指定方法があるが,それぞれどう違うのかを再整理

pythonでmutable objectを引数とかで渡すときの注意

  • mutable objectに対して変更を加える場合に注意が必要

    • mutable objectに対してmehtod内部で変更を加える場合,copy.copy(), copy.deepcopy(), default引数をmutableにせずNone等にして内部処理で初期化する,などの工夫が必要.

      • リストは copy.copy() のほか,slice hoge[:] でも copy.copy() と同様の操作が可能.
      >>> _headers = ["Title", "Description", "Remarks"]
      >>> print(_headers)
      ['Title', 'Description', 'Remarks']
      >>> print(id(_headers))
      4298737984
      >>>
      >>> _headers = _headers[:]
      >>> print(_headers)
      ['Title', 'Description', 'Remarks']
      >>> print(id(_headers))
      4299265024
      
  • default argに注意

    • デフォルト引数の評価は定義したときにしかされない.

      デフォルト引数値は関数定義が実行されるときに左から右へ評価されます。 これは、デフォルト引数の式は関数が定義されるときにただ一度だけ評価され、同じ "計算済みの" 値が呼び出しのたびに使用されることを意味します。この仕様を理解しておくことは特に、デフォルト引数値がリストや辞書のようなミュータブルなオブジェクトであるときに重要です: 関数がこのオブジェクトを変更 (例えばリストに要素を追加) すると、このデフォルト引数値が変更の影響を受けてしまします。一般には、これは意図しない動作です。このような動作を避けるには、デフォルト値として None を使い、この値を関数本体の中で明示的にテストします。例えば以下のようにします:
      
      def whats_on_the_telly(penguin=None):
          if penguin is None:
              penguin = []
          penguin.append("property of the zoo")
          return penguin
      
    • None で受けて中で初期化するべき

    >>> def test_method(data=[]):
    ...   data += ["append"]
    ...   return data
    ...
    >>> print(test_method())
    ['append']
    >>> print(test_method())
    ['append', 'append']
    >>>
    
    >>> def test_method(data=None):
    ...   data = [] if data is None else data
    ...   data += ["append"]
    ...   return data
    ...
    >>> print(test_method())
    ['append']
    >>> print(test_method())
    ['append']
    >>>
    

qcow2を小さくする

  • zero埋め領域の開放,圧縮
    • qemu-img convert -O qcow2 hoge.qcow2.orig hoge.qcow2
      • zero埋めされた領域が省略される
        • つまり,diskができるだけzero埋めされていたほうが小さくなる.
        • filesystem上から削除されていても,実体として消えてないとimageとしては未開放扱いにみえるので,ddとかでfs的に開放されているが実体が残っている領域をzero埋めするとより効率が良い dd if=/dev/zero of=/tmp/hoge && rm -f /tmp/hoge
    • qemu-img convert -c -O qcow2 hoge.qcow2.orig hoge.qcow2
      • compress付き '-c' indicates that target image must be compressed (qcow format only)
  • 事前事後確認
    • qemu-img info hoge.qcow2
    • image sizeとか実領域sizeがわかる

コンデンサマイクのファンタム電源とプラグインパワーの違い

MySQLの照合順序の設定をそろそろちゃんと整理しておく #Database - Qiita

utf8mb4 文字コード

bin コードのまま
general MySQL独自規則
unicode Unicode 4.0.0
unicode_0520  Unicode 5.2.0
0900  Unicode 9.0.0
ja_0900 Unicode 9.0.0 + 日本語

ai  Accent Insensitive  アクセント違いを区別しない
as  Accent Sensitive  アクセント違いを区別する
ci  Case Insensitive  大文字小文字を区別しない
cs  Case Sensitive  大文字小文字は区別する
ks  Kana Sensitive  カタカナひらがなを区別する
現在のOracle Databaseでも、CESU-8を「UTF8」として、「普通のUTF-8」を「AL32UTF8」として扱っているため注意を要する。
MySQLでも「utf8」を指定した場合は4オクテット列が扱えず、CESU-8相当の符号化を必要とする
(4オクテット列対応のUTF-8は「utf8mb4」として別途定義されているが、MySQL 5.5.3以降でないと使用できない[9])。

MYSQLにおける utf-8utf8mb3 相当(3bytes max)の意味なので,MYSQL 5.5.3以降サポートの utf8mb4 で4bytes対応(通常のutf-8)させることでサロゲートペア(CESU-8)を利用せず一般的な4bytes maxのutf-8で扱うことができる utf-8にサロゲートペアなんてない!はおおむねあっているが,このCESU-8(Compatibility Encoding Scheme for UTF-16: 8-Bit)の世界においては存在する(utf-16でサロゲートペアが必要なコードポイントに対して,CESU-8のペアを用いずに別のバイト(U+10000–U+10FFFFの符号位置)にmapする方式もある).歴史的経緯(unicode2.0, BMPのサポート(BMPは3bytesで表現できるため))によりutf-8のバイト長は3bytes maxとされていたところから,4bytes maxと変更された(unicode 3.1の拡張領域のサポート)ことによる.

[原因]と[要求される結果]が,(数学的な解釈とは異なる概念としての)必要十分条件あたりを考えるうえでのベン図のイメージがしやすいかも

ロボットの自由度 | 安長電機株式会社

  • 人間の腕は7自由度あるという話